Files
ewoooc/docs/memory/ai_automation_closure_20260429.md
OoO 6bce46bbc7
All checks were successful
CD Pipeline / deploy (push) Successful in 2m29s
fix(runtime): 強化健康檢查監控韌性
2026-05-01 14:46:49 +08:00

12 KiB
Raw Blame History

AI 自動化閉環記憶2026-04-29

用途:讓新 Codex session 快速掌握 2026-04-29 這輪「AI 自動化」修復後的實況,不必重讀整串對話與所有 commit。

核心結論

  • AI 自動化控制面已從三 Agent 擴展為四 AgentHermes、NemoTron、OpenClaw、ElephantAlpha。
  • EventRouter 是告警與 L2 安全 action 的入口AI 掛掉時必須降級,不可中斷通知。
  • AutoHeal 是自癒副作用入口;momo-db / momo-postgres 受保護,不可自動 restart / stop / recreate。
  • OpenClaw learning 是 AI 記憶與 embedding queue 的橋接層raw ai_insights 寫入者必須 enqueue embedding 或可回補。
  • ElephantAlpha 只負責 orchestration / HITL / AutoHeal bridge不可繞過 ADR-011、ADR-012、ADR-013。
  • AI 自動化最小 Prometheus 指標已接入 /metrics,來源為 services/ai_automation_metrics.py
  • 線上 smoke dashboard 已接入 /ai_automation_smokeJSON API 為 /api/ai-automation/smoke
  • Smoke API 會保存最近快檢 JSONL 趨勢dashboard 顯示 OK / Warning / Critical 最近分布。
  • Smoke history 已支援 JSONL 匯出、清理與每日摘要;清理只影響 smoke history不碰 DB 或 EventRouter queue。
  • Smoke 每日摘要已支援手動 Telegram 推播與 scheduler 09:10 排程入口;摘要只讀 JSONL history。
  • Grafana provisioning 已新增 MOMO AI Automation Overview,由 Prometheus /metrics 觀測 EventRouter、safe action、replay 與 AutoHeal 趨勢。
  • 2026-04-30 active Grafana 已載入 4 個 dashboardAI dashboard 檔案同步到 188 實際掛載目錄 monitoring/grafana/provisioning/dashboards/json/
  • 2026-04-30 active Prometheus 補 momo-app scrape job目標 momo-pro-system:80/metricsPrometheus 需加入 momo-network 才能解析 app container DNS。
  • 2026-05-01 active Blackbox HTTP target 改打 /health188 stack 使用 https://mo.wooo.work/health + http://momo-pro-system:80/health110 gateway stack 使用 https://mo.wooo.work/health。禁止再用 Dashboard 首頁 / 當探測目標,避免監控觸發重型查詢並和 /health 搶 worker。
  • 2026-05-01 Gunicorn runtime 預設 gthread + GUNICORN_THREADS=4,保留 preload_app = False 供 HUP 熱重載,同時讓輕量 health check 不被少數 Dashboard 長請求完全排隊。
  • 2026-04-30 發現並修復 gunicorn.conf.py post_fork 掃到 Flask/Werkzeug LocalProxy 導致 worker boot fail 的問題。
  • 2026-04-30 CD 健康檢查曾因 rebuild 後短暫 502 太早失敗;已改為 internal docker exec momo-pro-system /health + external https://mo.wooo.work/health 雙檢查,重試約 3 分鐘。
  • 2026-04-30 CD Sync 模式曾只 rsync + docker compose up -d,導致 host 檔案已是新版但 gunicorn process 仍跑舊版;已補 docker compose restart momo-app scheduler telegram-bot
  • 2026-04-30 gunicorn.conf.py 不是 app container bind mount曾導致手動 restart 後回吃 image 內舊設定;momo-app 已補 ./gunicorn.conf.py:/app/gunicorn.conf.py:ro
  • 2026-04-30 /metricsrealtime_sales_monthly 改用 raw SELECT COUNT(*),避免 ORM 欄位與線上表 schema drift 時每次 Prometheus scrape 都產生 warning。
  • 2026-04-30 CD Rebuild 模式曾先停三應用容器再 no-cache build造成 build 時間全變成 502已改為 build 成功後才短暫 stop/rm/recreate。
  • 2026-04-30 production NVIDIA_API_KEY 可列出 Ultra 253B 但呼叫 nvidia/llama-3.1-nemotron-ultra-253b-v1 會 404ElephantAlpha 預設改用 nvidia/llama-3.3-nemotron-super-49b-v1.5 並加入 fallback models。
  • 2026-04-30 DatabaseManager() 多 route 重複建立曾有吃滿 PostgreSQL clients 風險;已重用 engine/session 並將每 worker pool 收斂為 pool_size=2/max_overflow=3
  • 2026-04-30 OpenClaw embedding worker 曾在舊 /api/embeddings 路徑遇到 Hermes timeoutOllama client 已改為優先 /api/embed,舊節點才 fallback /api/embeddings
  • 2026-04-30 scheduler.py 殘留靜默 except/pass;已改為 warning/debug log備份 insight 與 Telegram 通知失敗不再靜默。
  • 2026-04-30 /metrics 已補 momo_ai_* zero-baseline seriesapp 重啟後即使尚無 EventRouter / AutoHeal 事件Prometheus/Grafana 也能先看到 metric names。
  • 2026-04-30 ElephantAlpha NIM fallback 已擴大到 timeout、connection error、429 與 5xxprimary model 暫時卡住時會嘗試下一個 ELEPHANT_ALPHA_FALLBACK_MODELS

已落地範圍

  • EventRouter 增加同步 dispatch、AI 失敗降級、Telegram 失敗 file queue、成功後 replay、去重冷卻、靜音檢查、L2 SAFE_ACTIONS 限制。
  • NemoTron 在缺 API key、quota、timeout、network/HTTP error、0 tool call 時 fallback 到 Hermes 規則。
  • Code review pipeline 預設關閉 auto-fix高風險只走 HITL/action_plan內部 webhook token 預設必填。
  • AutoHeal 補 incident / heal log / KM 沉澱DB 不可用時安全降級SSH_CMD 限 read-only allowlist。
  • OpenClaw learning 補 raw insert embedding bridge、stale processing reset、missing embedding backfill、pgvector semantic RAG fallback。
  • Scheduler 重要失敗路徑接入 EventRouter減少裸 exception 漏通知。
  • ElephantAlpha 執行引擎補 sync timeout、HITL reply_markup、未知 step fail fast、code/resource action 走 AutoHeal bridge。
  • L2 agent_actions.pyflag_for_human_reviewroute_to_kmmark_for_relearn 已從 stub 改為可審計 OpenClaw memory 寫入。
  • action_plans 是 CodeReview / OpenClaw Group A 與 NemoTron Group B 共用表PostgreSQL 啟動期 metadata repair 必須補齊 Group A 欄位,避免既有 DB 只有 session_id/plan_type/sku/payload 時讓 CodeReview action plan 寫入失敗。
  • /metrics 已匯出 EventRouter dispatch、latency、safe action、Telegram replay、AutoHeal action 與 duration 指標。
  • Smoke dashboard read-only 檢查 EventRouter queue、AutoHeal protected resources、NemoTron fallback、OpenClaw embedding queue、ElephantAlpha HITL不做外部網路呼叫。
  • Smoke history 只保存精簡紀錄,不保存完整 details避免長期檔案膨脹與敏感資訊堆積。
  • Export API 回傳 application/x-ndjsonclear API 只刪除 MOMO_AI_AUTOMATION_SMOKE_HISTORY 指向檔案。
  • Daily summary APIPOST /api/ai-automation/smoke/daily-summary/send
  • Grafana dashboard 檔案:docker/grafana/provisioning/dashboards/json/ai-automation-overview.jsonprovider 會載入 JSON 目錄,不需要修改 dashboard provider。
  • Active monitoring 使用 monitoring/prometheus.yml,不是 docker/prometheus/prometheus.yml;若線上 panel 無資料,先查 Prometheus 是否有 momo-app target。
  • Monitoring compose 的 cAdvisor 只需在 monitoring network 內提供 cadvisor:8080 給 Prometheus不應綁定 host 8080避免與其他服務衝突blackbox target 需要 blackbox-exporter 容器存在於同一 network。
  • 2026-05-01 線上驗證188 active MOMO UAT blackbox HTTP target 保留 public https://mo.wooo.work/health 與 internal http://momo-pro-system:80/health110 gateway Prometheus 也已把 https://mo.wooo.work 改為 https://mo.wooo.work/healthmomo.wooo.workwooo.work 需等 DNS/Nginx 恢復後再加入 active monitoring。
  • 110 Gitea runner 必須只宣告 ewoooc-host label若混入 ubuntu-latest / awoooi-hostEWOOOC 與 AWOOOI workflows 會互相搶同一個 runner導致推版卡住或跨專案污染。
  • CD sync 模式應對 momo-pro-system 發 Gunicorn HUP 熱重載,不重啟 app 容器scheduler / telegram-bot 才用 compose restart。Gunicorn 必須維持 preload_app = False,否則 HUP 只重啟 worker、但 app object 仍來自舊 master 預載程式碼。
  • App container 的 runtime gunicorn.conf.pydocker-compose.yml bind mount若未來改 gunicorn 設定,不應再手動 docker cp 作為常態流程。

驗證紀錄

  • 2026-04-29 AI metrics 批次:26 passed
  • 2026-04-29 AI smoke dashboard 批次:2 passed(單檔 smoke service後續核心組需持續納入。
  • 2026-04-29 AI smoke trend 批次:5 passedsmoke + metrics
  • 2026-04-29 AI smoke management 批次:7 passedsmoke + metrics
  • 2026-04-29 AI smoke summary 批次:9 passedsmoke + metrics
  • 2026-04-29 AI Grafana observability 批次:3 passedGrafana dashboard JSON 結構與必要 metric
  • 2026-04-29 AI Grafana observability + AI core 回歸:36 passedcollect-only36 tests collected
  • 2026-04-30 Gunicorn LocalProxy 修復:新增 tests/test_gunicorn_config.py
  • 2026-04-30 Prometheus scrape 修復:新增 tests/test_prometheus_ai_automation_scrape.py
  • 2026-04-30 Monitoring exporter 修復:tests/test_prometheus_ai_automation_scrape.py 覆蓋 cAdvisor internal-only 與 blackbox exporter 宣告。
  • 2026-05-01 Health-safe monitoring runtimetests/test_gunicorn_config.py 覆蓋 gthread/threads 預設與 overridetests/test_prometheus_ai_automation_scrape.py 覆蓋 blackbox 必須打 /healthtests/test_cd_health_check.py 覆蓋 monitoring reload 與 gunicorn bind-mounted sync。
  • 2026-04-30 CD health check hardening新增 tests/test_cd_health_check.py
  • 2026-04-30 CD Gunicorn mount hardening新增 tests/test_docker_compose_runtime_mounts.py
  • 2026-04-30 Metrics schema drift 降噪:tests/test_ai_automation_metrics.py 覆蓋 raw sales count query。
  • 2026-04-30 CD rebuild cutover hardeningtests/test_cd_health_check.py 覆蓋 build-before-stop 順序。
  • 2026-04-30 ElephantAlpha NIM fallback hardening新增 tests/test_elephant_service.py
  • 2026-04-30 DatabaseManager pool convergencetests/test_database_manager_cache.py 覆蓋 pool size/overflow 與 engine reuse。
  • 2026-04-30 action_plans schema drifttests/test_database_manager_cache.py 覆蓋 PostgreSQL repair 需補 Group A 欄位與 index。
  • 2026-04-30 Ollama embedding API migration新增 tests/test_ollama_embedding.py
  • 2026-04-30 Phase 3f cleanup contractstests/test_phase3f_cleanup_contracts.py 覆蓋 orphan services、env 範例、scheduler 靜默例外。
  • 2026-04-30 AI metrics baselinetests/test_ai_automation_metrics.py 覆蓋無事件 snapshot 仍匯出 momo_ai_* baseline。
  • 2026-04-30 ElephantAlpha transient fallbacktests/test_elephant_service.py 覆蓋 timeout、503 fallback 與 400 不 fallback。
  • 2026-04-29 L2 安全記憶批次:24 passed
  • collect-only48 tests collected
  • git diff --check 已通過。

相關 commit

  • 779b27f 修復 P0 告警自癒鏈與測試收集
  • 0875dd8 補強 5.5 自癒安全回看
  • 1c2dc6c 補強 AI 自動化閉環與安全降級
  • f0e044a 補齊自癒稽核與 OpenClaw 記憶閉環
  • 0c2e9bb 串接 AI 洞察向量化與漏通知入口
  • 78eebfb 加入告警去重與洞察向量回補
  • d486598 補強 ElephantAlpha 執行與通知閉環
  • 5b25f55 補齊 EventRouter 失敗通知回放
  • 162a76b 落地 L2 安全記憶動作
  • d58e4d0 同步四 Agent AI 自動化治理紀錄
  • e6a1c9d 補齊 AI 自動化可觀測性指標
  • cde8b0c 新增 AI 自動化 Smoke Dashboard
  • 81159b5 保存 AI Smoke 趨勢紀錄
  • 10bbd55 補齊 AI Smoke 趨勢管理
  • d5f4fd7 加入 AI Smoke 每日摘要推播

下次進場先看

  • ADR-018四 AI Agent 自動化控制面。
  • ADR-012Action Ladder 與 L2 SAFE_ACTIONS。
  • ADR-013AutoHeal 安全邊界。
  • docs/AI_INTELLIGENCE_MODULE_SOT.md:目前 AI 架構事實。
  • docs/guides/ai_automation_session_sop.mdAI 自動化 session 執行與收尾 SOP。