跳到正文
coograph 15

工作流

Coograph 初始化过的项目里,每个变更都走同一条五步流水线:Plan → Propose → Apply → Review → Archive。例外仅限狭义且字面的情形——拼写订正、仅改注释、用户口述的配置值调整,以及在已批准的进行中提案上的跟进。

“琐碎”、“显而易见”、“小”、“就一处调整”不是例外。拿不准就走 Propose。

工作流的意义不是仪式感。是 AI 代理特别擅长自信地交付错误的东西,而工作流强制在那之前打断一次。

Plan

/coograph-plan(Claude Code)或 @Planner(VS Code Copilot)。

Planner 代理调查代码库,一次只问一个聚焦的澄清问题。它从不写代码。输出是对变更需要什么的清晰理解——文件、集成点、风险。

跳过 Plan 的情形:

Propose

coograph-propose 技能在 openspec/changes/<YYYY-MM-DD>-<slug>/ 创建一个 OpenSpec 变更目录,内含:

.openspec.yaml
proposal.md           ← Why, Goals, Non-Goals, Decisions, Impact, Risks
specs/<capability>/spec.md   ← Requirements + Scenarios
tasks.md              ← 3–8 task groups, last is Verification

用户审阅后,要么说 “proceed”,要么发回修改意见。批准前不写任何代码。

Apply

代理按顺序处理 tasks.md,每完成一项就打勾。

所有任务完成后跑质量门:typecheck、lint、format、tests。修到全绿。

Review

/coograph-review@Reviewer

Reviewer 是只读的。每条结论都必须引用一次最新文件读取里的逐字原文——diff 和对话记忆不算合法来源。

结论按严重度分级:Critical(合并前必须修)、Warning(应该修)、Suggestion(可以修)。实施者修掉 Critical/Warning,重新跑质量门,仅当修复幅度较大时再走一轮评审。

Archive

把完成的提案归档:

mv openspec/changes/<slug>/ openspec/changes/archive/<slug>/

这样 openspec/changes/ 里只剩进行中的工作——代理在会话启动时会读进行中的提案。

代理

没有单独的 @Implementer。做 Plan 的代理也负责实施。

代理用途关键约束
Planner访谈式规划一次一问。从不实施。
Reviewer严格只读的代码评审每条结论都引用逐字原文。
Debugger根因分析,最小修复Reproduce → Evidence → Fix → Verify。3 次尝试熔断。
Verifier基于证据的完成检查自己跑命令。PASS/FAIL/INCOMPLETE 三档结论。
Explore快速只读的代码库问答快 / 中 / 深三档深度。

所有代理都必须先调用 code-graph。回退到 sqlite3 .code-graph/graph.db,再到 grep,只有在图数据库确实不存在时才允许。图省事不是合法理由。

生命周期钩子

Claude Code 的生命周期钩子位于 .claude/hooks/

钩子作用
block-generated.py阻止编辑 generated/dist/build/ 等目录下的文件,以及前 5 行带 @generated / DO NOT EDIT 的文件。
log-bash.py把每条 bash 命令追加到 .claude/session.log(已在 gitignore 中)。审计日志。
report-graph.py会话启动时报告代码图状态。graph.db 缺失时打印重建提示。
warn-scope.py存在进行中的 OpenSpec 时,编辑 tasks.md 未引用的文件会发出警告。暴露范围蔓延,但不阻断工作。

这些自动运行——不需要代理决策,也不需要 prompt 工程。

可靠性属性

这些不是对正确性的承诺。它们是设计上让代理出错时大声失败的约束。

在 GitHub 编辑本页 →