reading-capability-coach(阅读能力对标教练 · 闭环编排器)
定位
书架 7 维能力分是理想矩阵(应然),每读完一本书的测评分是实测(实然)。
本 skill 编排完整闭环,数据/计算全部下沉本地脚本(零 token),LLM 只做三件事:
① 生成测评题 ② 写深读建议/差距解读 ③ 按新环境重算 target。
源头书架:与「微信读书助手」skill 的关系(关键架构)
- 上游数据源 = 微信读书助手 skill 的
/shelf/sync接口(返回书架 JSON:bookId/书名/作者/分类/deepLink,含 albums 有声书)。 - 交接物 =
weread_shelf.html:由「微信读书助手」skill 内置的gen_shelf_html.py渲染——它读你的策展配置curation.json(每本书归哪类、7 维理想分、推荐语)+ 拉实时/shelf/sync,输出这份 HTML 快照。你维护curation.json即可,不必手改 HTML(本次附带的 199 本 + 7 维矩阵即首版种子反推所得)。 - shelf_parser 只消费这个 HTML,不直连微信读书接口——这是有意为之:14 分类归并、维度对标、target 设定是你的战略输入,必须人来做,不能让接口自动决定"读什么、练什么"。
- 第二轮怎么开始:评估完一轮后,你按新目标/环境更新
curation.json(给新书定分类、写推荐语、调 7 维 target)→ 在微信读书助手 skill 跑python gen_shelf_html.py重新生成 weread_shelf.html → 回本 skill 跑cli.py parse [新HTML路径]重建 shelf.json → 闭环进入新一轮(实测分保留在 scores.jsonl,跨轮看趋势)。实时书架的新增/移除会由生成器自动报告。 - ⚠ schema 约定:精装修版书卡作者=
.ba、推荐语=.br、简介=.bi;shelf_parser 已兼容(作者优先.ba)。若你以后换生成模板,保持这三者类名即无缝解析。
运行环境(Windows 本机,已验证)
PY="C:/ProgramData/WorkBuddy/users/1805ac3b/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
cd <本skill>/scripts # C:\ProgramData\WorkBuddy\users\1805ac3b\.workbuddy\skills\reading-capability-coach\scripts
"$PY" cli.py <子命令>
依赖 bs4 + matplotlib 已在该 venv 中。所有命令必须 cd 到 scripts/ 再跑(数据文件按脚本所在目录定位)。
9 环闭环 ↔ 命令映射(全部已实现并验证)
| # | 环节 | 执行方式 | 命令 |
|---|---|---|---|
| 1 | 书架 HTML → 结构化 | 本地 | cli.py parse [HTML路径](HTML 由微信读书助手 skill 的 gen_shelf_html.py 生成,详见其 SKILL.md;不传路径默认读 scripts/../weread_shelf.html) |
| 2 | 7 维理想矩阵 | 已在 shelf.json | —(示例 8 本 + 7维 target,替换为你的书架) |
| 3 | 读完·出测验 | 本地组prompt + LLM出题 | cli.py quiz build --title "书名" --dim "维度" --out p.txt → 我读 p.txt 按其要求生成测验 JSON 存为 quiz.json |
| 4 | 实测分落库 | 本地 | cli.py quiz grade --quiz quiz.json --answers answers.json(answers=作答数组:single给下标,open给0-100分);或自评直接 cli.py add --title T --dim D --score N |
| 5 | 差距 gap | 本地 | cli.py report → report.html + 终端7维表 |
| 6 | 深读建议 | LLM | 只喂 report 的 7 维摘要(~1.5K token,勿喂全量书目),写:差距根因 + 深读哪些章节/概念 + 纠偏练习 |
| 7 | 下一本路由 | 本地 | cli.py next → 主攻维度未测书 Top5 + 备选维度各2本 |
| 8 | 达标判定 | 本地 | cli.py loop(gap≤5 且覆盖≥80% → 达标) |
| 9 | 更新书架·新一轮 | LLM重算 + 本地回写 | 走 chains/capability-extract.md 模式B 生成 targets JSON → cli.py retarget --file targets.json --context "新环境"(回写 shelf.json,轮次历史进 rounds.jsonl,实测分保留跨轮看趋势) |
辅助:cli.py trend(爬坡图 trend.png)· cli.py reset(清空实测分)
每读完一本书的标准流程(agent 执行)
quiz build组 prompt → 我按 prompt +chains/quiz-generator.md规范出 5-8 题(客观+应用混合,严格 JSON)- 用户作答(我出题、收答案、open 题按 rubric 打分)→ 写 answers.json →
quiz grade落库 report拿增量摘要 → 写深读建议(环节6)next报下一本 →loop查达标- 某维达标且环境变化 → 走 capability-extract 模式B →
retarget开新一轮
数据文件(都在 scripts/,本地持久)
shelf.json书架结构化(199本+7维target)·scores.jsonl实测分日志 ·rounds.jsonl轮次历史notes/用户读书笔记/深度解读(出题素材,文件名含书名即可被匹配)report.html差距看板 ·trend.png爬坡图
注意
- 微信读书原生无计分测验,出题必由 LLM 完成;notes/ 越厚题越准,缺笔记时提示用户补
- scores.jsonl 当前含 2026-07 演示数据;用户真实起跑前问一句是否
reset - 新一轮开启 = 你重整理书架并重新生成 weread_shelf.html →
cli.py parse [新HTML路径]重建 shelf.json;平时闭环不动它 - capability-extract 输出的每个能力单元必须"可被测"(能落到应用题),否则 target 只是口号