跳到內文
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/ 只留進行中的工作 — 代理在 session 開始時會讀進行中的提案。

代理

沒有獨立的 @Implementer。負責 plan 的代理也負責實作。

代理用途關鍵約束
Planner面談式規劃一次一個問題。永不實作。
Reviewer嚴格唯讀程式碼審查每則發現都要引用逐字片段。
Debugger根因分析、最小修正Reproduce → Evidence → Fix → Verify。三次嘗試斷路器。
Verifier基於證據的完工檢查自己跑指令。PASS/FAIL/INCOMPLETE 結論。
Explore快速唯讀程式碼庫問答quick / medium / thorough 三種深度。

所有代理都必須先呼叫 code-graph。只有在圖 DB 確實不存在時,才允許退到 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.pysession 開始時回報 code-graph 狀態。graph.db 不存在就印重建提示。
warn-scope.py有進行中的 OpenSpec 時,編輯不在 tasks.md 裡的檔案會被警告。讓範圍蔓延浮現,但不阻止工作。

這些都會自動跑 — 不用代理決策、不用 prompt 工程。

可靠性特性

在 GitHub 編輯本頁 →