Communitygithub.com

wangnan0916/runtime-debug-toolkit

以日誌驅動的運行時追蹤與基於證據的除錯工具包。

runtime-debug-toolkit 是什麼?

這個技能提供了一個結構化的、證據驅動的除錯工作流程,專為支援工具呼叫(如 Codex 的 `request_user_input`)的 AI 代理所設計。它引導代理從分析程式碼路徑、建立假設矩陣,到使用追蹤模式進行儀器化、驗證及清理,形成一個完整的除錯循環。其核心在於透過互動式檢查點重現問題,並根據檢查點結果(A、B、C)決定後續的修正與驗證步驟。該技能支援 Node.js 24 或更新版本,並依賴於同系列中的 `trace-mode` 技能來進行事件規劃與伺服器啟動。最終目標是確保每個修正都直接連結到已確認的證據,並在清理儀器化程式碼後,只留下產品變更。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add wangnan0916/runtime-debug-toolkit

在你喜歡的 AI 中提問

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

說明文件

除錯模式

僅在當前使用者呼叫 $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。

相關技能