fix(agent): classify gitea sustained load pressure
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 2m10s
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
Your Name
2026-07-01 08:50:01 +08:00
parent 0207ccde25
commit c095a5db4f
7 changed files with 117 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
## 2026-07-01 — 08:37 Host sustained-load AI controlled automation
**照主線修正的問題**
- 新增 `scripts/ops/host-sustained-load-controller.py`,把 `HostLoadAverageSustainedHigh` 從「SSH 看 top / 人工判斷」改成可機器讀取的 AI controlled packetorphan browser / smoke load、合法 Gitea Actions / BuildKit saturation、memory / swap pressure、unknown sustained load 類分流。
- 新增 `scripts/ops/host-sustained-load-controller.py`,把 `HostLoadAverageSustainedHigh` 從「SSH 看 top / 人工判斷」改成可機器讀取的 AI controlled packetorphan browser / smoke load、合法 Gitea Actions / BuildKit saturation、Gitea queue / hook backlog、memory / swap pressure、unknown sustained load 類分流。
- 新增 `scripts/ops/host-sustained-load-evidence.py`unknown sustained load 不再回到 raw SSH top而是產生脫敏 process-family / container evidence 給 source-specific PlayBook、KM、RAG 與後續 controller decision 使用;不輸出 raw command line、workspace path、URL 或 secret value。
- `host-runaway-process-remediation.py` 的 apply gate 從 owner / maintenance-window 必填改成 controlled apply receipt 必填:`--controlled-apply-id``--evidence-ref``--post-apply-verifier``--confirm-apply`owner / maintenance-window 只保留為可選 evidence。若目標 process group 已消失,回報 `already_exited` / `missing_process_group_count`,不再 traceback。
- `ops/monitoring/alerts.yml``ops/monitoring/alerts-unified.yml` 將 sustained load 的 `auto_repair_action` 指向 controllerrunbook 改為 AI controlled packet / dry-run / controlled SIGTERM / verifier清掉 orphan browser 與 remediation authorization 告警中的人工批准語意。
@@ -12,7 +12,7 @@
- `PYTHONDONTWRITEBYTECODE=1 python3.11 -m pytest scripts/ops/tests/test_host_runaway_process_exporter.py -q --tb=short -p no:cacheprovider` 通過16 passed
- `DATABASE_URL=sqlite:///test.db PYTHONDONTWRITEBYTECODE=1 python3.11 -m pytest apps/api/tests/test_ai_agent_autonomous_runtime_control.py -q --tb=short -p no:cacheprovider` 通過10 passed
- `git diff --check` 通過。
- 110 live readback`http://192.168.0.110:9100/metrics` 只篩 `awoooi_host_*` 指標到 `/tmp/awoooi-host110-load.prom`controller 回 `classification=blocked_unknown_sustained_load_requires_source_specific_playbook``load5_per_core=1.56``monitor_up=1`、active CI `0`、orphan rule `null`,並給出 `host-sustained-load-evidence.py --json` 只讀脫敏證據指令;本次未執行 host write / signal / restart。
- 110 live readback`http://192.168.0.110:9100/metrics` 只篩 `awoooi_host_*` / Docker CPU 指標controller / evidence readback 顯示 `load5_per_core=2.563333`、active CI `0`、orphan group `0``gitea=3.4019` CPU coresclassification / recommendation 指向 `gitea_queue_or_hook_backlog`;本次未執行 host write / signal / restart。
**邊界**:本段只做 source / test / Prometheus rule / API readback 實作;未對 live host 送 SIGTERM未讀 secret / token / `.env` / raw sessions / SQLite / auth未使用 GitHub / `gh` / GitHub API未 workflow_dispatch未重啟主機未 restart Docker / Nginx / K3s / DB / firewall未恢復 legacy / generic runner label。