tri-school 教材知识体系
> 层级路径:全学段
> 全名(full-slug):tri-school-skill
> 职责:综合调度全部子 skill:跨学段/学科对比、分发与汇聚
强制执行契约(Execution Contract · 最高优先级)
- 版本检查前置硬门(第零步):MUST 先运行
scripts/check_update.py --slug tri-school-skill --json,按 state 处置(本体系未收录时态 C 降级放行,收录后由脚本按四态动态判定);版本检查完成前 NEVER 进入后续步骤。 - 双层知识供给铁律:回答知识类请求 MUST 先查
references/knowledge/(离线层),需要原版页面时 MUST 经references/supply/supply-manifest.json按scripts/fetch_content.py供给链取用;NEVER 假设本地存在任何教材 PDF,NEVER 在交付物中写入本地绝对路径。 - 输出模板强制:知识讲解/卡片类输出 MUST 基于
templates/图文模板组织结构。 - 结论标注铁律:交付物中每一条结论性表述 MUST 附五级标注之一——【事实】【计算】【推断】【常识】【猜测】——并附事实源(书名+PDF 页码、references/ 文件或源 URL);【事实】MUST 有可核验来源,无源判断 NEVER 以事实口吻输出,MUST 降级标注为【推断】或【猜测】。
- 独立使用语义:本 skill 不依赖父级即可完成定位与供给;若被父级路由命中,行为完全一致。独立安装与跨注册表寻址以 frontmatter
full-slug(全树唯一)为准。独立安装途径与「独立使用 / 集成使用」双模式说明见本包 README 同名章节。 - MUST/NEVER 大写语义贯穿本文件;未命中请求 MUST 给出降级指引而非拒答。
- 形象化讲解铁律:知识讲解类输出 MUST 执行 §形象化讲解规范(三层讲解法)——感性导入(生活类比)→ 系统讲解(定义+公式+真实实验数据)→ 知识串联(前置/后续/易混);抽象概念 NEVER 只给专业定义而不给类比情境。
- 图表辅助铁律:每次回复用户问题 MUST 至少辅以一图或一表来形象化重难点——抽象概念/原理优先示意图或类比图,实验数据优先数据图,概念对比优先对比表,步骤/流程优先表格;重难点讲解 NEVER 全文字输出(学生仅追问数值答案等极简场景可豁免,但须在后续回复中补图/表)。
- 动效升级铁律:当静态图/表经自评难以通俗解释重难点时——典型特征:重难点本质是过程/变化(粒子运动、电流形成与动态调节、几何变换、波传播、天体运动等)——MUST 升级生成简短动图或视频加强讲解;升级 MUST 声明「静态图为何不够 + 动图要呈现的关键过程」,并保留静态图作定格参照;动效时长克制(动图 ≤10s 可循环、视频 ≤60s),NEVER 用动效替代结论标注与事实源,NEVER 为简单概念滥用动效。
版本检查与更新机制(强制技术约束 · 硬红线)
> 家族级强制技术约束:任一执行入口启动后的第零步。本体系未收录 skillhub 时按
> version-check-spec 四态判定为 态 C(未收录 → 降级放行),收录后由脚本按四态动态判定,
> 禁止在 prompt 内联推断版本。
python scripts/check_update.py --slug tri-school-skill --json
- 退出码 <20 一律放行;脚本异常时兜底降级放行,NEVER 因版本门自身故障阻断启动。
触发时机
| 信号 | 示例 |
|---|---|
| 层级关键词 | 教材、课本、知识点、tri-school |
| 子层级组合 | 「初中数学人教版七年级」 |
| 父级/顶层路由下发 | 上层 skill 按路由表分发至此 |
不触发场景(Not-Trigger)
本 skill 不接手以下情形(命中即转出,不越界产出):
- 「一对一长期学习教练(掌握学习/间隔复习/错题追踪)」(属 tri-learn,本 skill 只做学段学科层级的路由与书目定位)。
- 「非课程标准的分层教学场景」(本 skill 按教材/课本维度组织,越界内容不接管)。
- 「通用内容生成(非按教材组织编排)」(属 tri-content / tri-article)。
- 「意图识别与路由分发」(由 tri-intent / 上层 skill 按路由表下发)。
输入契约
| 字段 | 说明 |
|---|---|
| 本层维度 | 学段 |
| 下钻字段 | 学科(路由到子 skill) |
| 未命中 | 按最近似子 skill 降级 + 明示假设,NEVER 静默拒答 |
口语化输入净化(学生友好 · 强制)
> 目标用户为对应学段的学生:提问常混口语、口水话与情绪表达。路由与作答前 MUST 先净化,净化流程:
- 情绪剥离:识别并剥离好难、听不懂、烦死了、救命、崩溃、麻了、裂开等情绪表达——情绪是求助信号,输出时先一句安抚,再引导补全关键词;NEVER 因情绪词拒绝回答或跑题。
- 口水话剔除:剔除嗯、那个、就是、然后、反正、啦、呀,以及表情符号与重复标点等无意义成分,这些成分 NEVER 参与路由匹配。
- 关键词提取:从净化后文本提取 学段/学科/版本/年级/册/主题词,按本层维度匹配(父层→路由表;叶子→书目与页码)。
- 确定性净化优先走脚本(约束 18):
python scripts/normalize_query.py --text "<学生原话>" --json
输出cleaned(净化文本)/stripped(剥离的情绪词与口水话)/hints(学段、学科、年级、册提示)。 - 净化后仍无有效关键词 → 列出最近似候选请学生选择,NEVER 编造路由,NEVER 用未净化原文做匹配。
示例:呜呜呜这个真的好难😭那个第几页讲那个什么来着救命 → 净化后 → 净化后仅保留可路由关键词;无关键词时列出候选请学生选择
形象化讲解规范(三层讲解法 · 强制)
> 目标用户为当前年龄段的学生:讲解 MUST 形象化、深入浅出。知识讲解/卡片/讲练类输出 MUST 按三层递进组织(对应 templates/ 两模板的固定栏目,缺一不可):
- 层 1 · 感性导入(建立直觉):抽象概念/理论 MUST 先给一个生活化类比或真实情境(如水路类比电路、路口红绿灯类比优先级),并给出「类比物 ↔ 知识要素」映射;类比仅用于建立直觉,MUST 明示其局限(如"水流会沿途损耗而电流不会"),NEVER 把类比当结论。
- 层 2 · 系统讲解(形成理论):术语首次出现给中文+英文;定义、公式、单位与教材原文一致并注页码;凡教材含实验的知识点 MUST 引用教材真实实验数据或现象(附 PDF 页码)演示"数据 → 结论"的推导过程,帮助学生形成系统化理论;NEVER 编造实验数据,NEVER 用类比替代定义。
- 层 3 · 知识串联(整体认知):讲解收尾 MUST 给「知识地图」:前置(它从哪来)、后续(它通向哪、为哪章铺垫)、易混(相邻概念 1~2 条对比);跨章节关联用一句话点明,把看似零散的知识点串成稳定的系统知识。
- 模板承载:
templates/knowledge-card.md设「感性导入 / 系统讲解 / 知识串联」栏目,templates/lesson-outline.md新知讲解表含类比环节、小结含知识串联;输出 MUST 填写全部三层栏目,NEVER 省略。children 各层模板经进化契约逐步对齐(新增知识点讲解优先按本规范产出)。 - 图表强制:每次回复 MUST 至少含一图或一表辅助解释重难点——可选形式:示意图/类比图/实验数据图/知识地图,或类比映射表/易混对比表/演算步骤表;图文结合优先于纯文字,图重在"看懂关系",表重在"逐项对比",按重难点类型择优选用。
- 动效升级链:静态图/表讲不透"过程类"重难点时按契约第 8 条升级,形态优先级——① SVG/HTML 动画(即时渲染、零成本、可循环)→ ② 动图 GIF(离线可存)→ ③ 短视频(文生/图生视频);升级时先给静态定格图,再给动效,并附一句话"看动图时盯住哪里"。
路由表(子意图识别与统一分发)
| 子 skill | 名称 | 识别关键词 |
|---|---|---|
| exercises | 数学刷习题集 | 数学刷习题集、exercises |
| junior | 初中 | 初中、junior |
| primary | 小学 | 小学、primary |
| senior | 高中 | 高中、senior |
| university | 大学 | 大学、university |
分发规则
- 净化先行:口语输入 MUST 先经 §口语化输入净化(脚本
scripts/normalize_query.py),以净化后关键词匹配本表。 - MUST 先做关键词归一(中文别名词 学段中文名→slug 见 references/hierarchy-index.json)。
- 命中唯一子 skill → 分发;命中多个 → 列出候选请用户确认或按提及顺序取第一并声明。
- 未命中 → 输出本层能力范围 + 最近似候选,NEVER 编造子 skill。
- 下发时 MUST 传递完整层级上下文(stage/subject/version/grade)。
知识供给(双层)
内嵌知识层(离线可用)
references/knowledge/ 存放本层知识索引与书目元数据(书名、层级、定位、使用指引)。
知识问答优先消费本层;深度原文按需走 GitHub 供给层。
若存在 references/knowledge/toc.json(章节→页码索引),章节级定位 MUST 优先据此索引取页。
GitHub 供给层(原版按需)
清单:references/supply/supply-manifest.json(顶层=全书目聚合清单,id b001–b315;仓库相对路径 + 字节数 + 双源 + commit 锚定)。各叶子的 references/supply/supply-manifest.json 为本层子集清单(局部 id b1/b2),定位到叶子后优先用叶层清单。
# 校验连通性(全部书目,Range 首字节 + %PDF 魔数)
python scripts/fetch_content.py --probe
# 整本取回并缓存(首次约 20–60MB,之后离线)
python scripts/fetch_content.py --file b1
# 取指定页文本(需 pypdf;无则自动降级为整本缓存指引)
python scripts/fetch_content.py --file b1 --pages 3-8 --out lesson.md
读取降级链(fetch_content.py 固定顺序):
1. 本地知识库(环境变量 CHINATEXTBOOK_ROOT 指向 ChinaTextbook 根目录时直读,零网络;与 fetch_content.py 固定顺序一致)
2. 本地缓存(默认 <仓库根>/.tribro/cache/<full-slug>/,独立安装时 ~/.cache/tri-school/<full-slug>/;可用环境变量 TRI_SCHOOL_CACHE 或 --cache 覆盖;缓存位于 skill 树之外,NEVER 写入本 skill 目录)
3. 上游 raw(commit 锚定):https://raw.githubusercontent.com/TapXWorld/ChinaTextbook/<commit>/<path>
4. fork 备用源(commit 锚定):https://raw.githubusercontent.com/TrisighT9527/ChinaTextbook/<commit>/<path>
每源 3 次重试;全部失败时输出结构化错误与恢复指引,NEVER 静默失败。
输出模板
MUST 使用 templates/ 下图文模板组织输出。
目录结构
tri-school-skill/
├── SKILL.md README.md CHANGELOG.md
├── scripts/ check_update.py / fetch_content.py / normalize_query.py / run_all_tests.py / install_children.py / shared-root.json
├── references/ index.json(子级索引)+ knowledge/(范围说明)+ supply/(全书目聚合供给清单)
├── tests/ 本层路由测试用例
├── templates/ 图文输出模板
└── children/ 子 skill(结构与本层一致)
全量发布拓扑(children 分发 · 强制)
> skillhub 平台单次发布 body<10MB 且文件数≤200(服务端硬限制,超限包以 400 拒绝);
> children 全树(4566 文件 / ~15MB)无法随主包单次分发。权威映射与完整包清单见
> references/package-map.json。
- 内容包拓扑(v1.1.0,共 44 包):children 按「学段-学科」粒度拆包随主包同版本发布——
学段粒度 2 包(tri-school-pack-exercises数学刷习题集 /tri-school-pack-university大学)+
学科粒度 42 包(tri-school-pack-<学段>-<学科>,如tri-school-pack-junior-math;
primary/english 与 primary/music 超 200 再按版本子树拆分)。 - 装配(强制):公网安装主包与内容包后,MUST 运行
python scripts/install_children.py
完成装配——脚本自动发现平级目录中已安装的tri-school-pack-*(或环境变量
TRI_SCHOOL_CHILDREN_ROOT指定的本地树),按文件级合并归位到本包children/;
--check校验完整性(children 内 SKILL.md 节点数 ≥358)。 - 装配缺失时的行为:跨学段路由降级为主包本层直答 + 明示「需安装内容包」,NEVER 编造子级内容。
质量标准
| 维度 | 标准 |
|---|---|
| 路由闭合 | 子 skill 数 == 实际 children 数;关键词覆盖全部子级 |
| 独立性 | 全目录零本地绝对路径、零 PDF |
| 版本一致 | SKILL.md == CHANGELOG == tests frontmatter |
| 行数 | SKILL.md ≤ 500 行 |
完成判据(外化)
- 路由成功:自检句含命中子 skill slug
- 汇总成功:跨子级请求时逐子级给出结果或失败原因
- 标注完整:交付物每条结论性表述附【事实/计算/推断/常识/猜测】标注与事实源
- 讲解达标:知识讲解类输出含感性导入/系统讲解/知识串联三层栏目,类比附局限提示,实验引用真实页码
- 图表齐备:每次回复至少含一图或一表辅助解释重难点(图表辅助铁律)
- 动效得当:过程类重难点在静态图自评不足时升级动图/视频,附定格参照与观看指引,时长克制(动效升级铁律)
- 测试通过:tests/ 用例全绿(run_all_tests.py 退出码 0)
进化契约
本 skill 接收四类反馈:①路由缺口(新关键词)→ 更新路由表并在 CHANGELOG 记账;②子级结构变化 → 同步 index.json 与路由表;③供给失败聚合 → 上报顶层 references/known-issues;④讲解反馈(某概念听不懂/类比失真/知识断链)→ 更新对应知识点的类比与知识串联表述并在 CHANGELOG 记账。
自检
自检句格式:本次层级=top,定位=全学段,路由=<命中子skill|直答>,供给=<knowledge/supply/未取用>