brainstem:一個照你思考方式生長的第二大腦
你正在讀的這段字,是 brainstem 從它自己的筆記裡長出來的草稿。我先把幾則關於它的原子筆記餵進去,再請它合成一篇——所以這篇文章本身,就是我要說的功能在跑。
brainstem 是我做的第二大腦引擎,裝一次,就能在任何私有目錄養出一張照你判斷方式生長的知識圖譜。市面上的 NotebookLM、幾個 RAG 工具我也用過,最後還是自己做了一個,因為我要的差別不在介面,在一個更底層的地方:連結建在什麼時間點。
餵入即連結,不是查詢時才算
RAG 的圖是查詢時才浮現的:你問一個問題,它即時用 embedding 算哪些片段跟你的問題最像,把鄰近的拉出來。邊是當下算的,依據是向量空間的相似度。
brainstem 反過來。每一則素材在餵入的當下就被抽成一則原子筆記,並且由我親手建好 [[連結]]。圖的邊,是我在讀那份東西時的聯想——「這個論點跟上個月那篇是同一招」「這條跟 RAG 那則正好對立」。等我之後要用,圖已經照我的思路接好線了,不是臨時湊近的幾段。
代價很誠實:餵進去比較貴,要抽概念、比對既有的圖、補上雙向連結。但換來的是檢索準、不靠 embedding 猜、而且整張圖會順著我的思考長,不是順著演算法的鄰近長。判準其實很簡單——料如果有結構,就別付 embedding 的成本;這裡的結構,是人在餵入時注入的。
一個檔,決定它怎麼幫你判斷
第二個賭注是 lens。我在一份 lens.md 裡寫下「我怎麼判斷」,三件事就一起朝它偏:收料時留什麼、查詢時先浮什麼、合成時像誰在說話。
把主觀的判準抽成一份看得見、改得動、進得了版本控的檔,而不是散在各處的隱性習慣,也不是塞在某個 prompt 裡。要換個判準,我改一個檔就好,不是去翻三段邏輯。這篇文章的語氣會是現在這樣,就是因為 lens 這樣寫。
終點不是「找得到」,是「長出新東西」
大多數筆記工具到「存得進、查得到」就停了。那是一座被動的資料庫。brainstem 多走一步:把累積的筆記合成成文章草稿,落到我指定的目錄,口吻照 lens。
對我來說,一個知識系統的價值不在「找得到」,在「能用你累積的東西,生出你還沒寫過的東西」。所以我把「生成」當成跟收料、查詢平起平坐的一級動作,而不是事後再人工撈一遍。它生到「待我審」為止——上不上站是我下一步的事,引擎不替我發佈。
為什麼它敢開源
還有一個不在功能表上、但我很在意的設計:引擎跟腦是分開的。會公開的是引擎(skills、CLI、腳本),會持續長大的私人想法則住在另一個只有我看得到的目錄。一個會不斷吸附你私料的工具,資料絕不能跟它那個準備公開的 repo 放同一個根——否則你一邊用,一邊就把自己的腦洩進了公開倉庫。所以引擎裝完,連它的原始 repo 都可以刪,半點不影響你那顆腦。
引擎是開源的(MIT),程式碼在這:github.com/NatChung/brainstem。clone 下來裝一次,你就能在自己的私有目錄養自己的腦。
這顆腦現在替我長著,上百則筆記彼此牽著線——沒有一則是孤島,沒有一條連結斷頭,這是引擎每次體檢都會替我守住的底線。而你手上這篇,就是它第一次替我開口。