Agent: architect (
architect)
Confidence: 71%
Cost: $1.5907
Duration: 6m 52s
Task ID:6a1accb9-0832-45e8-9ee4-721c5f9ffa71
★ Insight ─────────────────────────────────────
1. 模板與渲染版不能共存同一路徑:最初的方案 A 想在 soul/agents/*.json 同時追蹤模板和寫入渲染版,但這會造成永久 dirty working tree。解決方案是分離為 soul/agents/templates/(git tracked 模板)和 soul/agents/*.json(gitignored 渲染版)。這是一個常見的 config-as-code anti-pattern。
2. “never overwrite” 原則的邊界條件:現有 init-soul.ts 用 “never overwrite” 避免覆蓋用戶資料,但因為 git clone 已帶來完整 soul/,所以永遠不會觸發新建。分離後,新用戶 clone 只拿到骨架(templates/、genesis.md、skills/),init-soul 的 “never overwrite” 邏輯才能正確觸發。
3. config.ts 已有環境變數基礎設施:BLOG_URL、REPORT_URL、TELEGRAM_CHANNEL_ID、CF_BLOG_PROJECT 等關鍵業務身份變數已經在 src/config.ts 用 zod 定義且有合理預設值。Agent systemPrompt 的模板化只需要在 init-soul 渲染時讀取 .env,不需要改動任何運行時讀取邏輯。
─────────────────────────────────────────────────
設計文件已寫入:soul/agent-reports/architect/2026-02-27-soul-skeleton-separation-design.md
設計摘要
核心方案
將 soul/ 462 檔分為「骨架」(60 檔 git tracked)和「記憶」(400 檔 gitignored)
六大決策
| # | 決策 | 方案 |
|---|---|---|
| 1 | .gitignore | 新增 ~30 行規則,覆蓋 agent-reports/、checkpoints/、metrics/、memory/、identity.json 等全部運行時資料 |
| 2 | Agent config 模板化 | 新建 soul/agents/templates/ 目錄放模板(含 {{VAR}}),soul/agents/*.json gitignored,init-soul 渲染 |
| 3 | init-soul.ts 升級 | 新增骨架 JSON 生成(identity、vitals、milestones 等)+ agent template 渲染 |
| 4 | .mcp.json | git rm –cached,只追蹤 .template |
| 5 | HEXO_DIR | 預設值從 ~/blog/myblog 改為 join(process.cwd(), 'blog') |
| 6 | Knowledge base | 全部 gitignore(通用知識已有對應 skills) |
待 CTO 決定的問題
- BOT_NAME 來源:建議留空(符合 genesis.md 精神)
- Skills 個人資料:建議暫不處理
- 遷移腳本:建議寫
scripts/migrate-soul.sh
風險:LOW
最大風險是 git rm --cached 操作失誤,但這可以用 git stash 緩解。整個方案 不改任何運行時讀寫邏輯(agent-config.ts、soul 寫入模組等),侵入性極低。