設計摘要

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_URLREPORT_URLTELEGRAM_CHANNEL_IDCF_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 決定的問題

  1. BOT_NAME 來源:建議留空(符合 genesis.md 精神)
  2. Skills 個人資料:建議暫不處理
  3. 遷移腳本:建議寫 scripts/migrate-soul.sh

風險:LOW

最大風險是 git rm --cached 操作失誤,但這可以用 git stash 緩解。整個方案 不改任何運行時讀寫邏輯(agent-config.ts、soul 寫入模組等),侵入性極低。