Agent Wikis 的發展現狀

@mem0ai
英語2 天前 · 2026年7月21日
224K
947
111
20
2.2K

TL;DR

Agent wikis 代表了從基於檢索的 RAG 轉向由 LLM 維護的持續性 Markdown 知識庫,為 AI Agent 提供了一種可累積的資產,協助其駕馭複雜的程式碼庫與個人數據。

主旨:在攝取時編譯,而非在查詢時

2026 年 4 月,Andrej Karpathy 在 GitHub 上發布了一個 Gist。他在其中描述了一種方法,稱之為「LLM Wiki」。

隨後,四個團隊分別打造了類似的系統。Cognition 建構了 DeepWiki,Factory 建構了 AutoWiki,LangChain 發布了 OpenWiki,Garry Tan 則推出了 GBrain。

這四個系統的核心方法相同:LLM 一次性讀取你的原始文件,將資訊寫入 Markdown 頁面,並在原始內容變更時保持這些頁面的正確性。之後,Agent 會讀取這些頁面,而不是針對每個問題都重新讀取原始文件。

人們稱這類系統為「Agent Wiki」。這篇文章會說明它們是什麼、每個團隊的具體實作、此方法的限制,以及一個許多人忽略的重要差異。

主旨:在攝取時編譯,而非在查詢時

為模型提供大量文件的常見方法是「檢索」。你將文件放入資料庫,將其分割成片段,並為這些片段建立嵌入向量。針對每個問題,系統會找出相關的片段。

mem0 - inline image

這個方法可行,但也有問題:系統不會保留查詢結果。它每次都從原始片段重新建構答案。第十次回答的品質不會比第一次更好,而你卻付出了十次工作的成本。

Agent Wiki 將這個成本轉移了。模型在讀取原始文件時一次性完成工作,將結果寫入頁面,這些頁面會被保留下來。

當新的原始文件加入時,模型會執行以下步驟:讀取原始文件、更新相關頁面、修正摘要,並標記與現有頁面不一致的資訊。

兩種方法都正確,但有以下兩個差異:第一,成本支付的時機點不同;第二,問題結束後,有什麼東西被保留下來。

每個系統都包含相同的三個層級。

第一層是原始文件,包含你的文章、論文和程式碼庫。模型會讀取它們,但不會修改它們。

第二層是 Wiki,採用 Markdown 格式。模型負責撰寫整個 Wiki 的內容,包含摘要、各主題的頁面,以及頁面之間的連結。

第三層是架構檔案。這個檔案告訴模型 Wiki 的結構,以及需要執行的任務。常見的檔名是 CLAUDE.md 或 AGENTS.md。這個檔案能讓模型成為 Wiki 正確的維護者。

mem0 - inline image

系統執行三種操作:

攝取:模型讀取新的原始文件,然後將資料寫入每個相關的頁面。

查詢:你向 Wiki 提出問題。你也可以將優質的回答以新頁面的形式寫回 Wiki 中。

校驗:模型檢查整個 Wiki,找出不一致的資訊、過時的資訊,以及沒有被連結到的頁面。

為何有效

人類維護的 Wiki 會隨著時間推移而變得不正確,原因很明確。困難的部份不在於閱讀原始文件,也不在於產生想法,而是在於維護工作。

維護工作包含以下任務:你必須修正頁面之間的連結、保持摘要的正確性,並將每份新文件與現有的頁面進行比對。

這項工作永無止境,而且沒有報酬。忙碌的團隊會優先停止這項工作,然後 Wiki 就會開始變得不正確,最終大家就不再使用它。

模型可以毫無問題地完成這項工作。模型不會感到厭倦,也不會忘記建立連結。它可以在一次操作中修改十五個檔案。

這個概念由來已久。Vannevar Bush 在 1945 年描述了 Memex,這是一種個人文件儲存裝置,文件之間帶有連結。Bush 當時沒有解決維護問題,而模型正是這個問題的解答。

名稱的由來

直接閱讀 Karpathy 的 Gist 原文,會比閱讀任何摘要都更準確。

他對傳統方法如此描述:「LLM 在每個問題上都從頭開始重新發現知識,沒有累積。」

他的方法是「編譯」資訊,而非「檢索」資訊。如此一來,「知識被一次性編譯完成,然後保持更新,而不是在每次查詢時重新推導。」結果是「一個持續累積的、不斷增長的成果。」

你不需要自己撰寫 Wiki。他寫道:「你永遠(或極少)需要自己撰寫 Wiki,LLM 會撰寫並維護所有內容。」他將 Agent 與 Obsidian 結合使用。他寫道:「Obsidian 是 IDE;LLM 是程式設計師;Wiki 是程式碼庫。」

這個 Gist 也提到了規模限制,許多摘要都忽略了這點。不使用嵌入向量的方法「在中等規模(約 100 個原始來源、數百個頁面)下效果出奇地好,並且避免了建置基於嵌入向量的 RAG 基礎設施的需求。」

對於更多的原始來源,Gist 建議你加入搜尋功能,並以 qmd 為例。Gist 將 qmd 描述為「一個針對 Markdown 檔案的本地端混合搜尋引擎,結合了 BM25/向量搜尋與 LLM 重新排序。」

因此,這是一個關於規模的規則,而非替代法則。當原始來源集規模較小時,不需要使用檢索基礎設施;當原始來源集規模變大時,再加入檢索功能。

各團隊的實際建置

從這裡開始,這個概念不再只是個想法,而是進入了工程實作階段。不同實作之間的差異,正是最有價值的部分。

Cognition:DeepWiki,作為公共設施的 Wiki

Cognition 將這個方法應用於 GitHub 上的公開程式碼庫。只要將公開程式碼庫 URL 中的 github.com 替換為 deepwiki.com,就能獲得該程式碼庫的 Wiki。這個 Wiki 包含架構摘要、檔案索引、依賴關係圖和搜尋功能,並包含指向原始碼的連結。

超過 50,000 個最受歡迎的公開程式碼庫都擁有自己的 Wiki,包括 MCP 和 LangChain。

第二點更為重要:這個 Wiki 本身並非產品,而是為 Agent 提供的檢索基礎設施。Devin 使用這個 Wiki 來查找程式碼庫中的相關程式碼。因此,DeepWiki 是 Devin 中程式碼搜尋功能下方的編譯層。

Factory:AutoWiki,作為建置產物的文件

Factory 將這個方法應用於持續整合流程。Factory 認為,文件必須是建置過程的產物,而不是一個獨立的專案。文件源自於原始碼,具有與程式碼庫相同的結構,並在程式碼庫變更時同步更新。

mem0 - inline image

AutoWiki 建立 Wiki 的過程分為兩個階段。第一階段是結構掃描,讀取 README 檔案、套件清單、CI 設定檔和進入點。第二階段是語意掃描,讀取路由、API 端點、服務類別、資料庫架構和功能開關。

Factory 將工作分配給專門的 Agent。每個 Agent 負責程式碼庫的一部分,並獲得足夠的上下文來撰寫一個優質頁面。這個方法避免了已知的問題:單一 Agent 難以為大型程式碼庫撰寫出良好的文件。

Factory 透過基礎設施而非紀律來確保 Wiki 的正確性。/wiki 指令會重新建立 Wiki。/install-wiki 指令會建立一個 CI 工作流程,該工作流程會在每次推送至預設分支時重新建立 Wiki。對於 GitHub 專案,Wiki 會被放置在程式碼庫的 Wiki 標籤頁中。

LangChain:OpenWiki,從程式碼到萬物的躍進

LangChain 以開源軟體的形式發布了 OpenWiki。OpenWiki 是一個 CLI 工具,用於撰寫和維護程式碼庫的 Agent 文件。隨後,LangChain 發布了 OpenWiki Brains,它包含兩種模式:Code Brain 用於程式碼庫,Personal Brain 則用於你個人的資料來源。

Personal Brain 是重要的變革。它可以讀取來自 Gmail、Notion、git 儲存庫、X(推特)、Hacker News 和網路搜尋的資料,並將所有這些資料寫入一個本機端的 Markdown Wiki。Agent 會讀取這個 Wiki。這個方法的應用範圍,從程式碼庫的文件擴展到了你工作內容的文件。

每個團隊都對輸出格式做出了相同的決定:輸出內容不是為了讓人閱讀,而是為了提供 LLM 上下文而結構化的 Markdown。它包含標題、頁面之間的連結和摘要。這種結構讓 Agent 能快速找到相關資訊。換句話說,Wiki 的讀者是模型。

GBrain:個人規模的開源版本

GBrain 將這個方法應用於個人知識庫,而非程式碼庫。GBrain 使用 git 儲存庫中的 Markdown 檔案,包含一個架構檔案,並能自動建立主題之間的連結圖譜。

GBrain 證明了這個方法只需要極少的基礎設施。它沒有向量資料庫,沒有運作中的服務,只有檔案。模型負責維護這些檔案,而人類也可以閱讀這些檔案。

技術矩陣

mem0 - inline image

這四個系統的結構相同:它們都使用 git 中的 Markdown 檔案、一個架構檔案、在攝取時編譯、在原始來源變更時重新建立 Wiki,並為 Agent 閱讀而撰寫頁面。四個不同的團隊解決了四個不同的問題,卻得出了相同的結構。這種一致性強烈說明了這個結構是正確的。

這些系統在維護方式上有所不同。Factory 在 CI 中進行維護,而其他三個系統則在有人執行指令時進行維護。因此,它們的 Wiki 的正確性,取決於最後一次執行的指令。

限制

限制一:規模。Karpathy 提到了這個限制。不使用嵌入向量的方法,對於約 100 個原始來源是有效的。對於更多頁面,你必須加入搜尋引擎。Gist 建議你同時使用 BM25 搜尋和向量搜尋。

限制二:準確性。模型在攝取時編譯資訊。早期的摘要可能會遺漏原始文件中的某個細節,而後續的每個答案都會包含這個錯誤。直接從原始片段進行檢索則沒有這個問題。你是在用重複工作的成本,交換資料遺失的風險。

限制三:過時資訊。一個頁面的正確性,取決於它最後一次被更新的時間。這就是 Factory 方法重要的原因。一個不正確的 Wiki 比沒有 Wiki 更糟糕,因為錯誤的資訊披著正確資訊的外衣。

限制四:成本。你需要花費 token 來建立頁面,可能建立了一些沒人讀過的頁面。你也需要花費 token 來校驗那些沒有變更的頁面。

Wiki 並非記憶

有一個你必須知道的差異。這個領域的用詞還不夠精確。

許多人稱這些系統為「記憶」。LangChain 將 OpenWiki 稱為「AI Agent 的 Wiki 記憶層」。其他人則說 Wiki 為 Agent 提供了記憶。這裡的「記憶」一詞有兩種不同的含義。

mem0 - inline image

第一種含義是「對文件集的知識」。Wiki 能做到這點。它編譯了你的文件、程式碼庫或 Gmail 中的資料,告訴你這些文件包含了什麼內容。

第二種含義是「對使用者的記憶」。這是不同的資料。它包含了一個人的偏好、決定、團隊曾經拒絕過的方法,以及 Agent 在另一個應用程式中嘗試某個方法的結果。

對使用者的記憶具有不同的結構。它與特定的人相關,而非文件集。它來自於互動,而非攝取。它還必須為每個使用者執行以下任務:修正不一致的資訊、移除過時的資訊、保留每個項目的來源,並根據要求刪除資料。

Wiki 能正確完成第一項任務,但無法完成第二項任務。你的 Gmail Wiki 會告訴 Agent 你 Gmail 郵件中的內容,但它不會告訴 Agent 你在星期二的一段對話中改變了某個決定,也不會告訴 Agent 某個方法對你來說已經失敗過。

記憶層則負責完成第二項任務。Mem0 就是一個例子。它將每條記憶與一個 user_id 綁定。因此,記憶能隨著使用者跨越多個會話、應用程式和 Agent 而移動。當一個事實改變時,它會更新該事實,而不是每次都新增一條記錄。

這兩個系統並非替代關係,而是應該同時使用。錯誤不在於不使用 Wiki,而在於認為 Wiki 能提供你對使用者的記憶。

總結

Agent Wiki 的概念是正確的。一次性編譯知識,然後保持其正確性,不要為每個問題重新建構。維護工作曾讓人類的 Wiki 難以為繼,而模型則能以零成本完成維護。四個團隊在短短幾個月內建構了相同的結構,這是個強而有力的證據。

請執行以下三件事:當你的文件集穩定且你經常閱讀時,將它們編譯成頁面。當文件集規模變大時,依照 Gist 的建議加入檢索功能。最後,務必區分「對文件集的知識」和「對使用者的記憶」。Wiki 能提供前者,但無法提供後者。

In Context 第 17 期

本文是 [@mem0ai](https://x.com/@mem0ai) 的 In Context 部落格系列一環,探討 AI Agent 記憶與上下文工程。

Mem0 是一個智慧型、開源的記憶層,專為 LLM 和 AI Agent 設計,能在多個會話中提供長期、個人化且具上下文感知的互動。

參考資料

二次創作

使用 YouMind 創作爆款文章

收集素材、拆解爆點、生成視覺資產、撰寫內容,並在一個 AI 工作空間裡完成分發。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章