本卡為 FR-170 母案 P0。evidence-agent(定案改名 guidant-agent)從「主系統的手腳」變成「同一個產品的第二個宿主」,要有自己的架構與守衛。P0 做兩件事:解掉 jedi-common 版本斷層讓 Agent 能裝 kernel 庫;搭宿主殼與守衛讓新需求有地方放、不再更亂。10 張卡 8 批,設計成半夜無人值守可以一路跑完:套件單卡發 beta、結案卡轉正式版;單卡遇到要人決定的事就停下回寫,首腦早上裁。P1~P3 搬遷等 P0 驗收後另開。子卡清單在末段。
Agent 當初是「把檔案上傳套件包成一個小服務」,所以沒有分層。四個月後它有 21,000 行、本機帳號、AD 登入、檢測工具、網路診斷、離線作業,老闆還在往裡面加。現在 45 支檔平鋪一層、36 支各寫 SQL、27 處全域狀態、9 支各自開執行緒;密碼政策、LDAP、session、事件碼都跟主系統各寫一份,因為 Agent 釘的 jedi-common 太舊、什麼套件都裝不進去。做完 P0 之後:Agent 能裝跟主系統同版的套件、有一個宿主殼讓功能模組一個一個掛上來、有六支守衛測試擋住「新程式碼寫錯位置」。Agent 不會因此變乾淨,但從此不再更亂。
決策者 2026-10-29:「當初的定位已經被老闆推翻了」「現在像 SaaS 的其中一個端點」「不想再重複開發很多東西」「看起來是一坨義大利麵」。首腦分析見 analysis;結論是 P0 必要(兩週十張卡),P1 以後是還債可與功能輪流排。業界(GitLab Runner/Elastic Agent/Datadog Agent)agent 與 server 刻意是兩套架構,共用的只有通訊契約與不碰 DB 的小型庫。
files 獨立模組;工具帳密歸 scan、保管底層抽 platform.SecretStore;browser_plane_server→files、task_sinks→scan、archive_safety→shared、console/files 查詢→files/app。platform、shared 可被任何模組 import。guidant-agent/guidant_agent;畫面產品名走設定值,內部名與品牌脫鉤不再動。upload_files 以 local_db v7 補欄。git mv、舊路徑留殼、功能卡與重構卡碰同模組就不同批。upload_files.tenant_id NOT NULL 無身分 INSERT 炸(實測)。1-2、1-3 處理。