diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 6ba348a4..0687e2a1 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -10638,7 +10638,7 @@ "iwooos": { "eyebrow": "資訊安全網", "title": "IwoooS", - "subtitle": "Kali、原始碼、主機、執行閘門與AwoooP 證據的可視化資安態勢。", + "subtitle": "AWOOOI 的 AI 自動化資安閉環:把 Kali、原始碼、主機、告警、候選、執行閘門、驗證器與 AwoooP 證據串成可視化資安態勢。", "boundary": { "label": "目前邊界", "state": "只讀鏡像 / 先觀測", @@ -10682,8 +10682,8 @@ }, "cards": { "visibleWork": { - "title": "已完成可見工作", - "body": "IwoooS 已把焦點導覽、視覺資安網、拓樸圖、決策跑道、執行閘雷達、AwoooP、任務媒合產品 與 代理賞金協議 納管呈現到前台。" + "title": "AI 自動化閉環已前台化", + "body": "IwoooS 已把焦點導覽、視覺資安網、拓樸圖、決策跑道、執行閘雷達、AwoooP、任務媒合產品與代理賞金協議納管呈現到前台;所有訊號都要能回到 AI 分流、候選、閘門、驗證器與學習回寫。" }, "assetMesh": { "title": "資產與主機已納管", @@ -18176,7 +18176,7 @@ "items": { "done": { "title": "前台可見工作已整合", - "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安工作改以藏在文件。" + "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安訊號進入 AI 自動化閉環,而不是只停在文件或訊息轉發。" }, "kali112": { "title": "Kali host:kali-readonly 已納入資安網", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 6ba348a4..0687e2a1 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -10638,7 +10638,7 @@ "iwooos": { "eyebrow": "資訊安全網", "title": "IwoooS", - "subtitle": "Kali、原始碼、主機、執行閘門與AwoooP 證據的可視化資安態勢。", + "subtitle": "AWOOOI 的 AI 自動化資安閉環:把 Kali、原始碼、主機、告警、候選、執行閘門、驗證器與 AwoooP 證據串成可視化資安態勢。", "boundary": { "label": "目前邊界", "state": "只讀鏡像 / 先觀測", @@ -10682,8 +10682,8 @@ }, "cards": { "visibleWork": { - "title": "已完成可見工作", - "body": "IwoooS 已把焦點導覽、視覺資安網、拓樸圖、決策跑道、執行閘雷達、AwoooP、任務媒合產品 與 代理賞金協議 納管呈現到前台。" + "title": "AI 自動化閉環已前台化", + "body": "IwoooS 已把焦點導覽、視覺資安網、拓樸圖、決策跑道、執行閘雷達、AwoooP、任務媒合產品與代理賞金協議納管呈現到前台;所有訊號都要能回到 AI 分流、候選、閘門、驗證器與學習回寫。" }, "assetMesh": { "title": "資產與主機已納管", @@ -18176,7 +18176,7 @@ "items": { "done": { "title": "前台可見工作已整合", - "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安工作改以藏在文件。" + "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安訊號進入 AI 自動化閉環,而不是只停在文件或訊息轉發。" }, "kali112": { "title": "Kali host:kali-readonly 已納入資安網", diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index f312fa63..8455bf28 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,37 @@ +## 2026-06-18|AI 自動化產品契約硬化:告警必須進閉環,不得只丟 raw 訊息 + +**背景**:統帥指出 AWOOOI / AwoooP / IwoooS 本質是 AI 自動化產品,不能把監控告警當成一般訊息轉發;尤其主機 CPU、容器 root Node.js、Nginx drift、Wazuh、Kali、CI/CD、供應鏈與資安訊號都必須可讀、可判斷、可圖像化,並能進入 AI lane、候選、Gate、owner、verifier、learning / writeback 閉環。 + +**完成內容**: +- `docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md` 新增 `§1.4 AI 自動化產品契約`,固定 Sensor / Evidence、Normalizer、AI Lane、Candidate、Gate、Execution Boundary、Verifier、Learning / Writeback 八段合格線。 +- `docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md` 補強 `ai_automation_alert_card_v1`:合格告警必須說清楚 AI lane、候選、Gate、owner、verifier 與 Timeline / KM / PlayBook 回寫;不合格告警包含 raw `ps aux`、`docker stats`、stdout/stderr、完整路徑、內部對話、個人 namespace、內網位址、secret 片段或未脫敏 payload。 +- `docs/security/SECURITY-ASSET-CONTROL-LEDGER.md` 補上 IwoooS 資安總帳的 AI 自動化欄位:`sensor_ref`、`normalizer_ref`、`ai_lane`、`candidate_policy`、`gate_contract`、`executor_boundary`、`verifier_ref`、`learning_writeback_ref`。 +- 與前一段 code-side 變更銜接:主機 / runner 資源告警已能在 `TelegramGateway.send_alert_notification()` HTML 出口轉成 `ai_automation_alert_card_v1` 候選卡;raw process dump 壓縮成可判讀 top evidence,不把完整 `/workspace/...` 或整段 `ps aux` 外送。 +- `apps/web/messages/zh-TW.json` 與目前鏡像內容補上首屏產品定位:IwoooS 是 `AWOOOI 的 AI 自動化資安閉環`,訊號必須回到 AI 分流、候選、閘門、驗證器與學習回寫;沒有放入工作視窗對話、個人 namespace、內網位址或逐字溝通內容。 + +**驗證**: +- `DOC_SECRET_SANITY_OK scanned_files=4`。 +- `git diff --check`:通過。 +- `security-mirror-progress-guard.py --root ...`:`SECURITY_MIRROR_PROGRESS_GUARD_OK`。 +- `public-frontend-env-guard.py --root .`:`OK ... violations=0 runtime_gate=0`。 +- `apps/web` `npm run typecheck`:通過。 +- `https://awoooi.wooo.work/api/v1/health`:`healthy`;PostgreSQL、Redis、OpenClaw、SignOz、Ollama GCP-A / GCP-B / local route 均為 `up`。 +- `https://awoooi.wooo.work/zh-TW/iwooos?_v=2d278568-iwooos-ai-product-contract-probe`:已可見 `IwoooS`、`AI 自動化`、`安全合規`、`資安資產控制總帳`、`P0-A 資安資產控制總帳`、`審查後修正候選`。 +- 同一 production HTML 敏感字串掃描:`工作視窗`、`Gemini溝通`、`source_thread_id`、`codex_delegation`、`/Users/`、個人 namespace、內網位址皆未命中。 +- Browser desktop `1440x900`:`scrollWidth=1434`、`clientWidth=1434`、`horizontalOverflow=false`,首屏可見 IwoooS、P0-A、資安資產控制總帳、審查後修正候選。 +- Browser mobile `390x844`:`scrollWidth=384`、`clientWidth=384`、`horizontalOverflow=false`,首屏可見 IwoooS、P0-A、資安資產控制總帳、審查後修正候選。 + +**完成度同步**: +- AI 自動化產品契約規範:`100%`。 +- 告警事件包規範:`100%`。 +- Host / runner 告警 formatter repo-side:`100%`。 +- IwoooS 資安資產總帳 AI 欄位契約:`100%`。 +- IwoooS 首屏 AI 自動化產品定位 repo-side:`100%`,待下一個 deploy marker 後做 production 可視確認。 +- Runtime write / Telegram live send / Wazuh active response / Kali active scan:仍 `0%`。 +- Production deploy / `/zh-TW/iwooos` 前台驗證:`cd.yaml #3140` 因後續主線推進已取消,已改追 `f358a0f6` 的 `cd.yaml #3150`;deploy marker `2d278568` 已進 `gitea/main`,Gitea `cd.yaml #3150` 已成功,production probe 與 desktop / mobile browser 驗證完成。 + +**邊界**:本段只做規範與 repo-side 契約,不送 Telegram、不改主機、不 reload Nginx、不改 firewall、不 kill process、不觸發 Wazuh active response、不跑 Kali active scan、不收 secret、不把工作視窗內容放入前端。 + ## 2026-06-18|110 Runaway Process AIOps 監控 / 告警 / PlayBook 收斂 **背景**:110 CPU 滿載已確認主因是跨專案 stockPlatform headless Chrome smoke 遺留 5 組 orphan process group,其中兩組各吃約 120% CPU;精準 `SIGTERM` 後 `REMAINING_AFTER_TERM=0`。後續 load 仍高是 active Gitea Actions CI build/test,並非 orphan Chrome、Docker/Sentry/Harbor 事故。這類問題不能停在人工 `top/ps`,必須產品化成監控、告警、PlayBook、KM 與 gated 修復。 diff --git a/docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md b/docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md index f11c9291..eb3ab205 100644 --- a/docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md +++ b/docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md @@ -22,6 +22,51 @@ Telegram 不應是完整執行日誌,也不應承載所有 AI 推理細節。T 3. 同一個 `incident_id` 的相同狀態更新,短時間內要去重。詳細重試與錯誤放到 timeline,不洗 Telegram。 4. P0 / P1 escalation 可以另發升級卡,但內容必須是「目前影響、已嘗試、卡住原因、需要誰做什麼」,不可重貼所有底層 log。 5. Code Review、Config Drift、報表、心跳不應和 incident 執行回覆混在同一種語義;它們可以在同一 SRE 群組,但必須以摘要卡與固定前綴區分。 +6. 主機、容器、runner、Nginx、Wazuh、Kali、CI/CD 這類資安 / 維運告警不得直接外送 `ps aux`、`docker stats`、stdout/stderr 或完整路徑;必須先轉成 AI 自動化事件包,再只保留可判讀摘要與 top evidence。 + +## AI 自動化告警事件包 + +IwoooS / AwoooP 是 AI 自動化產品,Telegram 告警不是終點,而是自動化飛輪的入口。任何可觸發值班判斷的告警,至少要能被轉成 `ai_automation_alert_card_v1` 等級的事件包。 + +合格告警的定義不是「有送出訊息」,而是能讓 operator 直接看出 AI 已把訊號送進哪一條自動化 lane、產生哪一個候選、目前被哪一道 Gate 擋住、誰要審、驗證要看哪裡,以及後續如何回寫 Timeline / KM / PlayBook。未做到這件事的訊息只能算 raw observability,不能算 AWOOOI 產品層告警。 + +事件包必填欄位: + +| 欄位 | 說明 | +| --- | --- | +| 事件類型 | 例如 `host_resource_pressure`、`runner_build_resource_pressure`、`wazuh_intrusion_signal`、`kali_assessment_signal`、`nginx_config_drift`。 | +| 影響判讀 | 用一到三行說明現在影響的是服務可用性、入侵風險、部署風險、資料完整性或觀測盲點。 | +| 視覺化摘要 | 使用條狀圖、狀態列、矩陣或後續圖卡;不得只丟 raw log。Telegram 純文字階段可用 `■■□□` 類視覺 bar,前端 / 報表可再升級圖卡。 | +| AI lane | 指定 AI 後續分流 lane,例如 runner 資源壓力、主機入侵、設定漂移、供應鏈風險。 | +| Gate | 明確顯示 `candidate_only`、`approval_required`、`runtime_write_gate=0` 或已取得的授權;不得把告警當成 runtime 寫入批准。 | +| Top evidence | 最多保留前三個可判讀證據;只放 PID、CPU、服務類型、告警規則、redacted evidence ref,不放完整主機路徑、secret、個人 namespace 或內部對話內容。 | +| 建議下一步 | 指向 AI 要沉澱的候選、owner 欄位、AwoooP Run / Work Item / IwoooS gate,而不是只叫人看 log。 | +| 禁止事項 | 當下不允許的動作要明確列出,例如不 kill process、不 restart Docker / Gitea、不 reload Nginx、不改 firewall、不觸發 Kali active scan。 | + +事件包必須能接到下列產品閉環: + +| 閉環節點 | 必須可回讀的狀態 | +| --- | --- | +| AI lane | `security_intrusion_triage`、`runner_build_resource_pressure`、`nginx_config_drift`、`supply_chain_drift` 等明確 lane。 | +| Candidate | 對應候選動作、owner request、dry-run、Work Item 或 Run;不得只有「請人工判斷」。 | +| Gate | `candidate_only`、`approval_required`、`runtime_write_gate=0/1`、批准者與批准理由。 | +| Verifier | post-check、route smoke、receipt readback、Wazuh / SIEM readback、production health 或 no-write 驗證結果。 | +| Learning | Timeline event、KM / PlayBook writeback、trust score / rule learning 或報表沉澱狀態。 | + +不合格告警範例: + +- 只貼 CPU、`ps aux`、`docker stats`、stdout/stderr、完整路徑或完整 log。 +- 只說「AI 選擇不執行」但沒有候選、Gate、owner、verifier 或 learning。 +- 把工作視窗、內部對話、個人 namespace、內網位址、secret 片段或未脫敏 raw payload 放進 Telegram 或前端。 +- 把 Telegram 送達、UI 可見、CD success 或 smoke success 誤當成 runtime 寫入批准。 + +Host / runner 資源告警的第一版落地: + +- `TelegramGateway.send_alert_notification()` 會在 HTML 告警出口自動套用 host resource formatter。 +- `CPU 警告`、`容器內 root Node.js 進程`、含 `ps aux` 且指向 build 程序的文字,會被轉成 `ai_automation_alert_card_v1`。 +- raw process dump 會被壓成 `PID + CPU + 精簡命令`,不保留 `/workspace/...`、完整 node module 路徑或整段 `ps aux`。 +- build 壓力會分流到 `runner_build_resource_pressure`,預設 `candidate_only / runtime_write_gate=0`。 +- 這只建立 AI 候選與判讀入口,不代表允許 kill process、restart 服務、改 Nginx、改 firewall 或執行 Kali active scan。 ## 與 AwoooP 的分工 diff --git a/docs/security/SECURITY-ASSET-CONTROL-LEDGER.md b/docs/security/SECURITY-ASSET-CONTROL-LEDGER.md index 1a9269b7..eba81b7f 100644 --- a/docs/security/SECURITY-ASSET-CONTROL-LEDGER.md +++ b/docs/security/SECURITY-ASSET-CONTROL-LEDGER.md @@ -19,6 +19,25 @@ 本文件不是 live host truth,也不是主機修復、掃描、封鎖、reload、restart、secret rotation、workflow dispatch、SOAR action 或 production write 授權。 +## 1.1 AI 自動化產品契約 + +IwoooS 的資安總帳不是靜態 CMDB,也不是把主機、服務、Nginx、Wazuh、Kali、workflow 與產品頁列成表格就結束。AWOOOI 是 AI 自動化產品,所以每個資安資產群組都必須能被轉成可審核的自動化單元。 + +每個資安資產群組後續至少要補齊: + +| 自動化欄位 | 用途 | +|------------|------| +| `sensor_ref` | 指出訊號來源,例如 Wazuh、Prometheus、SigNoz、Sentry、Gitea Actions、route smoke 或只讀 snapshot。 | +| `normalizer_ref` | 指出 raw signal 如何轉成脫敏事件包,禁止 raw payload 直上前端或 Telegram。 | +| `ai_lane` | 指定 AI 分流,例如入侵判讀、主機資源、Nginx drift、供應鏈、runtime gate、owner review。 | +| `candidate_policy` | 定義 AI 可產生哪些候選:owner request、dry-run、patch / PR、maintenance window 草案或 verifier plan。 | +| `gate_contract` | 固定 `candidate_only`、`approval_required`、`runtime_write_gate=0/1` 與批准來源。 | +| `executor_boundary` | 明確列出可用 executor 與禁止動作,避免預設 kill、restart、reload、firewall change、active scan。 | +| `verifier_ref` | 指向 post-check、route smoke、Wazuh / SIEM readback、receipt readback、production health 或 no-write 驗證。 | +| `learning_writeback_ref` | 指向 Timeline、KM、PlayBook、trust score、報表與前台狀態回寫。 | + +若資產群組沒有上述欄位,只能算「已納入只讀視野」,不得宣稱完成 AI 自動化控管。這個契約不會打開 runtime gate;它只防止後續把 raw 告警、UI 可見、owner 草稿、CD success 或只讀 snapshot 誤判成真正的 AI 自動化閉環。 + ## 2. 固定摘要 | 指標 | 值 | diff --git a/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md b/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md index c6c4a713..994fa84b 100644 --- a/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md +++ b/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md @@ -88,6 +88,25 @@ 5. **Observable by Default** — 任何 AI 推理過程必須對前端 + Telegram 可見(推播中間狀態,不是黑盒) 6. **Self-Distrust** — AI 自己的決策品質由獨立 Critic Agent 評分,連續低分自動降級 +### 1.4 AI 自動化產品契約 + +AWOOOI / AwoooP / IwoooS 不是單純監控頁、告警轉發器或資安清冊;它是一個 AI 自動化產品。任何監控、資安、維運、供應鏈、Nginx、Wazuh、Kali、CI/CD、主機與前後台訊號,若只停在 raw log、截圖、Telegram 文字或表格清單,不得宣稱已完成產品化。 + +每個可觸發值班判斷的訊號都必須能映射到下列閉環,才算進入 AI 自動化主線: + +| 階段 | 必備輸出 | 不合格狀態 | +|------|----------|------------| +| Sensor / Evidence | 脫敏證據 ref、來源時間、可信度、觀測盲點 | 只有 raw log、完整路徑、內部對話或個人 namespace | +| Normalizer | `ai_automation_alert_card_v1` 或同等事件包 | 只把 Alertmanager / shell output 原樣轉貼 | +| AI Lane | 明確分流到資安入侵、主機資源、配置漂移、供應鏈、runtime gate、owner review 等 lane | 只有 `general` 或「請人工判斷」 | +| Candidate | 產生候選動作、候選 owner packet、no-write dry-run 或 work item | 沒有下一步,只說需要查看 | +| Gate | 顯示 `candidate_only`、`approval_required`、`runtime_write_gate=0/1` 與批准來源 | 把告警、UI 可見或 CD 成功當成授權 | +| Execution Boundary | 指定可執行器、禁止事項、rollback owner、maintenance window | 預設 kill、restart、reload、firewall change、active scan | +| Verifier | post-check、route smoke、receipt readback、Wazuh / SIEM readback 或 production health | 沒有驗證或只憑「看起來好了」 | +| Learning / Writeback | Timeline、KM、PlayBook、trust score、報表與前台狀態回寫 | 沒有沉澱,下次仍重複人工判斷 | + +因此,告警格式、前台卡片、Run、Work Item、Telegram、日週月報與資安總帳都必須優先回答:「AI 現在判讀到哪一段、下一步候選是什麼、哪個 Gate 阻擋、誰是 owner、驗證與學習是否回寫」。若無法回答,完成度不得被上修,只能列為 raw observability 或只讀證據。 + --- ## §2 當前架構診斷(鐵證 — 2026-04-15 深層病灶掃描)