FR-066 · 需求索引 · 本頁由 build 掃資料夾生成

FR-066 檢測 Agent 原生安裝包

狀態:已結案 文件 5 份 handoff 3 份

把檢測 Agent 從「一包 docker 容器」改成「一顆解開就能裝的安裝包」。

白話說明:檢測 Agent 是派駐在客戶機房裡、替我們去做掃描的小程式。它原本跑在 docker 容器裡(容器=把程式和它需要的環境打包成一個獨立小房間,跟外面隔開),但 Agent 的本職就是量測它所在的那台機器——要讀主機板序號、系統識別碼這類硬體身分,隔著容器這層隔離就讀不到、或讀到的值每次重啟都不一樣(這件事已經真的出過事)。原本靠一支外掛腳本從外面抄值塞進去硬撐。

同業(Nessus、Qualys、Wazuh、Datadog)的掃描 Agent 全部都是直接裝進機器,貼著主機量測的產品本來就該這樣做。

本案把 Agent 的程式編譯成機器碼(客戶拿到的是編譯後的檔案,看不到我們的原始碼)、連同所有掃描工具塞進同一顆壓縮包,客戶解開跑一支安裝腳本,回答三個問題就裝成開機自動啟動的系統服務。順帶解決四件事:機器身分直接讀主機、本地資料庫從「另起一個資料庫服務」縮成單一個檔案、加密連線由 Agent 自己承接(少一個中間轉發服務要維護)、出貨前逐個檔案蓋防偽章、啟動時驗章防止被竄改。完全沒有對外網路的封閉機房也能裝,因為工具全部隨包附上,不必連網下載。

給誰用、解決什麼問題

誰會用到 到客戶端佈署的工程師/業務;最終由客戶的 IT 人員維運
原本的痛 機器身分讀不準會漂移(換一次值等於系統認不得這台機器);要客戶先會 docker;封閉機房裝不起來
本案之後 一顆包、一支腳本、回答三題就裝好;身分直讀主機不會漂;斷網也裝得起來;被動過手腳的包啟動不了
怎麼驗收 找一台沒裝過的乾淨機器:解包 → 跑安裝 → 系統服務顯示執行中 → 雲端後台看得到這台上線 → 派一單檢測跑完、報告回到雲端。另外手動改包內任何一個檔案,Agent 要拒絕啟動
§1

目前實際出貨的是哪一版

開發過程中出了兩種形態,現階段對客戶出貨的一律是 docker compose 版(決策 D16):

形態 狀態 說明
docker compose 版 現行出貨版 同一顆編譯產物裝進容器,附互動式安裝程式(問答引導,客戶不必碰 docker 指令);證據儲存服務(SeaweedFS)一起出貨、預設接好
原生安裝版(tarball) 開發完成、暫不出貨 成果保留不廢。等真的出現「封閉網路/機器上不能裝 docker」的客戶再解凍
Windows 版 凍結(決策 D19,PM 拍板) 兩條技術路線都實測判死(Docker Desktop 使用者登出後整組停掉;WSL 方案閒置一分鐘就被系統凍結)。唯一活路是做原生 Windows 服務,投資等客戶訊號。現階段要掃 Windows 主機的解法是:Linux Agent 走遠端連線去掃,這是既有功能

母卡 CM-1284 於 2026-08-23 收案。各子需求做了什麼、怎麼判定完成,見 design.md §2 分工概述(有寫給非工程讀者的檢查方法)。

⚠️ 留一個未做的驗證:斷網封閉機房從沒真的跑過一遍——那是當初決定「工具全包一顆」的立論根據。若 compose 版也要出給封閉網路客戶,這輪驗證要補在 compose 版上。

§3

文件

以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。

需求與討論

文件 類型 標題 最後更新
discussionmd 需求討論稿 讓檢測 Agent 貼著宿主跑:非 docker、systemd 服務、一顆 tarball 裝完 2026-08-18

設計

文件 類型 標題 最後更新
designmd 設計 檢測 Agent 原生安裝包 設計定案 2026-08-23

其他文件

文件 類型 標題 最後更新
t71-windows-probemd 文件 160 Windows 真機探路實測紀錄 2026-08-22
t74-wsl-engine-probemd 文件 B 案生死驗證:WSL2+docker engine 撐不撐得住無人登入 2026-08-23
windows-feasibilitymd 文件 Windows 版 Agent 可行性評估 2026-08-22

交接與收口時間軸(handoff/,3 份)

由新到舊。每份是某一棒次交接當下的完整現況快照,看某個時間點「當時知道什麼」請從這裡進。

日期 文件 標題
2026-08-23 FR-066-STATEmd FR-066 檢測 Agent 原生安裝包 — STATE(living,只描述此刻)
2026-08-23 FR-066-LOGmd FR-066 檢測 Agent 原生安裝包 — LOG(append-only,每棒追加一 block,寫完永不改)
2026-08-23 2026-08-23-FR-066-SUMMARYmd FR-066 全案收口 SUMMARY