用途
openwiki 用于为代码仓库构建并维护一套分类清晰、页面互链的 Markdown wiki。模型读取源码后先规划大纲,再按主题逐页撰写,并在页面中标注 file citations(文件路径与行号)。当仓库发生变化时,它可依据 git diff 刷新受影响的页面。
适用场景包括:
- 希望获得一个可导航、且内容基于真实源码(带 path:line 引用)的仓库说明 wiki;
- 智能体需要超出单个 instructions 文件范围的持久仓库上下文;
- 希望 wiki 随仓库持续变化而保持更新。
主要能力
- 生成:
openwiki::generate { repo_url, model? }启动 wiki 构建,返回{ wiki_id, status },随后轮询openwiki::status。 - 查看:
openwiki::status { id }获取生成进度;openwiki::wikis列出已生成的 wiki;openwiki::wiki { id }查看元数据;openwiki::pages { id }获取页面索引;openwiki::page { id, slug }获取单页 Markdown 与元数据。 - 检索:
openwiki::search { id, q }在指定 wiki 内做关键词搜索。 - 刷新:
openwiki::refresh { id }执行 git pull 并重新生成发生变更的页面。 - 调度:
openwiki::set-schedule { id, schedule }设置自动刷新频率,可选off | 3h | 6h | 12h | daily | weekly或 cron 字符串。 - 删除:
openwiki::delete { id }删除 wiki 及其全部页面。
上述操作同时通过 /openwiki/api/* 以 HTTP 形式暴露,/openwiki 提供浏览器 UI。
使用方式
- 提供公开 git 仓库地址,调用
openwiki::generate启动生成,并按需指定模型。 - 轮询
openwiki::status查看进度,完成后通过openwiki::pages与openwiki::page浏览页面内容。 - 需要定时保持更新时,用
openwiki::set-schedule为单个 wiki 设置刷新频率,或通过 UI 控件设置。
自动化刷新
每个设置了自动刷新频率的 wiki 都会拥有独立的 cron trigger;触发时,openwiki::cron::refresh-due 会对所有已到刷新间隔的 wiki 执行增量刷新。刷新频率按 wiki 单独设置(openwiki::set-schedule 或 UI 控件),新 wiki 的默认频率来自 config worker 的 refresh_default。默认不调度(off)。当 openwiki 配置项变化时,openwiki::on-config-change 会重新加载默认模型、page-writer 并发数与默认刷新频率。
限制
- 只读取与克隆公开 git 仓库,不修改仓库本身。
- 生成质量取决于所路由的模型;它调用
router::complete,provider 与凭据位于 llm-router 配置中,而非本工具内。 - 不是聊天机器人:它维护结构化页面,而非回答自由形式问题。
- 克隆的仓库是本地磁盘上的临时工作副本,wiki 本身存放在 state 中。