{incident_id}\n"
- f"🎯 資源: {self.resource_name[:35]}\n"
+ f"📋 {html.escape(incident_id)}\n"
+ f"🎯 資源: {safe_resource}\n"
f"━━━━━━━━━━━━━━━━━━━\n"
f"🤖 AI 仲裁判定\n"
f"👥 責任: {resp_display}\n"
f"📊 信心: {conf_emoji} {confidence_pct}%\n"
- f"💡 原因: {self.root_cause[:50]}\n"
+ f"💡 原因: {safe_root_cause}\n"
f"{signoz_block}"
f"━━━━━━━━━━━━━━━━━━━\n"
- f"🔧 建議: {self.suggested_action[:35]}\n"
- f"⏱️ 停機: {self.estimated_downtime}\n"
+ f"🔧 建議: {safe_action}\n"
+ f"⏱️ 停機: {safe_downtime}\n"
f"🔍 查看 SignOz Trace (±5min)"
)
diff --git a/apps/web/src/components/ai/openclaw-state-machine.tsx b/apps/web/src/components/ai/openclaw-state-machine.tsx
index 9a89ff2b..7a73c1b2 100644
--- a/apps/web/src/components/ai/openclaw-state-machine.tsx
+++ b/apps/web/src/components/ai/openclaw-state-machine.tsx
@@ -107,6 +107,14 @@ export function OpenClawStateMachine({
const [selectedIndex, setSelectedIndex] = useState