除錯模式
僅在當前使用者呼叫 $debug-mode、說出「除錯模式」或要求儀器化除錯時啟動一個工作階段。
在活躍的除錯工作階段存在時恢復,包括在使用者回覆或上下文壓縮之後。
當步驟 3 啟動伺服器時,工作階段變為活躍。
僅在步驟 8 清理後或明確放棄時結束。
如果以上條件均不適用,請在分析、收集或儀器化之前停止。
此工作流程建立在同系列的 trace-mode 工作流程之上。
它透過修正、驗證和清理來擴展位置證據。
同系列腳本需要 Node.js 24 或更新版本。
執行此證據循環:
分析程式碼 -> 提出假設 -> 使用追蹤模式追蹤 -> 證明 -> 修正 -> 驗證 -> 清理
透過儀器化自主工作。 第一個計劃的使用者互動是重現檢查點。 重現和驗證是閘門。
檢查點不變量:每次手動重現或驗證嘗試都需要一個全新的檢查點。
僅工具可用性會選擇其路徑:當原生 Codex request_user_input 被列出時,你必須呼叫它;
否則,當 Pi chooser 被列出時呼叫它;僅在兩個互動路徑都無法執行時,才使用確切的純文字模板。
原生工具呼叫就是檢查點;評論或最終答案不能取代它。
原生取消會使閘門保持待定狀態,而先前的結果僅授權其當前的嘗試。
1. 分析程式碼路徑
從報告的症狀開始進行儲存庫的基礎工作。 閱讀相關的入口點、處理程式、狀態轉換、現有日誌和最近的變更。 從使用者的觸發器到觀察到的結果,繪製候選路徑。 撰寫一個錯誤卡:
- 症狀和預期行為
- 已知的觸發器、路由、命令、輸入或測試裝置
- 候選的執行時路徑和有爭議的邊界
- 相關環境、頻率、變更和證據
- 可觀察的驗收標準
將不可用的事實記錄為 unknown。
透過程式碼閱讀或區分性的執行時探針來解決重要的未知事項。
完成於: 當一條候選路徑連結觸發器和症狀,且每個有爭議的分支都有一個已命名的探針邊界。
2. 建立假設矩陣
在新增探針之前,撰寫兩到五個排名假設。 將矩陣錨定在程式碼分析和可用證據上。 使用此形狀:
H1 <簡要原因>
預測:<執行時狀態、路徑或時間>
探針:<事件名稱和程式碼位置>
當 <特定記錄條件> 時 CONFIRMED
當 <特定記錄條件> 時 REJECTED
沒有具體預測的假設需要更多的程式碼閱讀。 偏好能夠區分多個假設的探針。
完成於: 每個假設都有可證偽的條件和一個已計劃的區分性探針。
3. 透過追蹤模式追蹤
閱讀同系列的 trace-mode 技能。
使用其事件規劃、伺服器啟動和儀器化步驟以及錯誤卡。
閱讀 references/probes.md 以了解除錯事件擴展。
在其獨立追蹤檢查點之前返回此處。
此工作流程是呼叫者。 trace-mode 工作流程必須交回活躍的探針和五個伺服器值。
完成於: 每個假設都有一個活躍的探針,且所有五個伺服器值都是已知的。
4. 通過重現閘門
在呈現修復前檢查點之前,閱讀 references/checkpoints.md。
透過上面選擇的檢查點路徑執行修復前協議。
然後等待並將其結果透過狀態表路由。
每次重試都透過此閘門返回,並進行新的互動呼叫。
完成於: 一個有效的 A、B 或 C 結果已按階段路由。
5. 證明原因
在修復前結果 A 之後,在編輯產品程式碼之前,讀取 LOG_FILE 中的當前工作階段記錄。
確認每個預期的探針都存在,然後按文件順序檢查記錄,並將相關值與每個假設預測進行比較。
將每個假設分類為 CONFIRMED、REJECTED 或 INCONCLUSIVE。
撰寫證據報告:
H1 <簡要原因>
狀態:CONFIRMED
證據:<特定事件和值>
H2 <簡要原因>
狀態:REJECTED
證據:<特定事件和值>
驗收:<一個可觀察的句子>
下一步:<針對已確認原因的最小修正>
缺少預期的探針會阻止確認。 當所有結果都被拒絕或不確定時,返回步驟 2。
完成於: 當前執行的記錄確認了一個解釋性原因,並有一個可觀察的驗收標準。
6. 進行基於證據的修正
進行能解決已確認原因的最小變更。
保持每個探針活躍。
將事件變更為 runId: "post-fix"。
當行為可自動化時,新增一個有針對性的回歸測試。
完成於: 每個產品編輯都追溯到原因,並且修復後證據已準備就緒。
7. 通過驗證閘門
透過選擇的路徑呈現來自 references/checkpoints.md 的修復後檢查點。
然後等待並將其結果透過狀態表路由。
每次後續的驗證嘗試都需要另一個互動呼叫。
完成於: 使用者針對陳述的驗收標準返回修復後結果 B。
8. 機械式清理
移除每個標記為 LOG_SERVER_PROBE <session_id> 的配對區域。
搜尋工作階段 ID、LOG_SERVER_PROBE 以及兩種區域形式。
移除複製的輔助程式和所有暫時性儀器化。
除非使用者要求保留證據,否則刪除 LOG_FILE。
保持共享伺服器執行,除非使用者要求關閉。
執行相關檢查並檢查最終的 diff。
完成於: 標記和工作階段搜尋在儲存庫中返回零匹配,檢查通過,且僅留下產品變更。
例外分支
僅在收集、重現或交付失敗時,閱讀 references/troubleshooting.md。