夜雨聆风学习资料网

ARTICLE · 989185

文档老过时?OpenWiki 让 Agent 替你写,代码改了它自己跟着改

文档老过时?OpenWiki 让 Agent 替你写,代码改了它自己跟着改

代码改了一版又一版,文档还停在第一版。新来的人问接口怎么调,没人说得清,最后只能去翻源码。OpenWiki 的解法:Agent 读仓库源码→生成结构化 wiki→代码变了只重写受影响的页面→人只管审。

OpenWiki 做了什么

OpenWiki 是 LangChain 出品的 Node.js CLI(MIT 开源,GitHub 1.58 万星),基于 LangChain 的 Deep Agents(多步骤 Agent 编排,https://github.com/langchain-ai/deepagentsjs)。它做的事情用一句话讲:读取仓库源码,Agent[1] 自动生成并维护 Markdown wiki,代码变了文档跟着变。

两种模式:

模式
文档来源
写到哪里
启动命令
code
(默认)
当前仓库源码
仓库 openwiki/
openwiki --init
personal
连接的知识源(Notion/Gmail/Slack 等)
~/.openwiki/wikiopenwiki personal --init

本文重点讲 code 模式——团队场景下用得最多。

首次 openwiki --init 后,仓库里多出这些文件:

openwiki/ — 生成的 Markdown wiki,按概念组织、互相链接
openwiki/.claims/ — Grounded Claims 侧车文件(下一节详细说明)
openwiki/INSTRUCTIONS.md — 你写的文档 brief,OpenWiki 不会覆写
AGENTS.md / CLAUDE.md — 仓库根目录,OpenWiki 维护自己的 block,让编程 Agent 找到 wiki 入口
.last-update.json — 上次成功运行时间

和"手动写文档 + AI 润色"的本质区别:代码是事实的来源,文档是代码的忠实映射。wiki 正文不需要人写,Agent 自己读代码、自己生成、自己维护。

国内可用路径:OpenWiki 默认用 OpenAI API(gpt-5.6-terra),但支持 13 个模型提供商。国内开发者可以在 --init 时选对应提供商:

Ollama 本地模型:选 OpenAI Compatible,Base URL 指向本地 Ollama 端点
国内代理中转:同上,Base URL 指向代理网关
AWS Bedrock:IAM 凭据 + DeepSeek 模型
Gemini Enterprise:Google ADC + Qwen 模型

选好提供商后配置一次,后续运行自动复用。

Grounded Claims:行号级追踪,替代页面粒度的"最后更新时间"

传统文档工具只记录"这个页面上次是什么时候生成的"。OpenWiki 追踪的是文档里每一条关键事实——函数的行为、模块的职责、数据流的走向——精确到源码的哪一行。这个机制叫 Grounded Claims。

每个 Claim 的结构:

// 简化示意,非实际输出
{
id: "claim-abc123",
proposition: "AuthMiddleware returns 401 on failure",
evidence: "repo://src/middleware/auth.ts#L40-L82",
evidence_version: "git-sha-of-that-commit"
}

Claims 覆盖的内容:函数/模块的行为和职责、架构关系和数据流、不变量(系统必须始终满足的约束)和失败语义(出错时的行为)、配置要求和安全边界。只有"未来的 Agent 可能依赖的关键事实"才会被追踪,普通描述不会变成 Claim。

openwiki --update 的执行顺序:

1
检查每个 Claim 的 evidence(精确到行号)是否变化
2
如果 evidence 变了 → 该页面需要重写,不管代码量改变多少
3
如果 evidence 没变 → 页面内容可能不需要更新
4
页面工作完成后,Claims 原子性地持久化

这解决了一个实际问题:代码量改变了但文档还对,或者代码量没变但关键事实变了。行号级别的 evidence 追踪让更新决策更精确,避免每次全量重新生成。

页面完成是持久化边界。OpenWiki 在持久化 Claims、同步页面版本、完成整体验证之后才标记该页完成。最终确认(即所有页面完成后的整仓验证)还需要再跑一轮全量验证,验证通过后才删除运行状态文件。

编程 Agent 集成:让 Claude Code 来写文档

OpenWiki 支持在 Claude Code、Codex、OpenCode、Cursor 内部直接运行。此时编程 Agent 做仓库研究和写作,OpenWiki 管理 Claims 生命周期和持久化。

一行安装:

openwiki integrations install claude
openwiki integrations install codex
openwiki integrations install opencode
openwiki integrations install cursor

安装后重启编程 Agent,在仓库里直接说:

Initializethis repository's OpenWiki from the current source and tests.

更新已有 wiki:

Updatethis repository's OpenWiki for changes since its last successful run.

分工明确:编程 Agent 有完整的仓库访问权,负责研究源码、规划页面、逐页写作;OpenWiki 负责管理 Claims 的创建、更新、保留和撤销,以及页面持久化和验证。底层五步操作——openwiki_begin、submit_plan、next_page、submit_page、openwiki_finish——由 OpenWiki 暴露给编程 Agent,两端的职责完全分开。

免去额外配置:不需要单独配 OpenWiki 的 API Key。编程 Agent 用自己已认证的模型 session,OpenWiki 只管文档生命周期。

实际效果:v0.3 重写 prompt 后成功率从 35% 提升到 45%(+28.57%,n=2,样本量小仅反映趋势方向),编程 Agent 集成写出的文档与原生生成质量对齐。

CI 自动更新:文档 PR 自动开,人只管审

OpenWiki 提供三套 CI 模板,都在仓库 examples/ 目录下:

GitHub Actions:对应平台的 yml 模板
GitLab CI:对应平台的 yml 模板
Bitbucket Pipelines:对应平台的 yml 模板

具体文件名以仓库 examples/ 目录为准。

自动化流程:定时检测变更 → 更新 wiki → 自动开文档 PR → 人审完合并。不直接合并,保留人工审查。

两个重要细节:

no-op 运行零开销。代码没变时只更新 .last-update.json,不碰页面,不发 PR。

可恢复架构。生成过程按有状态的页面队列推进,每页完成后独立持久化。openwiki/.run.json 记录运行断点,中断后重跑从断点续跑,不重复已完成页面。但要注意:CI 临时环境(每次全新 checkout)失败后必须从头开始,除非 workspace 做了持久化。

国内 CI 适配:官方模板覆盖 GitHub/GitLab/Bitbucket;国内其他 CI 平台需自行编写 workflow,核心命令仍是 openwiki --update。

竞品对比:Agent 写 vs 人写 vs AI 辅写

先按核心思路分类,再同类对比。

Agent 主导型:OpenWiki — Agent 全程生成和维护,人只负责审查。MIT 开源,免费
AI 辅写型:Mintlify(AI 辅助写段落+润色,部分开源,有付费层)、Swimm(AI 从注释/PR 提取补文档,不开源)
手动型:GitBook(AI 仅改措辞,人不写就没有,不开源,有付费层)

同类对阵(Agent 主导 vs AI 辅写):

维度
OpenWiki
Mintlify
Swimm
增量更新
Grounded Claims 精准定位到行
手动
diff 建议补文档
Agent 可读性
专为 Agent 设计(AGENTS.md/CLAUDE.md)
不面向 Agent
不面向 Agent
输出格式
OKF(Google Open Knowledge Format)v0.2 + Markdown
MDX
Markdown
编程 Agent 集成
Codex/Claude Code/OpenCode/Cursor
无
无
价格
MIT 免费
有付费层
不开源

异类互补说明:Mintlify 做 API 文档站的阅读体验和交互式 playground 比较好,OpenWiki 做代码仓库文档自动化比较好,两个互相补充而非互相替代。已有 Mintlify 做 API 文档站的团队,可以用 OpenWiki 补上代码仓库内部文档这块短板。

可视化:节点图 + Markdown 阅读器

openwiki visualize

本地启动一个服务(127.0.0.1,默认 4321 端口),浏览器打开交互式节点图 + Markdown 阅读器并排。节点是 wiki 页面,边是页面间的链接,点击节点在右侧读对应内容。编辑 wiki 文件后自动刷新。

导出静态站点:

openwiki visualize openwiki --export docs/openwiki-visualizer

产出 index.html + client.js + graph.json,直接部署到 GitHub Pages、MkDocs 或任何静态托管。

现在的边界

大型单体项目首次生成仍在数分钟级别,建议先在中小型仓库试跑
注释语言影响解析精度:英文注释解析最准,中英混杂的 docstring 精度会下降,需要手动补元数据
大 monorepo 全仓库 dump token 预算压力大,建议用 .openwikiignore 限制源集或增量运行
每个 commit 触发全量刷新开销大,建议限制源集或增量运行
编程 Agent 集成暂仅 code 模式,personal 模式暂不支持在编程 Agent 内运行
connector 上下文(含 LangSmith)在编程 Agent 集成中暂不可用
版本 v0.4.3(截至 2026-08-29),API 未完全稳定

相关学习资料