fix(phase5): 修復 Solver action 格式 — 強制輸出 kubectl 命令
Some checks failed
CD Pipeline / build-and-deploy (push) Failing after 9m33s
Some checks failed
CD Pipeline / build-and-deploy (push) Failing after 9m33s
根因:_build_prompt() 的 action 範例為 "restart_service:awoooi-api"(自訂格式),
LLM 模仿此格式輸出自然語言描述而非 kubectl 命令。
影響鏈:
Solver action = 自然語言描述
→ auto_approve Condition 1c 拒絕(無 kubectl 關鍵字)
→ _auto_execute() 永不被調用
→ blast_radius_calculator 永不被調用
→ blast_radius_score fill rate = 0/14 = 0%(Phase 5 驗收指標未達)
修復:
1. blast_radius 參考從抽象描述改為實際 kubectl 命令示例
2. 明確要求 action 欄位必須是真實 kubectl 命令(不可用自然語言)
3. 正確範例:kubectl rollout restart deployment/awoooi-api -n awoooi-prod
預期效果:LLM 輸出 kubectl 命令 → auto_approve 通過(低 blast_radius 情境)
→ blast_radius_calculator 被調用 → fill rate 趨向 100%
2026-04-17 ogt + Claude Sonnet 4.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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/<name>,命名空間統一用 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 導致的記憶體碎片化"
|
||||
|
||||
Reference in New Issue
Block a user