前兩天我們定義了 llm-wiki 的 Schema,也準備好 Raw Sources。接下來應該開始 Ingest。不過在讓 Agent 動手前,你可能有個疑問:
既然 llm-wiki 已經有規則、有資料,也能整理知識,那誰來負責找弱點、設計混沌實驗、控制安全範圍,再把找到的弱點與實驗證據整理回 Wiki?
所以我在 llm-wiki 外層加了一個 chaos-agent,負責找弱點、設計實驗,以及控制可以操作的範圍。執行弱點掃描、實驗設計或故障注入時,Agent 會遵守外層的 chaos-agent/CLAUDE.md。進行 Ingest、Query 或整理 Wiki 時,則會遵守 llm-wiki/AGENTS.md。
只要工作會修改 Wiki,兩份規則都要一起遵守。
整體目錄結構大致長這樣:
chaos-agent/ # Agent 行動層
├── CLAUDE.md # 定義 Agent 要做什麼、怎麼做,以及哪些操作禁止
├── config/
│ └── targets.yaml # 目標系統與允許操作的範圍
└── llm-wiki/ # 知識層
├── AGENTS.md # Wiki 結構、證據與寫入規則
├── sources/ # Raw Sources
├── templates/ # Wiki 頁面範本
└── wiki/ # 整理後的系統知識
這個專案有兩份主要規則檔:
| 規則檔 | 負責內容 |
|---|---|
llm-wiki/AGENTS.md |
Raw Sources、Wiki 目錄、頁面格式、引用規則、Ingest、Query、Wiki 規則檢查 |
chaos-agent/CLAUDE.md |
Agent 身份、弱點掃描、實驗設計、故障注入、反思流程、安全邊界 |
llm-wiki 會規定:
experiment-runs/。TX-W001 這類 ID,並記錄狀態與可信度 (Confidence)。index.md 並追加 log.md。llm-wiki 的工作重點是整理、保存與追溯。它讓 Agent 過幾天重新回來時,還能知道一個結論從哪裡來,也能看懂之前做過哪些實驗。
chaos-agent 負責接下來要調查什麼,以及怎麼安全地驗證。
它會負責:
像 PostgreSQL、Kafka 這類基礎設施預設禁止成為實驗目標,允許使用哪些 Chaos Mesh 實驗情境、最多影響幾個 Pod,也都由 chaos-agent 的規則控制。這些限制可以降低 Agent 把整個環境炸掉的機率。
兩層實際合作時,資料會這樣流動:
llm-wiki 先把 Raw Sources 整理成可以查證的系統知識。chaos-agent 再使用這些知識選擇調查目標、設計實驗。實驗產生的 YAML、數據與報告會放進 Raw Sources,經過整理後再補進 Wiki。
這個流程會反覆進行。Wiki 累積越多可靠證據,chaos-agent 下一次選擇目標時就越有依據;實驗產生的新證據,也會成為下一輪整理知識的來源。
這樣拆成兩層,主要是為了讓規則更容易維護。全部內容放在同一份規則裡,短期內可以運作,時間一久就容易把知識整理、弱點掃描與實驗限制混在一起。
llm-wiki 的知識管理方式可以套用到其他領域,Raw Sources、證據引用與 Ingest 流程都能繼續使用,實際頁面結構再依領域調整。chaos-agent 這一層會依實際系統調整。如果把這套分層設計套用到另一套系統,允許的實驗類型、安全範圍、弱點分類和觀測方式都要重新定義。分開管理後,修改弱點掃描不會打亂 Wiki 結構,調整 Wiki 頁面格式也不會碰到實驗的安全限制。
這篇說明了 llm-wiki 負責保存 Raw Sources、整理系統知識,並確保每個結論都能回頭找到依據;chaos-agent 使用這些知識找弱點、設計實驗與控制安全範圍。後續調查與實驗產生的新證據會放進 Raw Sources,整理後的結論再補進 Wiki,成為下一輪調查的依據。
下一篇,我們會正式啟動第一次 Ingest,看看架構文件如何變成 10 個 Service 頁面,再由 chaos-agent 接手掃描 transaction-service 的弱點。
今天就先寫到這,我們明天見!