Skip to content

记忆与知识沉淀

Spec-First 当前的重点不是维护某个固定的"四层记忆目录",而是让项目级 runtime 能把需求、计划、实现、评审和经验沉淀在可追溯的文件与 workflow 里。

为什么需要"记忆"

AI Coding 失败的常见原因不在 prompt 或 model 能力,而在上下文跨会话蒸发

  • 新会话不知道上次的需求是什么
  • 评审者看到 diff,但看不到 "为什么这样改"
  • 团队解决过的问题,下次 AI 还要从零重新调查
  • 个人形成的经验,只活在某个人的记忆里

Spec-First 的解法不是更长 context window 或更聪明的 RAG,而是把关键决策与经验落地为项目内的工程文件,让下一次会话天然可读。

记忆来自哪里

来源写入 workflow作用
候选想法/spec:ideate / $spec-ideate记录候选方向、批判、排序、被拒原因
需求 brief/spec:brainstorm / $spec-brainstorm记录 actors、flows、scope 边界、验收标准
实施计划/spec:plan / $spec-plan记录实施单元、文件范围、风险、验证方式
Task packstandalone spec-write-tasks派生执行任务、依赖、waves、停止条件
Code 改动/spec:work / $spec-work记录 commit、测试结果、验证证据
评审结论/spec:code-review / /spec:doc-review结构化 findings、residual risks、learning signals
复用经验/spec:compound / $spec-compound写入 docs/solutions/ 长期知识
Runtime stateinit / update记录 host-specific managed state、developer profile
Control-plane factsmcp-setup / graph-bootstrap当前机器的 readiness 事实,可重建

三类记忆与三种 Git 策略

类型路径是否提交生命周期
Durable 工程文档docs/ideation/ docs/brainstorms/ docs/plans/ docs/tasks/ docs/solutions/通常提交跨会话、跨成员、跨版本
Control-plane facts.spec-first/config/ .spec-first/graph/ .spec-first/impact/ .spec-first/providers/不提交,本机重建当前机器、当前 ready 状态
Generated runtime.claude/ .codex/ .agents/skills/不提交(init 自动 .gitignore当前 spec-first 版本下的副本

.spec-first/standards/ 是混合的:confirmed baseline 可提交,scratch/raw/cache 不提交。

跨会话工作的实际机制

新会话进入项目后,仓库内已经存在的文件就是它的"记忆":

text
新会话开始


读取 docs/brainstorms/*-requirements.md      ← 上次的需求脉络
读取 docs/plans/*-plan.md                    ← 上次的方案选择
读取 docs/solutions/**/*.md                  ← 已沉淀的复用经验
读取 .spec-first/standards/                  ← 项目规范基线
读取 .spec-first/graph/*                     ← 本机 graph readiness


基于上述事实做新一轮判断(不必从零开始)

无需"上传上下文"或"导入会话",文件就是上下文。

Compound 与 learnings-researcher 的协同

/spec:compound 写入 docs/solutions/ 后,下一次 AI Coding 不必显式查找。spec-code-review 等评审 workflow 会自动调度 spec-learnings-researcher agent,按当前 PR 的语义去检索相关 solution,作为评审证据带入:

text
新 PR 进入 code-review


spec-learnings-researcher
  │  检索 docs/solutions/ 里的根因、模式、过往坑

把命中知识作为 reviewer 的证据输入


PR review 自动复用过往团队经验

这意味着团队解决过的同一类问题,下次新成员(或新会话)写出有同类风险的代码时,会自动收到相关警告——不用任何人记得去查文档。

Runtime state 边界

Claude Code 与 Codex 的 runtime state 分别由宿主管理:

  • Claude:.claude/spec-first/state.json.claude/spec-first/.developer
  • Codex:.codex/spec-first/state.json.codex/spec-first/.developer

这些文件服务于已安装 runtime(command/skill/agent/agent-support-files manifest 状态、developer profile),不应被当作手写业务文档,也不应该手改。runtime drift 的修复方式是 spec-first init,不是手改 state.json。

与 Graph Readiness 的关系

setup workflow 会写 readiness ledger、provider 配置和 runtime capabilities;graph bootstrap workflow 会消费这些事实并写 canonical graph、provider status 和 impact capabilities。下游 plan/work/review workflow 可以读取这些 artifacts,并在不可用时明确降级。

父 workspace 的 .spec-first/workspace/ 只保存 advisory summaries,不能替代 child repo 内的 canonical .spec-first/config/.spec-first/graph/.spec-first/impact/.spec-first/providers/。详见 三种开发模式

知识如何回流:典型场景

场景工作流产物
刚解决一个非平凡 bug/spec:compounddocs/solutions/<category>/bug-X-YYYY-MM-DD.md
找到一个值得复用的架构模式/spec:compounddocs/solutions/<category>/pattern-X.md
旧 solution 因代码变化过期/spec:compound-refresh更新、合并、替换或删除条目
接手别人或自己的旧任务/spec:sessions检索历史会话、给出尝试过的路线
想了解 spec-first 自身近期 release/spec:release-notes版本依据摘要

沉淀内容应来自真实任务、真实 diff、真实测试和真实决策;不要为了填充目录而编造知识——spec-compound-refresh 会按证据淘汰编造内容。

相邻概念