GitHub 趋势 · 第 68 期
技术书读完就忘?把它蒸馏成 Agent 技能
#GitHub趋势#Agent技能#知识管理
先给判断:book-to-skill 解决的不是「怎么读书」,而是「读过的书怎么还留在工作流里」。它把一份结构化文本拆成一份约 4,000 token 的主索引加若干按需加载的章节文件,让 Agent 每次只读该读的那一章。MIT 许可、3 万 star、只有 17 个 open issue,维护状态很干净。但它自带一条硬红线——生成物是你个人的学习笔记,涉及第三方版权书的技能不能公开分享。
痛点:书的寿命比你的记忆长
买一本技术书,认真读一遍,三个月后你连第 7 章存在过都忘了。
「直接搜 PDF」——你拿到一串页码,不是答案。
「让 Agent 读这本书」——它要么开始幻觉,要么直接承认自己没有这本书的内容。
「边读边做笔记」——最后攒出一个 200 行、再也不会打开的文档。
更深一层的问题在成本结构:即使 Agent 能读 PDF,它每一轮都在重新导航——重取目录、回头翻页、把全部内容重新处理一遍。token 消耗随对话轮数线性上涨,而真正用在答案上的只占很小一部分。
book-to-skill 是什么
virgiliojr94/book-to-skill 是一个 MIT 许可的 Python 工具,定位一句话:把任意技术书、文档目录或一堆资料,转成一个统一的 Agent 技能。仓库 2026 年 5 月创建,遵循开放的 Agent Skills 标准——GitHub Copilot CLI、Amp、Claude Code、Hermes Agent 读的是同一份 SKILL.md 格式。
输入远不止 PDF:EPUB、DOCX、Markdown、HTML、RTF、MOBI / AZW3、TXT 都在支持列表里。作者的措辞是「不止是书」——内部文档、架构决策记录、runbook、品牌与设计规范、论文加自己笔记的合集,凡是「你反复打开、希望自己已经背下来」的文档都算候选。
用法就三步:指向文件,它蒸馏,你的 Agent 按需加载。命令形如 /book-to-skill ./my-book.pdf。
数据上,Trending Python 榜显示 30,230 star(当日 +289),GitHub API 口径为 30,130 star、3,128 fork、17 个 open issue、138 个 watcher,默认分支 master,未归档。
它到底生成了什么
| 文件 | 作用 | 体积 |
|---|---|---|
| SKILL.md | 核心心智模型 + 章节索引 | 约 4,000 token |
| chapters/ch01-*.md ... | 每章一个文件,按需加载 | 每个约 1,000 token |
| glossary.md | 全部关键术语,按字母序排,带章节引用 | 约 1,500 token |
| patterns.md | 所有技术、算法与设计模式 | 约 2,000 token |
| cheatsheet.md | 决策表与速查规则 | 约 1,000 token |
关键在于章节文件是按需加载的:你不问某个话题,它就不占技能预算。
作者给出的量化口径是「比把整本书塞进上下文少 24 倍到 51 倍的 token」——衡量的是回答同一个问题;测试跑在真实书籍上,方法论公开在 docs/performance.md。作者把被省掉的那部分叫 发现循环税:PDF 阅读型 Agent 每一轮都在重取目录、回头翻页、重新处理,所以把结构化成本前置付一次,查询成本才能与答案成正比,而不是与书的厚度成正比。
其余几个设计值得单独看:
- ▪一份技能,多宿主通用:走开放 Agent Skills 标准,跨 Agent 技能目录在 ~/.agents/skills/<slug>/;在 Claude Code 下转换器还会尝试建一个软链,但要读回校验通过才算生效,不通过会在运行报告里写明;Hermes Agent 不扫跨 Agent 根目录,所以落到自己的分类目录下。
- ▪确定性 + 生成式两段式:一半是确定性 Python 提取器(文档 → 干净文本 + 元数据),另一半是规格驱动的生成器(你的 Agent 按 SKILL.md 把文本转成结构化技能)。
- ▪按书型换提取器:开工前它会先问你这本书是技术型还是文字型。技术型上 docling,能保住 Markdown 表格和代码块,代价约 1.5 秒/页;纯文字类用 pdftotext,几乎瞬间完成。
- ▪自带自检:python3 scripts/extract.py --check 一条命令打印出每种格式装了哪个提取器、缺什么、该跑哪条安装命令;tools/validate_skill.py 还能按 claude / copilot / amp 三种宿主规则校验生成的 SKILL.md。
- ▪多源输入与增量更新:文件夹、glob、文件清单都能当输入;除了一次性转换,还有 analyze-only、generate-from-analysis 和 update / fold-in 模式,新资料可以并进已有技能。
上手:README 原命令
装,一条命令走跨 Agent 的技能 CLI;或者手动克隆到技能目录:
# 一条命令,任意宿主,走跨 Agent 的技能 CLI:
npx skills add virgiliojr94/book-to-skill
# 或者手动克隆进技能目录(会注册 /book-to-skill):
git clone https://github.com/virgiliojr94/book-to-skill.git ~/.claude/skills/book-to-skill
# (Copilot CLI: ~/.copilot/skills/ · Amp/跨 Agent: ~/.agents/skills/)
# (Hermes Agent: ${HERMES_HOME:-$HOME/.hermes}/skills/<category>/)
先自检环境,再转第一本书:
python3 scripts/extract.py --check /book-to-skill ./my-book.pdf
扫描版 PDF 是硬限制,得自己先补 OCR——提取器会检查前几页然后立刻停下并解释原因,而不是把整本书跑完再交给你一个空技能:
ocrmypdf input.pdf output.pdf
我的判断:适合谁、不适合谁、坑在哪
适合:手上有电子版技术书、日常已经在 Claude Code / Copilot CLI / Amp 里写代码的人;也适合把公司内部文档、runbook、RFC 折成一个随时可查询的技能。
不适合:只有纸质书、没有电子版的人;只读一遍就够的一次性资料,蒸馏成本大于收益;以及想「让 Agent 替我读完这本书」的人——它产出的是索引与提炼,不是替代阅读。
坑 1 · 版权红线是硬约束:README 专门写了一节。项目本身不附带任何书籍内容——一页都没有,处理也全在本地跑;但它明确写着生成物应当被当作手写学习笔记、仅供个人使用,并且不要分发涉及第三方版权作品的技能,理由是发布或分享一份由受版权保护作品生成的技能,可能侵犯权利人。MIT 许可只覆盖转换器本体,不覆盖你处理的书。想把生成技能推到 GitHub,这一步必须先想清楚。
坑 2 · 本地提取不等于本地推理:提取环节在你机器上,文件不会被这个工具上传;但如果你的 Agent 模型跑在云端,喂进去的正文仍然按那家服务商的正常数据条款走——和任何一条 prompt 没有区别。
坑 3 · 技术书要额外装东西:想保住表格和代码块就得装 docling,代价约 1.5 秒/页;纯文字书用 pdftotext 才是「瞬间」。好在工具缺失时它会直接告诉你该跑哪条命令,不静默降级。
坑 4 · 宿主兼容有细节:Hermes Agent 不扫跨 Agent 根目录,会落到 $HERMES_HOME 下的分类目录;Claude Code 的软链要靠读回校验确认生效。多宿主混用时路径差异得照着文档逐个配。
一句话收尾
book-to-skill 的价值不在「让 AI 读书」,而在把一次性阅读换成一份能被反复调用的结构化索引——24 倍到 51 倍的 token 差距,本质是把每轮都在重复的导航成本提前付掉一次。真正的门槛不在技术,在它划出来的那条线:转换器是 MIT 的,书不是你的。
你手上有没有那种「读完、画了线、然后彻底忘了」的技术书?评论区报个书名。
下期预告:本期月榜与分语言榜终于出现了此前几期都没写过的项目,所以回到单项目精读;下期若新面孔动量更高就继续单项目,若三榜又回到「全部已写」的状态,则转为「Apple Silicon 上跑本地大模型」主题族的横向对比合集。
#GitHub趋势#Agent技能#知识管理
项目地址:github.com/virgiliojr94/book-to-skill(https://github.com/virgiliojr94/book-to-skill)
Star:30,130(GitHub API)/ 30,230(Trending Python 榜,当日 +289)
Fork 3,128 · Open issue 17 · Watcher 138 · 主语言 Python · 默认分支 master · 未归档
许可:MIT(仅覆盖仓库内的转换器与技能定义,不覆盖你处理的任何书籍或文档)
创建 2026-05-01 · 最后推送 2026-09-12
数据来源:GitHub Trending 官方页面(全语言榜 + Python 榜)+ GitHub REST API · 抓取时间 2026-09-13 02:40