下一階段要討論並開始做。這份只記決策者的需求原話、目前的做法、這次實際踩到的問題, 與每一條會碰到的地方;方案取捨留到討論時做,這裡不先定。
2026-11-01 為了修 Agent 的兩個問題(容器版 Office 證據預覽失敗、主控台 Profile 不能選),實際走過一次的流程:
| 步驟 | 花的時間 | 問題 |
|---|---|---|
| 出 Agent 1.4.8 | 約 20 分 | 本身沒問題 |
| 為了把 Agent 帶出去,連主系統也出一包 1.27.10 | 約 36 分 | 主系統本身只有一個套件改動,卻要整包重出 |
| 客戶先升主系統(停機約 7 分) | 7 分 | 只為了修 Agent,主系統卻要停機 |
| 主系統升完才能推 Agent | — | 推送跟著主系統版本走 |
| 推送後等心跳才開始、升完等心跳才回結果 | 每段最多 5 分 | 121 升級 12:31:39 已成功,主系統 12:36:30 才知道 |
| 升級途中 8 格進度一直停在第 1 格 | — | 欄位對不上(待辦 60),再加上進度靠輪詢 |
結論:Agent 的修正速度被主系統的發版節奏與心跳間隔綁住。
guidant-ai-<主系統版>.tar.gz 的 agent/ 底下,一起簽、一起上 R2(v1/<主系統版>/)。upgrade/bundles/guidant-ai-<主系統版>/agent/,更新中心 Agent 區只能推「這一版主系統附的那個 Agent」。min_agent_version 是主系統要求 Agent 至少幾版。sudo guidant-agent-compose upgrade <包> 手動升。主系統每次心跳回應夾帶(core/plugins/remote_agent.py 的 heartbeat_extras 與 update_extra):
| 夾帶內容 | 主系統這邊在哪 | Agent 讀的鍵 |
|---|---|---|
| 升級指令(要不要升、目標版、sha) | _agent_update.py |
update |
| 弱點資料庫版本 | _agent_vulndb.py |
vulndb |
| 工具參數表版本 | _agent_tool_schemas.py |
tool_schemas_version |
| LDAP 設定 | _agent_ldap_config.py |
— |
| 授權掃描目標名稱 | allowed_target_names_heartbeat_extra |
names/hosts/networks |
| 離線登入天數 | _agent_offline_login_policy.py |
— |
| 檢測 Profile 清單 | _agent_profile_sync.py |
profiles/profiles_check |
| 檔案保護設定 | _agent_file_protect.py |
— |
Agent 每次心跳上報夾帶(guidant_agent/sync/app/enroll.py 的 heartbeat_fields):Profile 同步狀態、升級結果(upgrade_result)、弱點資料庫狀態、outbox 數量、重啟原因、LDAP 來源等。主系統用 heartbeat_payload_observers(record_profile_states、record_upgrade_result)處理。
主系統主動找 Agent 的通道已經有:FR-039 資料面(mTLS+短效 JWT,https://<agent>:8443),POST /update/notify、GET /update/progress 是這條。
scripts/build/build_bundle.sh 不再把 Agent compose 包放進主系統包;Agent 獨立出包+簽章+上 R2(新路徑,例如 agent/v1/<Agent 版>/)。product_releases 或另開表、register-draft/publish/withdraw CLI、後台版本頁、/v1/check//v1/download-url 要能問 Agent 的新版。upgrade/bundles/<主系統版>/agent/ 改成獨立的 Agent 包存放處。bundles/<版>/agent/,分開後這段邏輯要拿掉或改。update_sync.py 檔頭),還是 Agent 主控台發一張單給主系統更新中心排程。CONSOLE_SCOPES 還是新增。scripts/install/lib/upgrade_order.sh+systemd path 單元),可沿用,只換「單從哪來」。item.progress/FE rollout.progress),升級結果晚 5 分鐘回。docker create --network none guidant-ai-agent:1.4.8 失敗(「無法讀取新映像」),121 同包同步驟過;疑該機 docker/核心問題,決策者在該機查。失敗原因主系統只拿到一句話,看不到主機細節,Agent 更新中心設計時要讓失敗細節回得來。big-feature-workflow 出討論稿與雛形(Agent 主控台更新頁、主系統 Agent 區改版)。docs/features/FR-<號>-<YYMM>-agent-independent-update/。