Skip to content

Latest commit

 

History

History
326 lines (266 loc) · 13.5 KB

File metadata and controls

326 lines (266 loc) · 13.5 KB

錯誤格式化模組

提供結構化、可操作的錯誤訊息

概述

錯誤格式化模組將原始錯誤轉換為結構化、使用者友好的訊息,包含診斷資訊和解決建議。

錯誤訊息結構

完整結構

┌─────────────────────────────────────────────────────────────────┐
│  ❌ E-AGT-001: Agent 超時                                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  📍 位置                                                         │
│  階段: IMPLEMENT > 視角: tdd-enforcer                           │
│                                                                  │
│  📝 詳情                                                         │
│  TDD 守護者執行超過 5 分鐘未完成,已超過預設超時限制。          │
│                                                                  │
│  🔍 可能原因                                                     │
│  • 測試套件過大,執行時間過長                                   │
│  • 存在無限迴圈或死鎖                                           │
│  • 外部依賴(如資料庫)回應緩慢                                 │
│                                                                  │
│  💡 建議步驟                                                     │
│  1. 檢查測試套件大小,考慮拆分                                  │
│  2. 檢查最近新增的測試是否有問題                                │
│  3. 增加超時限制:--agent-timeout 600                           │
│                                                                  │
│  🤖 自動處理                                                     │
│  狀態: 已自動重試 1 次                                          │
│  結果: 仍然失敗                                                 │
│                                                                  │
│  📚 文檔                                                         │
│  詳見: docs/troubleshooting/E-AGT-001.md                        │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

結構化欄位

欄位 必要 說明
錯誤碼 標準錯誤碼(E-XXX-NNN)
標題 簡短描述
位置 發生位置(階段 > 視角)
詳情 完整說明
可能原因 列出常見原因
建議步驟 可操作的解決步驟
自動處理 系統已嘗試的處理
文檔連結 詳細文檔路徑

格式化規則

嚴重度標示

嚴重度 圖示 邊框顏色
CRITICAL 🚨 紅色
HIGH 橙色
MEDIUM ⚠️ 黃色
LOW ℹ️ 藍色

位置格式

階段: {STAGE_NAME} > 視角: {PERSPECTIVE_ID}

範例:
階段: IMPLEMENT > 視角: tdd-enforcer
階段: REVIEW > 視角: code-quality
階段: VERIFY (無視角)

原因列表

  • 最多列出 5 個原因
  • 按可能性由高到低排序
  • 每個原因簡潔明瞭

建議步驟

  1. 步驟編號從 1 開始
  2. 每步驟一個明確動作
  3. 包含具體命令/參數
  4. 最多 5 個步驟

錯誤訊息範本

E-AGT-001: Agent 超時

┌─────────────────────────────────────────────────────────────────┐
│  ❌ E-AGT-001: Agent 超時                                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  📍 位置                                                         │
│  階段: {stage} > 視角: {perspective}                            │
│                                                                  │
│  📝 詳情                                                         │
│  {perspective_name} 執行超過 {timeout} 秒未完成。               │
│                                                                  │
│  🔍 可能原因                                                     │
│  • 任務複雜度過高                                               │
│  • 存在無限迴圈                                                 │
│  • 外部依賴回應緩慢                                             │
│  • 網路問題                                                     │
│                                                                  │
│  💡 建議步驟                                                     │
│  1. 檢查任務是否可以拆分為更小的單元                            │
│  2. 增加超時限制:--agent-timeout {timeout*2}                   │
│  3. 使用 --debug 模式查看詳細日誌                               │
│                                                                  │
│  📚 docs/troubleshooting/E-AGT-001.md                           │
└─────────────────────────────────────────────────────────────────┘

E-WKF-001: 回退超限

┌─────────────────────────────────────────────────────────────────┐
│  🚨 E-WKF-001: 回退超限                                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  📍 位置                                                         │
│  工作流: {workflow_id}                                          │
│  當前階段: {current_stage}                                      │
│                                                                  │
│  📝 詳情                                                         │
│  工作流已回退 {rollback_count} 次,超過上限 {max_rollbacks}。   │
│  連續的審查/驗證失敗導致無法完成工作流。                        │
│                                                                  │
│  🔍 可能原因                                                     │
│  • 需求理解有誤,導致持續錯誤實作                               │
│  • 存在難以通過的技術障礙                                       │
│  • 審查標準過於嚴格                                             │
│                                                                  │
│  💡 建議步驟                                                     │
│  1. 審查失敗原因清單(見下方)                                  │
│  2. 手動修復關鍵問題                                            │
│  3. 考慮調整需求或降低標準                                      │
│  4. 使用 --resume {workflow_id} 繼續                            │
│                                                                  │
│  📋 失敗歷程                                                     │
│  • 迭代 1: BLOCKER - SQL 注入風險                               │
│  • 迭代 2: BLOCKER - XSS 漏洞                                   │
│  • 迭代 3: HIGH - 測試覆蓋不足                                  │
│                                                                  │
│  📚 docs/troubleshooting/E-WKF-001.md                           │
└─────────────────────────────────────────────────────────────────┘

E-MEM-001: Memory 讀取失敗

┌─────────────────────────────────────────────────────────────────┐
│  ❌ E-MEM-001: Memory 讀取失敗                                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  📍 位置                                                         │
│  路徑: {file_path}                                              │
│                                                                  │
│  📝 詳情                                                         │
│  無法讀取指定的 Memory 檔案。                                   │
│  系統訊息: {system_error}                                       │
│                                                                  │
│  🔍 可能原因                                                     │
│  • 檔案不存在或已被刪除                                         │
│  • 檔案權限不足                                                 │
│  • 檔案被其他程序鎖定                                           │
│  • 路徑格式錯誤                                                 │
│                                                                  │
│  💡 建議步驟                                                     │
│  1. 確認檔案存在:ls -la {file_path}                            │
│  2. 檢查檔案權限:chmod 644 {file_path}                         │
│  3. 使用 --no-memory 跳過 Memory 讀取                           │
│                                                                  │
│  📚 docs/troubleshooting/E-MEM-001.md                           │
└─────────────────────────────────────────────────────────────────┘

輸出格式

終端輸出(預設)

使用 ANSI 顏色和格式:

\033[31m❌ E-AGT-001: Agent 超時\033[0m

📍 位置
   階段: IMPLEMENT > 視角: tdd-enforcer

📝 詳情
   TDD 守護者執行超過 5 分鐘未完成。

🔍 可能原因
   • 測試套件過大
   • 存在無限迴圈

💡 建議步驟
   1. 檢查測試套件大小
   2. 增加超時限制

📚 詳見: docs/troubleshooting/E-AGT-001.md

JSON 輸出

{
  "error": {
    "code": "E-AGT-001",
    "title": "Agent 超時",
    "severity": "HIGH",
    "location": {
      "stage": "implement",
      "perspective": "tdd-enforcer"
    },
    "message": "TDD 守護者執行超過 5 分鐘未完成。",
    "possible_causes": [
      "測試套件過大,執行時間過長",
      "存在無限迴圈或死鎖"
    ],
    "suggested_actions": [
      "檢查測試套件大小,考慮拆分",
      "增加超時限制:--agent-timeout 600"
    ],
    "auto_handling": {
      "status": "retried",
      "attempts": 1,
      "result": "failed"
    },
    "documentation": "docs/troubleshooting/E-AGT-001.md",
    "timestamp": "2026-01-24T10:30:00Z"
  }
}

Markdown 輸出

## ❌ E-AGT-001: Agent 超時

**位置**: IMPLEMENT > tdd-enforcer

**詳情**: TDD 守護者執行超過 5 分鐘未完成。

**可能原因**:
- 測試套件過大
- 存在無限迴圈

**建議步驟**:
1. 檢查測試套件大小
2. 增加超時限制

📚 [詳細文檔](docs/troubleshooting/E-AGT-001.md)

自動處理狀態

狀態類型

狀態 說明
not_attempted 未嘗試自動處理
retrying 正在重試
retried 已重試(顯示次數和結果)
resolved 自動解決
escalated 已升級給使用者

狀態顯示

🤖 自動處理
狀態: 已重試 2 次
結果: 第 2 次成功

或

🤖 自動處理
狀態: 已重試 3 次
結果: 仍然失敗,需要人工介入

格式化 API

格式化函數

format_error:
  input:
    code: "E-AGT-001"
    context:
      stage: "implement"
      perspective: "tdd-enforcer"
      timeout: 300
      error_message: "..."
    auto_handling:
      status: "retried"
      attempts: 1
      result: "failed"

  output:
    format: "terminal" | "json" | "markdown"

使用範例

<!-- 在 SKILL.md 中 -->

捕獲到錯誤時:

<!-- ERROR: format code=E-AGT-001 context={...} -->

相關模組