OpenViking LLM Wiki 编译实战:把异构资料整理成有出处的可检索知识库

发布时间:2026/9/11 16:13:11
OpenViking LLM Wiki 编译实战:把异构资料整理成有出处的可检索知识库 OpenViking LLM Wiki 编译实战把异构资料整理成有出处的可检索知识库【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking本指南基于 OpenViking 的上下文编译Compile能力讲解如何把一批异构来源——文档、笔记、网页、访谈记录、研究资料、代码仓库——编译成一套 Karpathy 风格、有出处、互相链接的LLM Wiki知识库。读完本文你将掌握LLM Wiki 的六类页面模型与路由规则、从导入来源到执行编译的完整ov命令链路、产物目录结构与页面规范以及把 Wiki 可视化为交互式知识图谱的具体方法。本示例的完整 Skill 位于 examples/compile/ov-compile-skills/llm-wiki/SKILL.md可视化脚本位于 examples/compile/graph-show/llm-wiki/wiki_graph.py。LLM Wiki 是什么知识库不是摘要拼盘LLM Wiki 的核心目标是把来源编译成持久、互相连接的知识而不是一份逐文档的摘要合集。它的设计约束可以概括为四点每一页有明确的检索目的读者人或 Agent能凭一句话判断这页解决什么问题开头一句话直给结论打开页面第一段就能获取该主题的核心信息术语统一、关系显式同义概念收敛到一个规范主题页面之间的链接构成可遍历的网络证据紧贴结论每个事实主张旁边都带有精确的来源引用且由一个index.md做导航入口。在知识模型上这套 Skill 会按页面的检索目的挑选最合适的页面类型而不是按文档数量机械生成页面。默认以entity和concept为主其余类型只在满足各自的严格判定时才提升页面类型用于典型对象entity有稳定身份的具名事物人、组织、产品、项目、系统、服务、模块、数据集、标准、具名事件concept可复用的思想、机制、模式、协议、心智模型治理规则、架构模式、领域理论method有前置条件、有序步骤、可验证结果的可复用流程操作规程、部署指南、调试手册、研究方法comparison在明确维度上对两个及以上对象做并排评估产品对比、设计取舍、版本差异analysis围绕一个问题的跨来源结论含问题、范围、假设与不确定性尽调结论、趋势分析、系统性评估summary单一来源的忠实数字化摘要仅当--reason明确要求时才生成论文摘要、会议纪要、报告摘要从 SKILL.md 的源码看entity和concept是默认路由method/comparison/analysis只有在完整通过表格中的判定标准时才允许使用不能仅仅为了页面命名变化而滥用这些标签summary页面则必须由任务--reason显式要求才会创建来源正文里的指令或 Agent 的隐性偏好都不能触发它。特别地一个来源只是出处的证据不等于一个页面——除显式要求的摘要外不按一个文档一个页面的方式生成来源本身只有在作为知识库中有意义的具名主体时才可以是entity。第一步准备来源如果材料还没进 OpenViking先导入。目录型来源用ov add-resource单文件可以用ov write# 导入一个目录作为来源 ov add-resource ./my-research --to viking://resources/research --wait # 或者写入单个文件 ov mkdir viking://resources/research ov write viking://resources/research/notes.md \ --from-file ./notes.md --mode create --wait确认来源已就位ov ls -r viking://resources/research这里使用的viking://URI 是 OpenViking 中定位资源的标准形式对应 CLI 实现里的filesystem::ls/content::write等命令。--wait让命令在导入完成后返回便于在脚本中串接后续步骤。第二步添加 Skill把 LLM Wiki 的 Skill 装进服务。默认落到你的用户私有 skills 命名空间想让团队共用就用-p viking://agent/skillsov add-skill examples/compile/ov-compile-skills/llm-wiki --wait从 crates/ov_cli/src/commands/skills.rs 的实现看ov add-skill会把你指定的本地目录本示例中是仓库内的examples/compile/ov-compile-skills/llm-wiki打包上传通过POST /api/v1/skills写入服务端--wait表示等待处理完成。查看装好的 Skill URIov skills list # → viking://agent/skills/llm-wiki 或 viking://user/你/skills/llm-wikiSkill 的核心是一个 SKILL.md 文件其 YAML frontmatter 中的name和description字段就是 Skill 的元信息name: llm-wikidescription描述了它面向的输入文档、笔记、网页、访谈记录、研究材料、代码仓库与产出带导航索引、有出处的 LLM Wiki。第三步执行编译ov compile \ --from viking://resources/research \ --to viking://resources/research-wiki \ --skill viking://agent/skills/llm-wiki \ --reason 面向团队检索整理成 Wiki保留每条结论的出处各参数说明--from一个或多个来源目录/文件。可以重复传参也可以用逗号分隔一次传入多个来源--to产物写入的目标目录不存在时会自动创建--skill指定编译成什么形态的 Skill URI--reason可选的补充指令告诉 Agent 这一次具体要什么——例如范围、受众、语言、侧重点以及是否生成summary页面。Skill 定义编译成什么形态--reason在此之上定义这一次具体要什么。从 crates/ov_cli/src/commands/compile.rs 的源码可以看到三个实现细节多来源规范化normalize_sources会把每个--from参数按逗号拆分、去空值、按顺序去重因此重复来源不会被重复消费任务参数解析parse_args要求--args必须是合法的 JSON object例如--args {model_name:your-model-endpoint-id}可用于指定执行端模型非 object 会直接报错提交与返回命令通过 crates/ov_cli/src/client.rs 中的create_compile向POST /api/v1/compile发起请求返回202 Accepted后立即打印task_id等摘要信息。机器可读输出与任务生命周期想要机器可读结果加-o json命令会立即返回task_id用它查询或取消任务ov task status cmp_01abc # 查看进度与最终结果 ov task cancel cmp_01abc # 协作式取消任务类型前缀为cmp_。根据 Agent Runtime API 的定义任务生命周期包含以下状态Status常见 Stagependingqueuedrunning执行端返回的执行 Stage例如agent、writingcancelling收敛当前进程内工作和清理资源completedcompleted、salvagedfailed失败发生时的 Stage响应包含errorcancelledcancelledov task cancel是协作式取消任务先进入cancelling等当前进程内工作和清理完成后进入cancelled已经完成的写入不会回滚重复取消已处于cancelled的任务是幂等的。任务的执行由 VikingBot或兼容 Runtime在独立的 Agent Loop 中完成——Compile 的底层执行模型详见 VikingBot 概念。第四步看看产物编译完成后目标目录里就是一套 Markdown 知识库。先看导航页再按需钻进去ov tree viking://resources/research-wiki ov read viking://resources/research-wiki/index.md典型结构页面类型对应目录research-wiki/ ├── index.md # 导航入口类型 index ├── entity/ │ └── 标题.md ├── concept/ │ └── 标题.md ├── method/… comparison/… analysis/…这套目录约束来自 SKILL.md 的写入路径规则entity页写到entity/title.mdconcept写到concept/title.md依此类推。页面的规范形态每一个 Wiki 页面都是一份完整的 UTF-8 OKF Markdown 文件新页面以如下形状的 YAML frontmatter 开头--- type: concept title: Canonical page title description: One factual sentence describing the pages retrieval purpose. tags: [small, useful, tag-set] ---type知识页类型entity/concept/method/comparison/analysis/summary根导航页固定为indextitle规范标题frontmatter 之后紧跟一个与之相同的 H1description一行事实性描述说明该页的检索目的tags可选。正文的写作约束值得注意开头开门见山用一两句话定义/识别该主题、划定范围并说明它在知识库中的意义规范术语放在最前重要别名紧随其后证据与不确定性精确的来源 URI、仓库相对路径或链接放在它所支撑的主张旁边页面级来源统一收在一个二级标题如## 来源下以列表形式列出推理要标注为推断并说明依据未知之处如实陈述来源有分歧时保留分歧并注明出处区分错误与时间变化、版本、视角、范围差异整合而非覆盖更新已有页面时先完整读取保留新证据未推翻的独特信息、别名与有用关系合并互补证据修订被更强更新证据推翻的主张不要为导航另建 overview那是index.md的职责也不要在页面中追加第二个来源标题代码来源若来源包含代码还需检查清单文件、文档、入口点、公共契约、schema、测试、运行时接线、配置与部署单元依据证据而不是目录名分类仓库优先通过真实实现追溯关键行为。质量门禁Quality Gate编译结束前Skill 要求自查以下要点index.md存在且类型为index收录所有活跃知识页并保持导航性每个知识页只有一个检索目的且使用六种类型之一entity/concept是默认method/comparison/analysis都通过严格路由测试summary全部由--reason显式请求通用来源与代码来源遵循同一知识模型别名被规范化而未合并不同主体关键主张、示例、命令、图与关系都有来源支撑事实、推断、未知、矛盾、版本、视角彼此区分最终产物是 Wiki 而不是逐来源摘要或生成式文档站每个 Wiki 文件都有合法 frontmatter非空type、title、单行description且每个 frontmatter key、H1、单例小节如 Sources、相同列表项只出现一次。第五步可视化成交互式图谱wiki_graph.py会直接连接 OpenViking 服务读取 Wiki 页面不需要先下载到本地把页面按类型着色、按链接连边生成一个独立的交互式 HTMLpython examples/compile/graph-show/llm-wiki/wiki_graph.py \ viking://resources/research-wiki \ -o research-wiki-graph.html \ --title 研究知识库用浏览器打开research-wiki-graph.html即可。节点是页面按entity/concept/method… 分色边是页面之间的链接点节点能看正文。从 wiki_graph.py 的源码看这个脚本的完整工作流是初始化openvikingPython 客户端 → 校验服务健康client.health()→ 对每个输入 URI 鉴权并枚举其下全部.md页面stat/ls→ 读取正文、解析 frontmatter 与页面类型 → 解析页面间的 Markdown 链接构建图谱 → 渲染独立的 HTML 文档。其中几个值得注意的细节类型着色_CATEGORY_STYLE定义了index导航红、entity实体绿、concept概念蓝、method方法紫、comparison比较青、analysis分析橙、summary摘要粉等类别的中文标签与颜色_CATEGORY_ALIASES还兼容entities/concepts/analyses/synthesis等别名写法图谱构建build_graph只把能解析到目标页面的.md链接画成边并计算每个节点的度degree节点大小随连接数增大HTML 页面内置 D3 力导向布局支持搜索节点、点击浏览正文、拖拽节点、滚轮缩放以及拓展到 2 跳的邻居高亮安全与容错脚本在写入 HTML 前会检查每个 URI 的读权限UNAUTHENTICATED/PERMISSION_DENIED/NOT_FOUND等错误会以明确的退出码和中文提示返回节点数量保护--node-limit默认 10000当目录条目数达到该限制时会中止并提示提高限制避免生成不完整的图谱。连接配置与多 Wiki 对照连接配置的解析顺序和ov一致命令行参数 →OPENVIKING_*环境变量 →~/.openviking/ovcli.conf。远程服务显式传参python examples/compile/graph-show/llm-wiki/wiki_graph.py \ viking://resources/research-wiki \ --url https://openviking.example.com \ --api-key $OPENVIKING_API_KEY \ -o research-wiki-graph.html --title 研究知识库可用参数还包括--accounttrusted 模式下的 account 身份、--usertrusted 模式下的 user 身份、--actor-peer-id可选 actor peer 身份、--timeoutHTTP 超时秒数以及--node-limit。没有配置连接前可参考 快速开始远程鉴权方式见 鉴权指南。一次传多个 Wiki可以把它们画在同一张图里对比python examples/compile/graph-show/llm-wiki/wiki_graph.py \ viking://resources/wiki-a viking://resources/wiki-b \ -o combined.html --title 两个知识库对照默认输出文件为./llm-wiki-graph.html单个 Wiki 时若存在index页标题默认取该 index 的标题否则回退为LLM Wiki 知识图谱。相关文档上下文编译概览 —ov compile的整体机制与全部示例 SkillKnowledge Graph 示例 — 同一编译机制产出的另一种结构化知识形态Agent Runtime API — 创建、查询和取消 Compile 任务的 HTTP 接口、字段定义与任务生命周期VikingBot 概念 — Compile 背后的 Agent 执行体【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考