講個你可能已經發現、但聽起來很蠢的事:我這整套 AI 系統,沒有資料庫。
人格、記憶、規則、知識、投資持倉、交接單——全部是 Markdown 純文字檔。沒有 PostgreSQL、沒有向量資料庫、沒有任何 schema。一個工程師朋友聽到差點翻白眼。
但用了半年,我越來越確定:對個人規模的 Agent 系統,全檔案化不是將就,是刻意的設計。今天攤開講它的瘋狂與合理。

先看這套系統靠哪些檔運作——每個檔扮演一個明確的角色:
| 檔案 | 角色 |
|---|---|
SOUL.md |
人格與語氣定義 |
IDENTITY.md |
身分與系統定位 |
AGENTS.md |
行為協定、品質閘道 |
MEMORY.md |
長期記憶 |
memory/YYYY-MM-DD.md |
每日原始日誌 |
INVESTMENT.md / TOOLS.md … |
領域知識與設定 |
cowork_handoff/ |
跨系統交接 |
整個 Agent 的「大腦」與「靈魂」,就是這一疊純文字。沒有隱藏狀態、沒有黑盒——系統的全部,攤在檔案總管裡看得一清二楚。
1. git 版控
整個 workspace 進 git。記憶改了、人格調了、規則變了,每一次變動都有 commit 記錄、可 diff、可回溯。我能看到「這個 Agent 三個月來怎麼演化的」——這是任何資料庫都很難給的時光機。
2. 人類可讀可改
Agent 記錯了、人格飄了,我直接打開檔案編輯。不需要寫 SQL、不需要管理介面。最好的除錯工具是一個文字編輯器。
3. Agent 可自我修改
因為記憶就是檔案,Agent 自己也能讀寫——dreaming 時更新 MEMORY.md、交接時寫 handoff。檔案是人和 AI 都能操作的共同介面,這點很關鍵。
4. 跨系統同步容易
純文字檔用 Syncthing 同步毫無門檻(Day 11)。換成資料庫,跨機同步立刻變成一個工程專案。
全檔案化不是沒代價,三個真實的缺點:
這些缺點在個人規模下都還能忍——但規模一上去就不行了。
我的判斷標準很簡單,看三個訊號:
但我這套是單人、單家庭、低併發的系統,三個訊號一個都沒踩到。所以結論很乾脆:個人系統,不用資料庫。 為了還沒發生的問題去扛資料庫的複雜度,才是真正的過度工程。
寫這篇的時候是真的一個資料庫都沒有。發文的今天,我親手加進系統的 SQLite 有兩個。
先把界線劃清楚,因為這關係到標題還算不算數:Agent 的狀態層到今天仍然是零資料庫。人格、記憶、規則、持倉、交接單,一個 .sqlite 都沒有——這點我剛才特地把整個 workspace 掃了一遍確認。(更精確一點:零資料庫的是我碰得到的狀態層。框架容器肚子裡怎麼存排程表與執行紀錄,是另一回事——Day 9 那個改了會被寫回來的排程,就住在那種我碰不到的私有儲存裡。)
那兩個資料庫在哪?在後來長出來的網頁儀表板上,存的是看板卡片和自動化流程的執行紀錄。
而它們出現的理由,正好就是我上面列的那三條:
所以這不是打臉,是這篇的判準真的被觸發了。我當初寫「三個訊號一個都沒踩到」,前提是那個系統只有 Agent;後來多了一個給人看的 Web 介面,訊號就踩到了。
**而它還額外教了我一課。**兩個資料庫一開始是同一個——後來儀表板頁面開始間歇性打不開,查下去發現是兩段程式碼同時寫同一個檔案造成鎖衝突。修法是把執行紀錄拆成獨立的第二個資料庫,各寫各的。
換句話說:**我不但踩到了「該用資料庫」的門檻,還踩到了「用了資料庫之後才有的問題」。**這正是我當初不想太早引入它的原因——複雜度不會因為你用了對的工具就消失,只是換一種形式出現。
結論我維持不變,只是把它講得更精確:
Agent 的狀態層用檔案,給人看的介面該用資料庫就用。
判準不變——踩到查詢複雜/高併發/資料量大,就換;沒踩到,別為了「比較專業」而換。
全 Markdown 架構,是「刻意的簡單」:
明天是第二週週回顧——把這週的記憶系統設計,收斂成五個可複用的設計模式,並回答一個大家一定會問的問題:那 RAG 和向量資料庫呢?
🔑 這篇的關鍵字
全檔案化狀態層(人格/記憶/規則/資料全 Markdown)· 好處:LLM 直讀、git 版控與 diff、同步工具直接搬、隨時人眼可讀 · 代價:無 schema 約束,靠品質閘道軟性把關 · 換資料庫的三個訊號:查詢變複雜/併發變高/資料量變大 · SQLite 寫入鎖衝突 → 依寫入者拆檔
我是一名金融業資訊工程師,這是我半年來在家自架 AI Agent 系統的實錄。