diff --git a/apps/api/src/agents/solver_agent.py b/apps/api/src/agents/solver_agent.py index e42cca7c..6678b97c 100644 --- a/apps/api/src/agents/solver_agent.py +++ b/apps/api/src/agents/solver_agent.py @@ -144,6 +144,12 @@ class SolverAgent(BaseAgent): ) def _build_prompt(self, context: dict[str, Any]) -> str: + # 2026-04-17 ogt + Claude Sonnet 4.6: 修復 Solver action 格式問題 + # 根因:舊 prompt action 範例為 "restart_service:awoooi-api"(自訂格式) + # LLM 模仿範例輸出自然語言描述,而非 kubectl 命令 + # → auto_approve Condition 1c 拒絕(無 kubectl 關鍵字) + # → blast_radius_calculator 永遠不被調用(fill rate = 0%) + # 修復:要求 action 必須是真實 kubectl 命令,並提供正確範例 return f"""你是 AWOOOI SRE 系統的軍師 Agent,專職修復方案設計。 根因假設:{context.get("hypothesis", "")} @@ -156,18 +162,22 @@ class SolverAgent(BaseAgent): - rollback_cost(0-100):回滾難度(越高 = 越難還原) blast_radius 參考: -- 重啟單一 Pod = 10 -- 重啟 Deployment = 25 -- 調整 HPA = 30 -- 刪除 StatefulSet = 80 -- 清除 PVC = 95 +- kubectl rollout restart deployment = 10 +- kubectl scale deployment --replicas=N = 15 +- kubectl rollout undo deployment = 25 +- kubectl apply -f = 40 +- kubectl delete deployment = 75 +- kubectl delete pvc = 95 + +🔴 關鍵規則:action 欄位必須是真實的 kubectl 命令,不可用自然語言描述。 +目標資源格式:deployment/,命名空間統一用 awoooi-prod。 以 JSON 回覆: {{ "candidates": [ {{ - "action": "restart_service:awoooi-api", - "blast_radius": 15, + "action": "kubectl rollout restart deployment/awoooi-api -n awoooi-prod", + "blast_radius": 10, "rollback_cost": 5, "confidence": 0.8, "rationale": "重啟可清除 OOM 導致的記憶體碎片化"