AIFlare
愿景文档
登录免费开始
入门
  • 简介
  • 快速开始
功能
  • 项目仪表板
  • 项目设置
  • 时间线
  • 团队协作
技能
  • 技能总览
  • 上下文捕获
  • 代码意图查询
  • 上下文注入
  • 日报摘要
  • 周报摘要
  • 会话对比
  • 会话摘要
  • 会话评估
管理
  • 成员 & 邀请
  • 账户设置
技能 ▸ 上下文

工作上下文捕获 (context-capture)

基础技能

AIFlare 所有洞察的起点。AI 智能体每次执行 git commit 时,工作意图、被否决的备选方案、关键改动摘要与相关对话片段都会被自动捕获并写入用户 git repo 的 aiflare/timeline/v1 分支(正文的唯一永久存储位置),后端则通过用户注册的 git remote credential 拉取并仅索引元数据。/why、/summarize、/daily-digest 等其余所有技能都消费该捕获产生的数据。

概览

context-capture 是用户不会直接调用的唯一技能。Claude Code 的 post-commit hook 与 SKILL.md 的强制调用消息相结合,使其在提交后自动激活;智能体分析自己的对话上下文生成摘要,再由 capture.js 直接写入用户 git repo 的 aiflare/timeline/v1 orphan 分支(entries/<commitHash>.json)。后端送达统一收敛到 git push 时刻的一次 sync 触发。

触发时机git commit 之后(PostToolUse hook → Skill 强制调用消息)
调用方式自动 — 用户从不显式调用
写入目标用户 git repo 的 aiflare/timeline/v1 分支(entries/<commitHash>.json)— git push 之后由 POST /api/v1/captures/sync 触发后端 fetch
存储位置用户 git repo(aiflare/timeline/v1)是正文的唯一永久存储位置。后端 DB 仅保存元数据与派生索引(无 vendor lock-in、与 git 托管平台无关)

捕获的信息

一次提交会产生一条 Timeline Entry,绑定下列 7 个字段。

字段类型说明
titlestring50 字以内的工作标题。默认值为 commit message 的标题行。
intentmarkdown本次改动的理由,按「Problem → Solution → Effect」三段式书写。原则是让 6 个月后的人也能读出决策语境。
alternativesmarkdown仅记录对话中明确出现过的备选方案与被否决的原因。没有信号则留空 — 严禁推测。
diffSummarymarkdown按文件分别给出关键改动摘要。排除 import 整理、格式化等附带改动。
tagenumFEATURE · BUGFIX · REFACTORING · TEST · DOCS 中的一项。用于按改动类型在仪表板中筛选。
changedFilesstring[]直接采用 git diff --name-only HEAD~1 HEAD 的输出作为变更文件列表。
conversationSnippetjsonl自上次捕获以来的用户/AI 对话 JSONL。按行数(消息索引)增量提取,与 Entry 一同存储。

工作流程

Hook → Skill → 服务器 → 分组 → push,共 7 个阶段的流水线。用户无需另外调用。

Phase 0
SessionStart Hook

会话开始时把 CLAUDE_SESSION_ID 写入 $CLAUDE_ENV_FILE,让 capture.js 在并行会话环境中也能确定地识别所属会话。

Phase 1
UserPromptSubmit + Stop Hook

把用户 prompt 与 AI 响应按 JSONL 一行行追加到 .claude-prompts-{SESSION_ID}。

Phase 2
PostToolUse(AskUserQuestion) Hook

AskUserQuestion 之后立即创建 .pending-question 标记文件,用作下一次提交的 continuation 信号,防止分组被打断。

Phase 3
PostToolUse(git commit) Hook

git commit 之后:① 把完整对话 JSONL PUT 到 /work-sessions/prompt;② 仅抽取自上次捕获以来的新行作为 delta 文件;③ 发出强制调用 Skill 的消息。

Phase 4
context-capture Skill 激活

智能体分析自身上下文生成 title/intent/alternatives/diffSummary/tag 并运行 capture.js。capture.js 自动读取 delta 文件作为 conversationSnippet 附加。此阶段没有任何后端发送 — 正文在下一阶段直接写入 git tree。

Phase 5
git tree 写入(aiflare/timeline/v1)

capture.js 把正文以 entries/<commitHash>.json 写入 aiflare/timeline/v1 orphan 分支。此刻没有后端调用(离线也可工作);分组(group_root_id)的判定将在下一次 push 时的后端 sync 中完成。

Phase 6
pre-push Hook + 后端 sync

pre-push hook 把 aiflare/timeline/v1 分支也 push(force-with-lease)到用户 git remote,然后由 sync-captures.js 调用 POST /api/v1/captures/sync(无 body)。后端用注册的 git remote credential 通过标准 git protocol 拉取 timeline 分支 → reconcile DB 元数据 + 根据上一条 entry 与 continuation 标记判定 group_root_id。POST /captures 与 POST /captures/batch 已在 Phase 6 被永久移除(410 Gone)。

与其他技能的关系

context-capture 产生的 Timeline Entry 与 EntryConversation 由下列技能直接消费。该技能停摆,其余所有技能都会失去输入。

/why

把捕获到的 intent / alternatives 与 git log -L 按行对齐,生成「这一行为何如此」的时间线。

/summarize

把一个会话的捕获聚合为目标、备选与最终改动的一页报告,并保存到服务器。

/context-inject

把 summarize 保存的报告重新注入新会话的 LLM 上下文,让决策语境原样延续。

/daily-digest

聚合一天的捕获,把 commit / 会话 / 标签分布与关键决策汇总为 Markdown 报告。

/weekly-digest

按成员与领域聚合一周的捕获,形成团队视角的周报。

/session-compare

把两个会话的捕获从意图、路径、结果三个角度并排对照。

/prompt-evaluate

依据 Claude Code 最佳实践对捕获到的用户 Prompt 进行自动评估并给出改进建议。

故障排查

捕获失效时最常见的 5 类原因。

现象
解决
/skills 列表里没有 context-capture
确认项目根目录下存在 .claude/skills/context-capture/,缺失则重新运行 installer。
提交后 Timeline 没有产生 Entry
检查 aiflare.yml 的 api_key 与 endpoint 是否正确。capture.js 在缺少配置时会静默退出。此外请在控制台确认已注册 git remote credential — 未注册时正文虽已写入 git tree,但后端不会索引元数据,团队时间线上自然看不到。
Entry 已生成但对话片段为空
检查 .claude-conversation-delta-{SESSION_ID} 是否存在。SessionEnd 过早执行或 hook 缺失都可能让 delta 为空。
并行会话下捕获被路由到了错误的会话
确认 SessionStart hook 将 CLAUDE_SESSION_ID 写入了 $CLAUDE_ENV_FILE。若环境变量为空,capture.js 会回退到基于 mtime 的启发式。
push 之后条目仍未出现在团队时间线
确认 .git/hooks/pre-push 已安装且具备可执行位。若 hook 缺失,或 timeline 分支的 push / sync 调用失败,正文只会留在本地 aiflare/timeline/v1 分支上;后端元数据要等下次成功的 push + sync 才会更新。token 过期或被吊销时,需要在控制台重新注册 credential。
← 技能

本页内容

AIFlare
Made with ♥ in Seoul
© 2026 AIFlare. All rights reserved.
Product
SkillDocs
Company
Vision
Resources
PrivacyTerms
Connect
GitHub