2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

拆解LangChain刚开源的OpenWiki:如何落地个人Wiki知识库

发布日期:2026-07-05 06:14:26 浏览次数: 1591
作者:小码AI笔记

微信搜一搜,关注“小码AI笔记”

推荐语

OpenWiki开源项目落地个人Wiki知识库,为代码库生成和维护Agent可读文档,推动知识管理新范式。

核心内容:
1. OpenWiki项目背景:Karpathy的LLM Wiki理念与Google Cloud的OKF开放规范
2. 技术实现:基于LangChain/LangGraph,支持多LLM,为代码库生成结构化Markdown文档
3. 应用价值:不仅维护知识库,还内置Agent模式支持问答,降低知识管理成本

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

看到LangChain AI 刚刚开源了个项目OpenWiki,看它的名称和实现就是把wiki知识库这条路线在实际的应用中落下来,项目介绍:

OpenWiki is a CLI that writes and maintains agent documentation for your codebase.

OpenWiki是一个CLI,用于为你的代码库编写和维护面向Agent的文档。

Github上面的Star数量在快速增长中,当前版本是 v0.0.1,估计还在早期阶段。技术栈为 TypeScript、Ink(React 终端 UI 框架)、LangChain/LangGraph、DeepAgents,内置支持 5 个 LLM Provider,包括OpenRouter。

今年初Karpathy基于自己的AI/AGENT使用经验提出个人LLM Wiki概念:AI不需要每次从原始文档检索,让 Agent增量构建和维护一套持久化的 wiki:一套结构化的、内部互相链接的 Markdown 文件,然后保持持续的更新。随后社区很快出现了围绕这套思路的实现和讨论。

Agent特别擅长一次更新十几数十个文档,并且能厘清文档之间的关系(链接)。

六月份,Google Cloud 发布了 OKF(Open Knowledge Format)v0.1,目标是把这类 LLM wiki 的思路做成一套开放规范。OKF 定义的是一套开放的、厂商中立的最小交换约定:知识以 Markdown 文件目录的形式组织,每个MD概念文件带 YAML frontmatter,文件路径构成概念的ID。它的目标是让不同生产者写出的知识bundle能被不同消费者(人或者Agent)更稳定地应用。

Karpathy 的wiki思路和 OKF 的开放格式规范,是两个背景点。其目标都是给Agent准备"持续化更新的知识文档"这条路线。

我也在之前发布了几篇文章介绍了OKF和WIKI知识库:

谷歌发布OKF(Open Knowledge Format)规范,它与Karpathy的LLM-wiki是什么关系?

图解谷歌OKF(Open Knowledge Format)仓库,理解开放知识格式的落地路径

拆解开源知识库OpenKB:Karpathy的wiki 理念,如何被PageIndex做成无向量知识库

OpenWiki不光是维护Wiki,而且消费Wiki,内置了Agent模式支持问答,实现是基于自家的Agent SDK。

它做了什么?

从项目介绍可以看出OpenWiki落地的不是通用个人知识库,而是"给代码仓库维护 Agent 可读文档"这条路线:

输入一个代码仓库,输出一套结构化 Markdown 文档

生成产物落在仓库的 openwiki/ 目录下,这套文档虽然主要给 Agent 使用,但看项目prompt里的约束要求,它既要对人友好,也要对coding agents 友好。它和 OKF 也是有一点差异:OpenWiki 输出的是仓库内文档,不是严格按 OKF 组织的可交换 knowledge bundle(知识包)。当代码迭代跟新的时候update模式会把 git 变更摘要以及上次更新的元数据一起交给 OpenWiki(内置的内部Agent,下同),再按 prompt 约束做尽量小的增量更新。

OpenWiki 项目结构

OpenWiki 实现了完整的工具链:CLI、内置 Agent、LLM 路由、对话持久化,几乎全套完备,可以独立运行。

CLI工具层是基于 Ink(一个TUI框架)构建的。一个设计细节:init 或 update 命令跑完后会自动退出(shouldAutoExitStartupRun),不需要用户手动 Ctrl+C,让 CLI 同时能当交互式聊天工具,也能当一次性命令用,看来也很适合配合Skill+CLI的模式一起使用。

OpenWiki不只是Wiki文档管理。它的默认模式是聊天:直接运行 openwiki 不带任何参数,打开的是一个交互式问答界面,内置包含了文件系统工具和 shell 后端接入代码仓库,可以随时开启回答。

具体的三种模式的分工:

  • chat
    (默认):交互式问答。OpenWiki 可以读代码、跑 git 命令、搜索文件,但不会主动修改文档。用户明确要求改文档时才动手,也就是说自身就是一个相对完备的Agent。
  • --init
    :首次扫描代码库,从零生成一套结构化Wiki文档
  • --update
    :基于 git 变更证据增量更新已有Wiki文档

如果看 chat 模式的 system prompt:

"This is an interactive chat turn. Answer the user's message directly. Do not create or update OpenWiki documentation unless the user explicitly asks you to modify documentation."

翻译:这是一个交互式聊天轮次。直接回答用户的消息。除非你明确要求你修改文档,否则不要创建或更新OpenWiki文档。

这意味着 OpenWiki 的定位不是"一个能管理文档的纯 CLI",而是一个"懂你代码库的 Agent",Wiki文档管理只是它的能力之一。

CLI生成的wiki文档落在仓库里的 openwiki/ 目录,后续 init、update 或 chat 都把它当作仓库内现成文档来消费。SQLite会把线程状态写到 ~/.openwiki/openwiki.sqlite,它只持久化当前线程的状态(消息历史、工具结果等),每次CLI启动都会启动新的会话ID,也就是说它当前不跨会话。

但我觉得这会不会太重了?大部分情况我们需要的只是一个简单的wiki管理实现。

Agent 运行时用 DeepAgents 组装,DeepAgents 是 LangChain 生态里的高层抽象,把模型、工具、状态管理打包成一个可运行的 Agent(开箱即用的Agent开发框架,对于快速Agent应用开发倒是一个不错的选择)。创建 Agent 的关键代码:

const agent createDeepAgent({  model,  tools: [],  checkpointer,  backendnew LocalShellBackend({    maxOutputBytes100_000,    rootDir: cwd,    timeout120,    virtualModetrue,  }),  systemPromptcreateSystemPrompt(command),});

checkpointer 用 SQLite 持久化线程状态,LocalShellBackend 把文件系统操作限制在目标仓库内(virtualMode: true),Agent 主要通过 DeepAgents 提供的文件系统 / shell 能力读写文件、跑 git 命令。输出通过 LangGraph 的 stream API 流式返回,前端可以实时解析渲染。

LLM 路由支持 5 个 Provider,配置集中在 constants.ts

Provider
封装类
默认模型
OpenRouter
ChatOpenRouter
GLM 5.2
Anthropic
ChatAnthropic
Haiku
OpenAI
ChatOpenAI
GPT 5.4 mini
Baseten
ChatOpenAI(自定义 baseURL)
GLM 5.2
Fireworks
ChatOpenAI(自定义 baseURL)
GLM 5.2

从默认配置看,5 个 Provider 里有 3 个把 GLM 5.2 放在了首位,兜底的 DEFAULT_MODEL_ID 也是 OpenRouter 的 GLM 5.2,看来LangChain还是比较偏爱GLM5.2的。

Wiki管理的Prompt工程

我认为这是Wiki管理最核心的部分,基于OKF或者Karpathy的描述来看,Wiki的管理并不必然需要完整的代码工程,可能一个简单的Skill流程描述+一些简单的脚本就能落地,而且也有很多开源项目这么实现的。系统提示词定义了 Agent 的行为边界:

角色定位:expert technical writer, software architect, and product analyst (资深技术文档撰写者、软件架构师和产品分析师)

证据纪律:每个重要声明必须有源文件、现有文档或 git 历史作为证据。不发明文件、模块、API 或行为。不穷举扫描,用有针对性的发现方式。不读 .env 文件或泄露密钥。

Git 纪律:prompt 明确要求 Agent "use git heavily where it helps explain why code exists, not just what code exists"(在能够帮助解释代码存在原因(而不仅仅是代码存在什么)的地方,大量使用 Git。)。不只是看代码是什么,还要用 git log、git show、git blame 理解重要文件和工作流是怎么演变过来的。重点关注近期提交和高信号历史,不过度追溯。

已有文档纪律:仓库里已有的 README、docs/ 目录、根目录文档文件、runbook、SKILL.md 都被视为主要资料来源。prompt 要求"summarize and link to existing docs when they are still useful instead of duplicating them wholesale"(总结并链接到仍有用的现有文档,而非原样复制。)。如果已有文档和源码或 git 历史矛盾,以当前源码为准,同时指出可能过时的文档。

subagent 分工策略:prompt 鼓励在大或陌生的仓库里默认使用 1-2 个只读 subagent 并行探索不同领域(现有文档、运行时架构、数据层、API 接口等)。subagent 只能读不能写,最终由主 Agent 综合所有发现并写入Wiki文档。

规划纪律:写文档之前,先创建临时的 openwiki/_plan.md,列出要写的页面、证据来源和遗留问题。写完后删除这个规划文件。

文档结构:prompt 只硬性要求 openwiki/quickstart.md 做入口;仓库足够大时,再按主要区块分目录,比如 architecture/、workflows/、operations/ 这类。不允许出现只有一行的空壳页面 —— 内容少就合并到 quickstart。像 OpenWiki 项目自己的这份 wiki,目前就是 architecture/cli/agent/operations/ 各放一篇实质的文档。每个文档要有实际解释价值:这个领域做什么、为什么存在、从哪里开始、需要注意什么、关键源码引用。

自动注入 AGENTS.md:prompt 还要求 Agent 检查仓库根目录的 AGENTS.md 和 CLAUDE.md,补上一个固定的 OpenWiki 引用段落,指向 openwiki/quickstart.md,引导 AI 编程 Agent 在做代码修改时先读 openwiki/。

以上是我们重点需要关注的内容:学习这些Prompt的规则和约束,不需要使用这个cli壳子,可以自己定制自己的Wiki Skill。

增量更新:只改需要改的

增量更新不是让模型在对话里临时自己跑 git diff,而是分两步:宿主进程先收集 git 证据,OpenWiki 拿到证据后再做影响面评估。

第一步:运行时收集 git 证据。在 OpenWiki 启动之前,CLI 先跑一系列 git 命令,把结果组装成一个稳定的上下文块交给 OpenWiki 的内部Agent:

  • git status --short
    :当前工作区状态
  • git rev-parse HEAD
    :当前 commit hash
  • git log <上次gitHead>..HEAD --name-status --oneline
    :上次更新以来的提交和变更文件(如果记录了 gitHead);如果没有 gitHead 但有时间戳,就用 --since 查询;如果都没有,取最近 20 条提交
  • git diff --name-status HEAD
    :未提交的本地变更

那么 OpenWiki 拿到的是一个比较全面的、结构化的 git 变更摘要,不需要自己去猜"上次更新之后改了什么"。

第二步:OpenWiki 做影响面评估。prompt 要求 OpenWiki 在编辑之前先建立映射:

源文件变更 → 受影响的文档页面 → 需要改什么 → 为什么

如果一个页面找不到对应的源码、工作流、产品或已有文档变更,就不能变更。

系统提示词给了明确的预算约束:

  • 少于 5 个源文件的变更:最多更新 1-2 个 wiki 页面
  • 优先保留现有结构和措辞,倾向于"替换一句过时的话"而不是"新增一段"
  • 不做纯格式调整:不重新排列表、不统一空行、不润色措辞
  • 如果 wiki 已经是准确的,可以什么都不改

内容快照防抖:OpenWiki Agent层跑完之后,CLI 层会对 openwiki/ 目录做一次 SHA-256 哈希,和运行前的哈希对比。只有内容真的变了,才写入 .last-update.json(这个文件记录了变更时间戳)。如果 OpenWiki 跑了一圈但文档没有任何变化(比如代码改了但不影响文档),元数据就不会更新。这防止了定时任务反复跑但文档没变时的元数据抖动。

最后

一个小小的思考:这些工作里有多少是必须的?

OpenWiki 自带了完整的 Agent 运行时,但我们常用的是 Codex、Claude Code、OpenCode 这类编程 Agent,它们本身就具备更加完善的 shell 访问能力、文件读写能力和多轮对话能力等更高层的能力。内置Agent运行时有些过重了,或者这本身就是LangChain的一种产品示例

Karpathy 最初的 LLM Wiki 定义更像是一份可以直接复制进 agent 指令的 schema,不一定非要这类全面的独立工具。所以 OpenWiki 中真正有价值的部分是那套 Prompt 工程和增量更新机制

subagent 分工策略、规划纪律、文档结构规范、影响面评估、软预算约束,这些是真正可复用的东西。它们大部分写在 prompt 里,少数保障逻辑比如 git 证据预收集、内容快照防抖、元数据写入则落在运行时。

CLI 和 Agent 运行时不是必需的基础设施。甚至 openwiki --update 这个命令本身也不是必须的:增量更新的逻辑(读 git diff、评估影响面、只改受影响的页面)完全可以写成 prompt 指令,让已有的编程 Agent 自己去执行。你不需要一个专门的 CLI 来触发更新,你只需要告诉 Agent:"检查最近的代码变更,更新 wiki 里受影响的页面。"

如果你已经在用 Claude Code 或 Codex等智能体,把上面的这些策略沉淀为 skill/Agents.md,让当前环境的 Agent 执行,应该可以达到同样的效果。


参考链接

GitHub:https://github.com/langchain-ai/openwiki

      

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅