概览
context-capture 是用户不会直接调用的唯一技能。Claude Code 的 post-commit hook 与 SKILL.md 的强制调用消息相结合,使其在提交后自动激活;智能体分析自己的对话上下文生成摘要,再由 capture.js 直接写入用户 git repo 的 aiflare/timeline/v1 orphan 分支(entries/<commitHash>.json)。后端送达统一收敛到 git push 时刻的一次 sync 触发。
捕获的信息
一次提交会产生一条 Timeline Entry,绑定下列 7 个字段。
| 字段 | 类型 | 说明 |
|---|---|---|
| title | string | 50 字以内的工作标题。默认值为 commit message 的标题行。 |
| intent | markdown | 本次改动的理由,按「Problem → Solution → Effect」三段式书写。原则是让 6 个月后的人也能读出决策语境。 |
| alternatives | markdown | 仅记录对话中明确出现过的备选方案与被否决的原因。没有信号则留空 — 严禁推测。 |
| diffSummary | markdown | 按文件分别给出关键改动摘要。排除 import 整理、格式化等附带改动。 |
| tag | enum | FEATURE · BUGFIX · REFACTORING · TEST · DOCS 中的一项。用于按改动类型在仪表板中筛选。 |
| changedFiles | string[] | 直接采用 git diff --name-only HEAD~1 HEAD 的输出作为变更文件列表。 |
| conversationSnippet | jsonl | 自上次捕获以来的用户/AI 对话 JSONL。按行数(消息索引)增量提取,与 Entry 一同存储。 |
工作流程
Hook → Skill → 服务器 → 分组 → push,共 7 个阶段的流水线。用户无需另外调用。
会话开始时把 CLAUDE_SESSION_ID 写入 $CLAUDE_ENV_FILE,让 capture.js 在并行会话环境中也能确定地识别所属会话。
把用户 prompt 与 AI 响应按 JSONL 一行行追加到 .claude-prompts-{SESSION_ID}。
AskUserQuestion 之后立即创建 .pending-question 标记文件,用作下一次提交的 continuation 信号,防止分组被打断。
git commit 之后:① 把完整对话 JSONL PUT 到 /work-sessions/prompt;② 仅抽取自上次捕获以来的新行作为 delta 文件;③ 发出强制调用 Skill 的消息。
智能体分析自身上下文生成 title/intent/alternatives/diffSummary/tag 并运行 capture.js。capture.js 自动读取 delta 文件作为 conversationSnippet 附加。此阶段没有任何后端发送 — 正文在下一阶段直接写入 git tree。
capture.js 把正文以 entries/<commitHash>.json 写入 aiflare/timeline/v1 orphan 分支。此刻没有后端调用(离线也可工作);分组(group_root_id)的判定将在下一次 push 时的后端 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 由下列技能直接消费。该技能停摆,其余所有技能都会失去输入。
把捕获到的 intent / alternatives 与 git log -L 按行对齐,生成「这一行为何如此」的时间线。
把一个会话的捕获聚合为目标、备选与最终改动的一页报告,并保存到服务器。
把 summarize 保存的报告重新注入新会话的 LLM 上下文,让决策语境原样延续。
聚合一天的捕获,把 commit / 会话 / 标签分布与关键决策汇总为 Markdown 报告。
按成员与领域聚合一周的捕获,形成团队视角的周报。
把两个会话的捕获从意图、路径、结果三个角度并排对照。
依据 Claude Code 最佳实践对捕获到的用户 Prompt 进行自动评估并给出改进建议。
故障排查
捕获失效时最常见的 5 类原因。