文档解析(Parser SKILL)
一句话讲清楚
任何文件进了知识库,第一件事就是被一个"解析器"读懂、切块、提取元数据。
之前这一步是写死在平台代码里的——14 种文件类型用 if-elif 写死,新增一种格式得改源码。
现在不一样了:解析器是可插拔的 SKILL。平台预装了一批,客户也可以自己写一个装上来,地位完全平等。
它解决你的什么问题
| 你之前可能遇到的痛点 | 现在怎么解 |
|---|---|
| 专利图、CAD 图纸、工程截图 上传后只能当二进制存着,搜不到 | 写一个针对自家图纸格式的 parser SKILL,把图里的关键文字、零件号抽出来,自动建索引 |
| 专属合同模板 / 工单 / 报告 切块切得很离谱,关键条款被截断 | 写一个"按章节锚点切"的索引模板 SKILL,按你的文档结构定制切块策略 |
| 一份 PDF 里既有正文、又有原理图、又有数据表,全部当文字处理导致图片信息丢失 | VLM 提示词包是 SKILL —— 不同场景(电路图/流程图/工业图)可以用不同提示词去识别 |
| 飞书文档、SCM 仓库里的代码、外部 webhook 推送的内容进不来知识库 | 写一个"数据源 SKILL"接你的飞书空间 / GitHub 仓库,自动拉取入库 |
| 想换一种分块策略,但不会改平台代码 | fork 内置 SKILL,改两个 hook 函数或几行 yaml 就行 |
三个 Registry:平台启动时把 SKILL 全装上
平台启动时扫一遍 builtin/ 和已安装 SKILL 的清单文件(manifest),按声明把解析器、数据源、VLM 提示词包全部装进对应的 Registry。
新增一种 parser,不需要改平台一行代码、不需要重启服务——上传 SKILL 包就行。
客户能怎么扩展(三档难度)
| 谁来做 | 怎么做 | 产出 |
|---|---|---|
| 会写代码的工程师 | 用我们发布的开发包写一个完整 CLI,加一份 manifest | 独立 SKILL 包,发到 marketplace 或自家私部 |
| 会写脚本的工程师 | fork 一个最相近的内置 SKILL,改其中两个 hook 函数 | 修改后的 SKILL |
| 只会改配置的运维 | fork 内置 SKILL,改一份 values.yaml(chunk 大小、分隔符、VLM 开关等) | 配置覆盖包 |
重型用户不必从零开始。我们提供官方开发包做脚手架,把繁琐的命令行参数解析、错误处理、日志格式等模板代码都包好了,你只要专注"读你的文件、产出 chunk"这一件事。
三个行业的实际用法
专利代理 / IP 团队(xIPnex 场景)
- 专利交底书 SKILL:抽取技术方案章节、权利要求草案、附图说明,按"权利要求 → 实施例 → 附图"语义切块
- 审查意见通知书 SKILL:把审查员的意见和涉及的专利文件章节自动建立追溯关系
- 图纸标号 OCR 提示词包:附图里的零件标号识别用专门的 VLM 提示词,避免被当普通图片处理
汽车研发 / OEM / Tier1(auto 场景)
- DOORS 需求 SKILL:直接对接 DOORS Next 的 ReqIF 导出,按 module 拆 chunk,保留追溯属性
- AUTOSAR ARXML SKILL:按 module/component 切块,把 SWC、port、interface 当独立可检索单元
- MISRA 报告 SKILL:扫描 MISRA-C 违规报告,自动建立"代码行 ↔ 规则号 ↔ 严重度"映射,便于代码审核引用
智能制造 / 工厂(mfg 场景)
- CAD 图纸 SKILL(DWG/STEP):调用图纸解析工具,把零件号、装配关系、关键尺寸抽出来变成可搜索结构
- 工单 / 工艺卡 SKILL:按工序拆 chunk,提取工时、设备、物料字段
- 客户报价单 SKILL:按"项目项 / 单价 / 数量 / 总价"结构化提取,方便后续 LLM 算总价、查历史报价
代码也是"文档":code-aware parser
代码进知识库不是当文本切几下就完事——它有结构。平台内置的 code-aware parser(M5 已上线)做的是真正按代码语义切:
| 平台抽出来的字段 | 用来干什么 |
|---|---|
outline_path(如 pkg.module.Class.method) | 检索时直接看到"这段代码在哪个类/方法里" |
function_decls / class_decls / import_decls | "找定义""找类层级""看 import 关系"全靠它 |
references(含 resolved / unresolved 标记) | "这个符号被谁调用了"——内部解析的就给 resolved,跨编译单元的标 unresolved(重索引档去补全) |
siblings_signatures | 给 AI 看"同一个类里其他方法长啥样",写代码时能保持风格一致 |
当前内置 8 类:Python / Java / Kotlin / Go / TypeScript / JavaScript / C·C++ / Rust 都开 L3(AST 切片)+ L4(符号字段);audit 规则(L5)覆盖更广,连 Scala / Ruby / PHP / Swift / Dart / Lua / C# / Elixir 都能跑——完整 语言 × 索引层 矩阵见 代码索引 · 支持的代码类型。
控制台里在哪儿选 code-aware
进入任一知识库 → 左侧 配置 Tab → 切片方法 下拉框里选 code-aware,再到下方 代码索引档位 选「轻 / 重」。

字段对应关系、
parser_config.index_tier等更细节的说明走另一篇:代码索引 · 控制台在哪儿改。
想给某个语言开 L3/L4 切片,用 parser-sdk 半天就能补;想开 L6 SCIP(跨编译单元的精确导航)联系
info@nox-lumen.com评估。
跟代码索引三档怎么衔接
切块切得好不好,直接决定代码索引三档里"轻索引能不能秒回引用关系"。code-aware parser 是这条链路的入口质量。
自定义代码 parser 的典型场景
| 场景 | 为什么要自己写 |
|---|---|
| 自家 DSL(工厂的 G-code、专利的 ChemDraw 脚本、保险的规则脚本) | tree-sitter 没现成语法包,自己接一个 |
| 私有协议描述文件(IDL / Protobuf 变体 / 自家 ARXML 子集) | 内置的不识别你的 schema |
| 混合文档(Jupyter Notebook、文学化编程) | 既有代码又有 markdown,按你团队约定切 |
路径:fork 内置 code-aware,替换 tree-sitter 语法 + 改两个 hook 函数(extract_symbols、extract_references),其他逻辑(chunk 落库、字段映射)平台都帮你扛了。
现在已经稳定的内置解析能力
| 类别 | 内置 SKILL | 能处理的文件 |
|---|---|---|
| 通用文档 | manual / naive / paper | PDF、DOC、PPT、Markdown |
| 法规 / 规范 | laws | 按"条款 / 章 / 节"切块 |
| 表格 | table | Excel / CSV / HTML 表 |
| 简历 | resume | 分块识别教育、工作、技能 |
| 图片 | picture + VLM 提示词包 | JPG / PNG / 截图 / 流程图 |
| 代码 | code-aware(M4 已上线) | Python / Java / C++ / Kotlin / Go ... 按 AST 切块,识别函数 / 类 / import |
入门怎么走
- 了解整体:先读 SKILL 是什么 这一页,知道平台所有"可插拔能力"都是 SKILL
- 试试看:第一个自定义 SKILL 教程会带你从零跑通一个最小 parser
- 要参考:内置 SKILL 仓库 已经开源——直接 fork 最近的一个改
相关概念
- SKILL 系统总览
- 代码检索能力 — 解析侧产出的代码符号表,是检索侧的输入
- 自定义 SKILL 教程