乐于分享
好东西不私藏

做了个本地文档知识库AI问答工具

做了个本地文档知识库AI问答工具

各个平台都开始下架coding plan了,都往token plan的套餐方式转变了,不知是算力短缺还是成本太高。对用户来说token plan确实远不如coding plan划算,我之前抢不到coding plan套餐,就买了一个月腾讯云的token plan,消耗太快了,感觉没怎么用额度就没了。看了一下记录,在claude中对话高的时候每轮都是十几万token,用/clear清理后会好很多。
字节方舟的coding plan支持glm5.1了,下手了包月套餐,但是使用下来有点难受,因为每次用个半小时左右就会提示达到5小时限额,网上也有很多人反映这个问题。看了一下官方的说法 — GLM-5.1 模型抵扣系数较高,额度消耗较快,推荐用于重难点复杂问题,日常使用建议切换其他模型。
就这现在也需要抢了
最近的hermes比较火,本来想体验一下的,结果发现最近网络限制升级了,暂时没安装成功,后面再试吧。
——————————————————————————
分享一下最近做的一个工具 — 本地文档知识库 AI 问答工具。
先上Github链接:https://github.com/kainan-tek/knowledge
说一下背景吧,工作中有时候需要在很多文档中查找资料,而且很多都是英文文档,可能还找不到是哪份文档,在文档中哪个地方,所以我就想做一个类似RAG的工具,但是更简单轻量,不需要复杂的部署,于是就做了这个工具,实现上是skill + claude code的Slash Commands 方式
一开始是基于特定的一部分PDF技术文档做的,完成后我想能不能搞成一个通用的工具,对任何PDF文档都可用,于是又重新实现了一遍,现在用起来感觉还可以,后面会根据使用情况进行优化,如果时间充裕的话也会看看能不能加入word文档的支持。
使用效果如下
安装使用介绍懒得写了,直接贴一下readme文档吧。

Knowledge Skill

中文文档 | English

PDF 本地技术文档知识库 AI 问答工具。通过两级索引定位到具体章节,AI 直接读最相关页面并回答问题,避免全文阅读,节省 token 消耗。

前置条件

需要 Claude Code:在 knowledge/ 目录下启动 Claude Code 才能使用 /knowledge 命令。

使用前需要安装 PDF 工具(任选其一):

工具
安装方式
说明
pdfplumber
pip install pdfplumber
推荐,TOC 提取效果最好
pypdf
pip install pypdf
备选
Poppler
下载
提供 pdftotext/pdftoppm

首次使用 /knowledge index 时会自动检测可用工具。如未安装任何工具,会提示并停止。

快速开始(新项目)

  1. 将 knowledge/ 目录放置到任意位置
  2. cd knowledge/
     并在此目录启动 Claude Code
  3. 运行 /knowledge init,按提示生成配置文件(设置 doc_dirs 指向文档目录,默认 ../
  4. 运行 /knowledge index,建立索引
  5. 用 /knowledge <问题> 查询

命令一览

命令
用途
/knowledge init
初始化项目配置(新项目首次使用)
/knowledge index
建立或更新全部索引
/knowledge index <文件名>
只索引指定文档(支持部分匹配)
/knowledge reindex <文件名>
重新索引指定文档
/knowledge status
查看索引健康状态
/knowledge <问题>
查询文档内容

配置说明

项目配置文件位于当前工作目录下的 knowledge-config.yaml,主要字段:

字段
说明
默认值
name
项目名称
description
项目描述
doc_dirs
文档扫描目录列表(相对于工作目录)
["../"]
languages
主题标签语言
[en, zh]
doc_id_pattern
文档 ID 提取正则(需包含捕获组,用于子索引命名和去重分组)
dedup.enabled
是否启用重复文档检测
false
dedup.revision_pattern
版本标记提取正则(仅匹配文件名,不含路径)
dedup.revision_order
版本排序方式(alphabetical 或 none
"none"
index_root
索引文件根目录
"index/"
tmp_dir
临时文件目录(Unicode 文件名处理时使用)
"tmp/"

详细配置说明见 KNOWLEDGE-CONFIG-SCHEMA.md。

输出示例

/knowledge init

Project name [my-project]: 8295_qcomProject description: SA8295 AudioReach PDF technical documentsDocument directories (doc_dirs) ["../"]:Config written to knowledge-config.yamlRun /knowledge index to start indexing — it will auto-detect document ID patterns and suggest dedup settings.

/knowledge index

Tool detected: pdfplumberScanning PDFs in ["../"] ... 43 files foundComparing with main index... 42 new/modified, 1 unchangedIndexing 80-VN500-7_AudioReach LA Architecture.pdf...  TOC: 8 chapters extracted  Sub index written: index/80-VN500-7.yaml  Main index updated... (处理其余文件)Duplicate detection:  80-PM164-53 → superseded by 80-PM164-53_REV_AA  80-PM164-54 → superseded by 80-PM164-54_REV_ABDone: 43 indexed, 4 superseded, 0 errors

注意: 大量 PDF 全量索引需要较长时间,消耗较多 token。如果中途断开,已完成的文档索引会保留,下次执行会跳过(增量索引)。

/knowledge index <文件名>

Matching "VN500-7"... found: 80-VN500-7_AudioReach LA Architecture.pdfIndexing...  TOC: 8 chapters extracted  Sub index written: index/80-VN500-7.yaml  Main index updatedDone

如果部分匹配到多个文件,会列出让你选择。

/knowledge reindex <文件名>

Matching "VN500-7"... found: 80-VN500-7_AudioReach LA Architecture.pdfRe-indexing...  TOC: 8 chapters extracted  Sub index written: index/80-VN500-7.yaml  Main index updatedDone

/knowledge status

Knowledge Base Status (8295_qcom)=====================Indexed: 1/43 PDFsIndexed documents:  80-VN500-6  index_status: completeUnindexed PDFs (42):  80-VN500-3_AudioReach Signal Processing.pdf  ...Superseded: 0Errors: 0Orphan sub-index files: 0Summary: 1/43 indexed, 0 incomplete/error, 0 superseded, 0 orphan files

/knowledge <问题>

用自然语言提问,自动定位到相关文档的章节并基于原文回答。

常见问题

Q: 如何在新项目中使用?

将 knowledge/ 目录放置到任意位置,cd knowledge/,启动 Claude Code,然后运行 /knowledge init 并设置 doc_dirs 指向文档目录。

Q: 提示 “Config not found” 怎么办?

运行 /knowledge init 生成配置文件。

Q: 提示 “No PDF tool found” 怎么办?

安装任一工具即可:

pip install pdfplumber

Q: 索引过程中断了怎么办?

已完成的索引会保留。直接重新执行 /knowledge index,已索引且未修改的文件会自动跳过。

Q: 查询结果不准或没找到?

  • 尝试用更具体的技术术语
  • 如果索引不完整,先执行 /knowledge index 补全
  • 执行 /knowledge status 检查索引健康状态

更多文档

  • 设计文档 — 架构设计和决策说明
  • 配置 Schema — 配置字段详细定义