OpenWiki:為編程代理提供開源倉庫文檔
OpenWiki 是一個開源代理和命令行工具,用於自動生成和維護代碼庫文檔。它創建倉庫維基,連接編程代理,並通過 GitHub Action 持續更新文檔,幫助代理更好地理解代碼庫上下文,從而提高編碼效率。
今天,我們發佈了 OpenWiki——一個用於生成和維護代碼庫文檔的開源代理和命令行工具。
編程代理在理解其工作的倉庫時能寫出更好的代碼。它們需要知道關鍵邏輯位於何處、文件如何連接以及代碼庫期望遵循哪些模式。良好的文檔能讓代理獲得這些上下文,從而做出更明智的代碼變更並減少可避免的錯誤。
問題在於文檔難以保持最新。編寫初始文檔需要時間,而每次代碼變更時更新文檔則更為困難。在頻繁提交 PR 的大型倉庫中,文檔可能迅速過時。
OpenWiki 自動處理了這項工作。它為你的倉庫創建一個維基,將該維基連接到你的編程代理,並在代碼變更時保持更新。
為何使用維基為代理服務
我們受現有代碼庫維基項目的啓發,包括 DeepWiki、AutoWiki 和 Karpathy 的 LLM 維基概念。共同的想法很簡單:維基讓人和代理能夠以結構化方式理解代碼庫,而無需將所有上下文強制塞入一個巨大的文件中。
這很重要,因為大多數編程代理已經讀取 AGENTS.md 或 CLAUDE.md 等文件獲取指令。這些文件很有用,但並非存儲數百頁倉庫文檔的合適位置。它們應該將代理指向正確的上下文,然後讓代理自行檢索所需內容。
OpenWiki 遵循這一模型。它生成倉庫維基,然後在代理指令文件中更新對該維基的引用。此後,你的編程代理可以自動發現並使用文檔。
快速開始
OpenWiki 旨在易於從命令行運行。
通過 npm 安裝:
npm install -g openwiki
然後運行:
openwiki --init
init 命令會詢問模型提供商和 API 密鑰,然後為你的倉庫生成文檔。
OpenWiki 支持開放和封閉模型提供商,包括 OpenRouter、Fireworks、Baseten、OpenAI 和 Anthropic。默認情況下,它使用 OpenRouter 的開放模型,但你可以配置最適合你設置的提供商。
由於 OpenWiki 基於 DeepAgents 構建,它還支持向 LangSmith 追蹤。如果你提供 LangSmith API 密鑰,OpenWiki 會將運行追蹤到 LangSmith 項目,以便你檢查代理在生成或更新文檔時所做的具體操作。
OpenWiki 如何連接到你的編程代理
生成維基後,OpenWiki 會更新倉庫的代理指令文件。如果你的倉庫使用 AGENTS.md、CLAUDE.md 或兩者兼用,OpenWiki 會添加一個對生成維基的引用,並説明代理何時應使用它。
我們選擇這種方法是因為將整個維基放在指令文件中會添加太多上下文。在大型倉庫中,維基可能包含數百個文件。將所有這些內容加載到每次代理運行中既浪費又難以維護。
簡短的引用效果更好。你的編程代理已經讀取指令文件。一旦 OpenWiki 添加引用,代理就能在需要倉庫上下文時找到維基,無需你改變工作流程。
保持維基最新
一次性生成文檔很有用,但保持它們最新才是 OpenWiki 更具價值之處。
OpenWiki 包含一個 GitHub Action,可以按計劃運行(例如每天一次)。該 Action 使用更新標誌運行 OpenWiki。OpenWiki 檢查自上次運行以來有哪些提交落地,利用 git diff 瞭解變更內容,然後使用相關上下文更新維基。
這意味着工作流程可以在後台運行。隨着代碼庫的變更,OpenWiki 更新文檔。你的編程代理通過現有的指令文件引用持續獲取最新維基。
首先為代碼庫構建
此首次發佈專注於代碼庫維基。目標是讓代理更容易理解它們工作的倉庫,而無需開發者手動編寫和維護詳細文檔。
隨着時間的推移,我們認為 OpenWiki 的概念可以更廣泛地應用。代理不僅需要編寫代碼,還需要為多種工作提供持久上下文。代碼庫文檔是第一個用例,但同樣的模式可以幫助代理在其他工作流程中維護有用的上下文。
試試看
OpenWiki 現已開源。
你可以安裝它,運行 openwiki --init,並在幾分鐘內為你的倉庫生成維基。
在此查看倉庫:https://github.com/langchain-ai/openwiki