Community程式設計與開發github.com

harness-retro

回顧過去 Claude Code 工作階段的記錄,找出重複發生的問題點,並提出改進建議(修改 CLAUDE.md、記憶、鉤子、設定或技能),以防止問題再次發生。所有變更都需獲得使用者批准才能套用。

harness-retro 是什麼?

Harness Retro 是一款專為 Claude Code 設計的智能回顧工具,它能自動挖掘 `~/.claude/projects` 中儲存的本地工作階段記錄,從中辨識出 AI 助理過去遇到困難的關鍵時刻(例如使用者糾正、挫折反應、中斷、連續工具錯誤、編輯反覆與還原、權限拒絕以及自我糾正)。 透過分數排序和模式歸納,它能將零散的錯誤事件組織成有系統的重複性問題,並針對每個問題的根源(如缺乏知識、被忽略的規則、不佳的預設工作流程、缺少驗證或工具權限缺口)提出最輕量且有效的解決方案。 最終,Retro 會產生一份清晰的報告,列出每個模式、證據及具體的改動提案(包括目標檔案和建議的修改文字),然後透過 AskUserQuestion 請求使用者批准,僅在獲得同意後才實際套用變更。 此技能支援 Claude Code 的所有專案,並遵循使用者已有的撰寫規則,確保所有改動都精簡、可操作且尊重使用者的設定。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/timini/harness-retro/tree/HEAD/plugin/skills/harness-retro

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Harness retro

找出過去工作階段出了哪些問題,並調整設定以防止再次發生。每個發現都必須指向對話記錄中的證據。未經使用者核准,絕不套用任何變更。

1. 挖掘對話記錄

挖掘器是一個僅使用標準函式庫的 Python 腳本,與此檔案位於同一目錄。使用 -I 選項執行它。將輸出寫入工作階段的暫存區,如果沒有暫存區,則寫入臨時目錄:

python3 -I <此技能基礎目錄>/scripts/mine.py [PATH] [--since 30d] --out <scratchpad>/retro.json
  • 若不指定 PATH,則會挖掘目前工作目錄所屬的專案。若要挖掘不同專案,請提供其工作目錄路徑,或使用 --project=<key> 指定 ~/.claude/projects 下的資料夾名稱。請使用 = 形式,因為鍵值是以 - 開頭。
  • 如果使用者有指定時間範圍,請使用 --since。僅在輸出被截斷且你需要更多資料時,才提高 --max-bytes(預設值 40000)。
  • 如果使用者想查看所有專案,請對 ~/.claude/projects 中的每個資料夾執行一次挖掘,並關注摩擦最多的專案。

腳本會輸出一行摘要。如果它掃描到的對話很少或沒有,請告知使用者。Claude Code 會根據 cleanupPeriodDays(預設 30)刪除對話記錄,因此較舊的歷史可能已不存在。如果使用者未來想做更深入的回顧,建議調高此設定。

2. 閱讀命中結果

JSON 檔案中會列出依摩擦分數排序的工作階段。每個命中結果包含 signal(訊號)、score(分數)、ts(時間戳記)、prior_prompt(使用者的提問)、recent_actions(Claude 在命中前的最後工具呼叫),以及 user_reaction(使用者反應)或 detail(詳細資訊)。

訊號依價值大致排列如下:

  • user_correction:使用者提出異議。分數達 5 或以上表示強烈挫折或重複發生(例如「還是」、「又來了」、「我說了」、咒罵)。
  • edit_revert 和 edit_churn:Claude 在同一個檔案上來回修改。
  • tool_error_streak:Claude 持續遇到相同的失敗。
  • interrupted:使用者在中途打斷 Claude。這通常代表它正在往錯誤的方向前進。
  • permission_denied:Claude 嘗試了使用者或分類器阻止的操作。
  • self_retraction:Claude 承認錯誤。此訊號雜訊較多,僅應作為輔助證據使用。

這些規則的比對邏輯較為粗略。請排除誤報,例如正常指令中的「不要」或網路錯誤後的「再試一次」。當一個命中結果模稜兩可時,請開啟該時間點附近的對話記錄。檔案位於 ~/.claude/projects/<key>/<session>.jsonl;用 grep 搜尋時間戳記,然後讀取前後幾行。不要讀取整份對話記錄。

3. 歸納為模式

將真正的命中結果歸納為重複出現的模式。一個模式代表一個根本原因,以 Claude 做錯了什麼來描述。例如:「產生新圖片而非使用已核准的素材庫」、「編輯當前版本而非建立新版本」、「聲稱變更已生效,卻未檢查建置輸出」。針對每個模式,記錄:

  • 發生頻率,以及涉及多少個工作階段。
  • 兩到三則來自使用者的簡短引述,附上工作階段標題和日期。
  • 根本原因。從以下選項中擇一:缺乏知識、存在但被忽略的規則、不佳的預設工作流程、缺少驗證、或工具/權限缺口。

單一事件僅在使用者明顯生氣或成本高昂(例如造成破壞或工作遺失)時才計入。

4. 檢查現有設定

在提出任何建議之前,請先閱讀已有的設定:

  • ~/.claude/CLAUDE.md,以及專案的 CLAUDE.md 和任何巢狀的 CLAUDE.md。
  • ~/.claude/settings.json,以及專案的 .claude/settings.json 和 .claude/settings.local.json(鉤子、權限)。
  • 專案記憶目錄 ~/.claude/projects/<key>/memory/ 及其中的 MEMORY.md。
  • ~/.claude/skills/ 和專案 .claude/skills/ 中的技能。

如果某個模式已被 Claude 忽略的規則所涵蓋,那麼再次加入相同的規則並不會有幫助。請讓規則更具體,並將其放在能被看見的地方,或者改用更強大的機制。

5. 選擇修正方式

針對每個模式,使用最輕量且確實有效的機制:

根本原因修正方式
Claude 不知道的專案事實在專案記憶目錄中建立一個記憶檔案,包含 name、description、metadata.type 的前置資料,內文則有 Why: 和 How to apply:,並在 MEMORY.md 中加上一行指標。更新現有記憶而非重複建立。
此儲存庫的長期規則專案 CLAUDE.md
所有專案都適用的規則~/.claude/CLAUDE.md
經常被違反且可透過腳本檢查的規則(格式、禁用字串、提交前需要執行的指令)在 settings.json 中新增一個鉤子。如果 update-config 技能可用,請使用它。
針對安全指令的重複權限提示或拒絕提議加入允許清單,或建議使用 fewer-permission-prompts 技能(如果可用)。請勿為破壞性指令放寬權限。
經常出錯的多步驟工作流程新增或編輯一個技能(如果可用,請使用 skill-creator)。
Claude Code 的產品錯誤在報告中註明。沒有設定上的修正方式。

將規則寫成具體、可檢查的指令,並明確指出特定事物,例如檔案、素材路徑、指令或版本命名。「處理圖片時要小心」這樣寫太過模糊,難以執行。

6. 報告並取得核准

每個模式一個章節,成本最高的優先。每個章節包含:

  1. 模式,用一行描述。
  2. 證據:次數、工作階段,以及 2 到 3 則附有日期的簡短引述。
  3. 根本原因。
  4. 建議的變更:目標檔案以及確切的文字或差異。

然後詢問要套用哪些變更。使用一個多選的 AskUserQuestion,為每個模式提供一個選項,效果很好。僅套用經核准的變更,然後列出已更改的項目和位置。

撰寫規則

寫入 CLAUDE.md、記憶或技能的任何內容,都必須遵循使用者自己 CLAUDE.md 檔案中的任何撰寫規則,例如語氣、禁用詞彙或歸屬規則。保持簡短且具體。對話記錄中的引述可能包含使用者貼入的機密資訊。挖掘器會遮蔽常見的金鑰格式,但在將文字複製到任何檔案之前,請務必檢查。

相關技能