跳到主要內容
Lab Grimoire
TW EN
請喝咖啡
工具速評

讓 AI Agent 擁有記憶——Ghost In Shell 分層記憶架構設計

本頁目錄

你有沒有想過一個問題:為什麼你的 AI 助手每次開新對話,都像是第一次見面?

它忘了你上次交代的偏好、忘了你們討論過的技術決策、忘了你最討厭簡體字。每一次,你都得從頭教起。這不是 AI 不夠聰明——而是它根本沒有記憶系統

我花了三個月的時間,從零建構了一套分層記憶架構。它現在每天自動運行,跨越四個不同的 AI CLI(Claude Code、Gemini CLI、GitHub Copilot、Codex),共享同一套記憶——而且不會爆 token。

這套系統叫做 Ghost In Shell,已經開源。以下是它的設計哲學與核心架構。

問題:現有方案全部不及格

常見做法致命缺陷
把所有知識塞進 system promptToken 燒錢大法——500+ 行每次都載入
用一個大檔案存所有東西無限膨脹,context window 爆掉
依賴對話歷史新 session = 完全失憶
外掛向量資料庫架設複雜、檢索延遲、過度工程

解法:五層分層記憶 + 認知引擎

Ghost In Shell 的記憶架構靈感來自 CPU 快取層級(L1/L2/L3)——越常用的資料離核心越近,越冷的資料按需載入

┌─────────────────────────────────────────┐
│        Always Loaded (~230 lines)        │
│  ┌──────────────┐  ┌─────────────────┐  │
│  │ L0 MEMORY.md │  │ L1 fact.yml     │  │
│  │  路由索引     │  │  熱層事實       │  │
│  └──────────────┘  └─────────────────┘  │
├─────────────────────────────────────────┤
│        Load on Demand (按需載入)          │
│  ┌──────────────────────────────────┐   │
│  │ L1 fact_archive.yml  (冷層工具)  │   │
│  │ L1 fact_decisions.yml (決策紀錄) │   │
│  │ L1 episodic.jsonl    (情節記憶)  │   │
│  │ L0.5 scratchpad.md   (任務暫存)  │   │
│  └──────────────────────────────────┘   │
├─────────────────────────────────────────┤
│   v4 Cognitive Layer (背景認知層)         │
│  ┌──────────────────────────────────┐   │
│  │ associations.jsonl  (關聯圖譜)   │   │
│  │ principles_candidates.jsonl      │   │
│  │ .retrieval_buffer.jsonl          │   │
│  └──────────────────────────────────┘   │
└─────────────────────────────────────────┘

效果:每次 session 只載入 ~230 行(而非 500+),認知層在背景自動強化有用記憶、淘汰過時資訊。

核心設計:每一層做一件事

L0: MEMORY.md — 路由器,不是資料庫

這是記憶系統的入口。它只存「去哪裡找什麼」的索引,不存實際知識。目標 < 200 行。就像圖書館的目錄卡——你不會在卡片上寫完整本書的內容。

L1 熱層: fact.yml — 每次必載的核心事實

YAML 格式,存放使用者偏好、系統配置、絕對規則、工具清單。目標 < 150 行。這是 Agent 的「短期工作記憶」——你的名字、時區、語言偏好、禁用詞表。

L1 冷層: 按需載入的專業知識

工具完整配置(fact_tools_detail.yml)、歷史決策(fact_decisions.yml)——只在需要時才讀取,避免浪費 token。

L1 情節層: episodic.jsonl — 教訓與里程碑

JSON Lines 格式,目前累積 398 條記錄。每一條都有重要度(1-10)、標籤、時間戳。這是 Agent 的「長期經驗記憶」——它記得上次部署失敗是因為什麼、哪個 API 有坑。

v4 認知層: 讓記憶自己「思考」

這是最有趣的部分。認知層不只是被動儲存——它主動建立記憶之間的關聯。

associations.jsonl 是一張圖譜,記錄記憶之間的因果、延續、相似關係。當你問「上次部署失敗」時,系統不只找到那條記錄,還會連帶拉出相關的修復方案、後續改進、類似問題。

記憶強度公式

strength = base(imp/10) + retrieval(count * 0.08) + assoc(edges * 0.05) - decay(weeks * 0.03)
  • base:重要度(1-10)的 10%
  • retrieval:使用次數 x 0.08——越常被提取的記憶越強
  • assoc:關聯邊數 x 0.05——連結越多的記憶越不容易遺忘
  • decay:週數 x 0.03——遺忘曲線,但可被 retrieval 和 assoc 抵消

這模擬了人類記憶的核心機制:常用的記得住,有關聯的記得住,太久沒用的會淡忘

多 CLI 共享記憶:四個 Agent,一個大腦

我的工作環境同時運行四個 AI CLI:Claude Code(主力)、Gemini CLI(超長 context)、GitHub Copilot(Code Review)、Codex(備用)。它們全部共享同一套記憶系統。

CLI角色記憶共享
Claude Code本體——全功能開發完整讀寫
Gemini CLI分靈體——超長文件處理完整讀寫
GitHub Copilot異界審判官——Code Review完整讀寫
Codex CLI備用執行器完整讀寫

每個 CLI 啟動時會透過 wrapper 自動注入 runtime metadata(VOID_MEMORY_RUNTIMEVOID_MEMORY_EXECUTORVOID_MEMORY_SESSION_ID),session 結束時自動寫回記憶。多執行器同時寫入時有 file lock 機制防衝突。

自動化:記憶不需要人類維護

自動化排程頻率做什麼
Session Logger每次 session 結束自動記錄本次工作摘要
Trigger Check每次 session 結束檢查是否需要整合記憶
Daily Review每日 23:00自動審查 + 衰減計算
Weekly Consolidate每週日 19:00整合教訓、萃取原則

所有排程由 macOS launchd 驅動,不依賴 cron。整合引擎會自動從 398 條情節記憶中萃取通用原則,形成 principles_candidates.jsonl——這些是 Agent 從經驗中「學到」的規則。

身份三角:Agent 不只需要記憶

記憶只是 Ghost In Shell 的一部分。完整框架由三個支柱組成:

  • Identity(身份)IDENTITY.md + SOUL.md + USER.md——定義 Agent 是誰、服務誰、怎麼說話
  • Memory(記憶):五層分層 + 認知引擎——讓 Agent 記得過去
  • Governance(治理):三層強制執行——確保 Agent 不會做危險的事

治理層特別重要:L1 是 deny list(100% 強制,寫在 settings.json)、L2 是 PreToolUse Hook(100% 強制,shell guard)、L3 是 rules/ 指導(~80% 軟約束)。三層疊加,確保 Agent 有自主權但不會失控。

開源:拿去用

Ghost In Shell 已完整開源,附帶:

  • 互動式 CLI 精靈(5 步建立完整 Agent 配置)
  • 16 篇完整文件(從快速開始到跨機器同步)
  • 範例模板(minimal / multi_cli_memory)
  • 記憶自動化腳本(session log、整合、衰減、關聯)

GitHub: cyhsieh817/Ghost_In_Shell

如果你也厭倦了每次對話都要重新教 AI 你是誰——試試看。


本文的記憶架構在 TheVoidWeaver 系統上已穩定運行三個月,每日自動維護,累計 398 條情節記憶、138 條關聯邊、6 次自動整合。它不是理論——是正在呼吸的基礎設施。

覺得這篇有幫助?

追蹤以收到新的 AI × 生醫研究筆記:

或請我喝杯咖啡,讓新內容持續產出。

☕ 請我喝杯咖啡