feat(self-heal): 三盲区系统性补丁——自愈体系覆盖今晚三类故障
1. agent_spiral_watchdog.py (新增,10min cron): state.db 检测运行>15min 且消息>80条的 api session(螺旋特征), XMPP告警+去重。补 603288 事件 '无watcher看agent会话本身'盲区 2. deploy_guard: 自动merge后自动跑 verify_deployment.py, 失败项立即 XMPP告警。补'提交级回归无监控'盲区(知微stale提交事件) 3. system_hygiene_audit: 新增第7项检查'指令冻结session'——常驻session 启动时间早于SOUL.md mtime且6h内仍活跃 → 告警需bump/重启。 补'system_prompt冻结'盲区; 6h活跃度过滤防误报已遗弃session
This commit is contained in:
@@ -129,6 +129,24 @@ def check_upstream_deploy():
|
||||
restarted = " + dashboard已重启" if rr.returncode == 0 else " (dashboard重启失败,需人工)"
|
||||
actions.append(f"自动部署 session-work→master ({ahead}个提交){restarted}")
|
||||
log(f"UPSTREAM_DEPLOYED: {merge_out[:200]} | sync: {sync_out.stdout.strip()[-100:]}")
|
||||
# ── 部署后自动验证(盲区②:提交级回归检测——知微 stale 提交事件的系统补丁)──
|
||||
try:
|
||||
vr = subprocess.run(["python3", f"{REPO}/scripts/verify_deployment.py"],
|
||||
capture_output=True, text=True, timeout=300)
|
||||
vout = (vr.stdout or "") + (vr.stderr or "")
|
||||
import re as _re
|
||||
m = _re.search(r"汇总:\s*(\d+)\s*项通过,\s*(\d+)\s*项失败", vout)
|
||||
if m and int(m.group(2)) > 0:
|
||||
fm = _re.search(r"失败项:\s*(\[.*?\])", vout)
|
||||
problems.append(f"部署后验证发现 {m.group(2)} 项失败: {fm.group(1) if fm else '详见日志'}"
|
||||
f"(刚合并的 {ahead} 个提交可能引入回归,需人工核查)")
|
||||
log(f"POST_DEPLOY_VERIFY_FAIL: {m.group(2)} failures")
|
||||
elif m:
|
||||
log(f"POST_DEPLOY_VERIFY_OK: {m.group(1)} passed")
|
||||
else:
|
||||
log("POST_DEPLOY_VERIFY: 无法解析验证输出")
|
||||
except Exception as e:
|
||||
log(f"POST_DEPLOY_VERIFY_ERROR: {str(e)[:120]}")
|
||||
|
||||
|
||||
# ── 3. 硬链接一致性 ──
|
||||
|
||||
Reference in New Issue
Block a user