本卡屬 FR-166(母卡 CM-3109 延伸),決策者 2026-10-28 拍板第一種做法。實作跨 evidence-agent、jedi-remote-agent、compliance-manager-be、compliance-manager-fe,首腦本 session 直接做。
白話
Agent 名稱目前只存在主系統。主控台只有從主系統跳轉進來時才看得到主系統的名稱(寫在入場券上),用離線密碼/本機管理員登入就只看到機器名稱。決策者要:主控台能改名,並同步回主系統。
怎麼做
- 【extend 套件】心跳回應帶 agent_name 與 name_updated_at;心跳 request 收 Agent 送來的 name/name_updated_at,比主系統的 name_updated_at 新才採用並寫稽核。remote_agents 加 name_updated_at(套件 migration 014)。主系統管理頁改名時也更新 name_updated_at。
- 【new Agent】core/agent_name.py:存 {name, updated_at, pending};observe 收主系統名稱(比本機新才覆蓋);主控台改名設 pending,心跳 fields 帶上,主系統回應的 name_updated_at 不早於本機就清 pending。
- 【extend Agent】/console/state 與 /api/me 的顯示名改用存下的名稱;PUT /console/api/ops/agent-name(configure)。
- 【extend FE】主控台側欄與總覽名稱旁加「修改」(configure 才有),對話框改名。
驗證
- Agent:主系統名稱較新覆蓋本機、本機較新留著等回報、回報成功清 pending、名稱長度與空白檢查。套件:較新才採用、較舊不採用、寫稽核。實機:主控台改名 → 心跳 → 主系統 Agent 管理頁看到新名;主系統改名 → 心跳 → 主控台看到。
紀律
- 要寫任何新函式/元件/composable/service 方法之前,第一步不是寫,是查:按行為 grep 真實程式碼,再查 docs/claude/domain-capabilities.md 與 FE frontend-overview.md §4。三擇一、預設不新增:reuse → extend → 確認沒有才新增。回寫列出 reuse 了哪些、新增了哪些、為什麼不能 reuse。
- BE 動到 api/app/infra 時 .claude/rules/security/ 自動載入,照著做;FE 規則在 FE repo .claude/rules/security/frontend.md,跨 repo 改 FE 不會自動載入,動手前自己讀。回寫列出本卡對到哪幾條、怎麼滿足。
- 不做義大利麵式程式:「怎麼做」每項已標 reuse/extend/new。extend 就改既有那支,不另開一支;紅旗:複製一段改兩行、開 XxxV2、同一行為兩條路徑。
- 檔案內註解只寫「為什麼」與「陷阱」(一到兩行),做了什麼進 commit message。
- 顯式 git add <檔名>,禁 -am;不切 branch(feature/FR-139);做完立刻 commit +本卡 append 回寫(含 commit hash、手測清單)+狀態改「修正待驗證」;push 等決策者。
首腦本 session 直接做(決策者 2026-10-28:開卡然後你做),不交工作坊派。
已完成修正(首腦本 session 實作,2026-10-28)
commits:套件 jedi-remote-agent ec27f616(未發版)、Agent b123741、BE b6136542b、FE aadb68b6(都在 feature/FR-139,未推)
做了什麼