文言文助手
0. 工作边界(先读这一节)
本技能做三件事,每件事都有明确的"不做":
| 层 | 做 | 不做 |
|---|---|---|
| 解析层 | 十六板块教学级解析,字—义—例三要素齐全 | 不编造名家点评出处、不编造教材页码、不编造课标原文 |
| 多模态层 | 文生图意境配图 + 磁性男声朗读 | 不在画面里嵌文字(大模型写汉字必错)、不虚构 TTS 密钥 |
| 命题层 | 按天津卷结构命制 9 类题,附命题意图、解析、答案 | 不冒充真题、不承诺押题、不写"必考/锁定" |
交付定位:一切产出都是设计草稿,须经任课教师复核后方可用于课堂。解析中的年代、生卒、出处若有不确定,一律标「(待核)」,宁可留白不可编造。
1. 触发与输入确认
1.1 触发场景
- 「解析这篇文言文」「做个文言文教案」「给这段古文注音翻译」
- 「按天津卷出几道文言文题」「天津中考文言文模拟」
- 「配一张意境图」「读一遍这篇古文」
1.2 开工前必须确认(缺则按默认假设并声明)
| 变量 | 取值 | 默认假设 |
|---|---|---|
| 学段 | 初中 / 高中 | 由选文判断:课内篇目看教材位置;课外看篇幅与难度 |
| 用途 | 备课 / 命题 / 自学 / 课件 | 备课(十六板块全出) |
| 是否需要配图 | 是 / 否 | 是(课程与课件场景) |
| 是否需要配音 | 是 / 否 | 是(朗读与自学场景) |
| 教材版本 | 人教版必修/选择性必修、部编版初中 | 人教版(高中)/部编版(初中) |
| 文本长度 | — | 超过 900 字时建议分段出报告,避免单页过长 |
必须先声明假设,不可默默替用户决定。示例:
> 未说明学段与教材版本,我按「高中·人教版」处理;如需按初中部编版重排注释深浅,告诉我即可。
2. 技能架构
文言文助手
├── 解析层 ── references/parse-spec.md 十六板块字段级规范 + 交付总检 16 项
│ └── references/lexicon-sources.md 五大语料库能力边界与冲突裁决
├── 多模态层 ─ references/tts-image-spec.md 配图七段式提示词 + 男声 TTS 参数与通道
│ └── references/media-pipeline.md 配图/配音/双格式的工序、批量、归档、验收
├── 命题层 ── references/tianjin-exam-blueprint.md 2015—2026 天津真题档案与命题机理
│ └── references/exam-item-templates.md 九类题型可套用模板
└── 执行层 ── scripts/prepare_text.py 清洗 / 分句 / 注音 / 多音字候选
scripts/make_illustration.py 配图任务生成 / 画风锁定 / 水印裁切 / 路径回填
scripts/make_narration.py 朗读稿 / SSML / TTS 三通道合成与降级
scripts/build_report.py JSON → 单文件 HTML(ruby 注音、打印样式)
scripts/export_docx.py JSON → Word 文档(原生拼音指南、三线表)
scripts/check_delivery.py 交付前 16+ 项自检(含拼音一致性、轻声误判)
scripts/self_check.py 技能自身完整性自检
能力来源说明:配图与配音两块吸收了 ai-image-generation-workflow(提示词标准化、批量调度、画风锁定、版本管理、归档命名)与 audio-design(声音档案、逐段配音脚本、停顿时机)的流程骨架。这两个技能本身是体验版、不含可执行代码,本技能的脚本是实做,不是对它们的转发调用。详见 references/media-pipeline.md。
3. 工作流(八步)
Python 解释器(重要)
系统 PATH 上的 python / python3 是不含第三方包的托管运行时。本技能一律显式使用:
PY="C:/Users/dell/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
依赖:pypinyin(已装 0.55.0)、pyyaml。若缺失:
"$PY" -m pip install pypinyin --index-url https://pypi.org/simple
> 清华镜像源缺 pypinyin,必须走官方源。
S0 · 清洗与分句
"$PY" scripts/prepare_text.py --file 原文.txt --out text.json --strip-pinyin --md
产出:cleaned_text、paragraphs、sentences(含 ruby 逐字注音)、polyphones(多音字候选)、warnings。
看 warnings:
- 「已剥离 N 处行内注音」——确认剥掉的确实是注音,不是必要释义。
- 「检测到圆括号内含中文」——可能是夹注,脚本不擅自删,交人判断。
- 「检测到 N 个多音字」——进 S1。
S1 · 定音(不可跳过)
polyphones 里的每一个多音字,都要结合语境定音,写入报告的板块五,并同步写进 pinyin.overrides 校正表:
"pinyin": {
"sentences": [...],
"overrides": [{"s": 5, "i": 2, "p": "tiáo"}]
}
s= 该句在sentences中的序号(从 0 起)i= 该字在句中的序号(从 0 起,标点也计数)
未校正且出现在多音字表中的字,渲染时注音会带虚线下划线并提示,这是防漏机制,不要留着交付。
> 实测案例:「可以调素琴」的「调」pypinyin 默认给 diào,语境应为 tiáo。这类修正必须由人(或模型判断)完成,脚本只负责提示。
S2 · 撰写十六板块
严格按 references/parse-spec.md 的字段与条目下限写。同时按需检索语料(见 §5)。产出一份 report.json(可用 build_report.py --scaffold 生成空模板)。
写作顺序建议:三(译文)→ 四(一句一译)→ 六(注释)→ 十五(词法句式)→ 七/八/九/十 → 十一 → 十二/十三/十四/十六 → 一/二/五(校对)。
S3 · 意境配图(三步,不一步到位)
# ① 生成配图任务(按字数自动定张数,或 --scenes N 指定)
"$PY" scripts/make_illustration.py --report report.json --scenes auto --style auto --save-report
脚本会输出每个任务的七段式完整提示词、意象词、锚点文句、规范文件名(篇名_风格_序号_日期.png)与尺寸。画风由文本气质自动匹配(6 种:宋人山水/青绿/壁画/工笔/书院版画/写意/帛画)。
# ② 用 ImageGen 按 tasks[].prompt 逐张出图,存到 media/
# ③ 回填路径(--clean-watermark 会裁掉平台水印)
"$PY" scripts/make_illustration.py --report report.json \
--attach sc1=media/陋室铭_shanshui_01_20261101.png --clean-watermark
要点:
- 画面不嵌任何文字(原方案会嵌中文,大模型写字必错,文字交给排版)
- 平台水印必须裁:ImageGen 会在右下角压「AI生成」字样,提示词的负向约束管不了它,只能物理裁底边 5.5%(--clean-watermark)。原图自动备份为 _orig.png
- 不满意用 --revise sc1 "指令" 出 v2,不覆盖 v1,最多 3 版
- 三张以上时脚本按句序均分取样,避免多图都选同一句
S4 · 朗读配音(磁性浑厚男声)
"$PY" scripts/make_narration.py --report report.json --out media
一次产出四件:narration.txt(带 | ‖ ¶ ≋ 停顿标记的朗读稿)、narration.annotated.txt(含注音与通假提示的核对稿)、narration.ssml(含 <phoneme> 定音与 <break>)、narration-meta.json(字数、预估时长、通道)。
- 八项预处理由脚本自动完成:去注音、去符号、通假改本字音、多音字注音、数字转中文、专名保护、长句切分、去口语填充
- 声线档案是常量:中年男中音、0.88×、−2 半音、stability 0.50(详见
media-pipeline.md§2.2) - 通道自动探测:
ELEVENLABS_API_KEY→OPENAI_API_KEY→AZURE_SPEECH_KEY;有则真合成 mp3 - 无凭证时:不报错、不虚构 key,降级交付上述四件,
meta.tts.status = "pending",并在报告注明「配音待合成」 - 合成后用
--duration 秒数回填实测时长,脚本按 ±15% 判合格并给处置建议
S5 · 双格式输出(HTML + Word)
"$PY" scripts/build_report.py --report report.json --out 陋室铭-文言文解析.html
"$PY" scripts/export_docx.py --report report.json --out 陋室铭-文言文解析.docx
两份产物同源不同器,不是 HTML 转 docx:
| 维度 | HTML | DOCX |
|---|---|---|
| 拼音 | CSS ruby 逐字注音 | Word 原生「拼音指南」(w:ruby),可在 Word 里直接改 |
| 答案 | 折叠,点击展开 | 题后直接排版,打印即完整 |
| 配图 | base64 内联(自动压到 1200px),单文件可移植 | 嵌入图片(插入前压到 1200px,docx 从 5 MB 降到 1 MB) |
| 导航 | 侧边栏锚点 | Word 标题大纲 + 目录域 |
| 音频 | <audio> base64 内嵌播放 |
不嵌(Word 支持差),改为附录「朗读稿」+ 媒体清单 |
docx 首次打开后需右键目录 →「更新域」生成页码(域已插入,未预渲染)。
S6 · 命题(可选)
读 references/tianjin-exam-blueprint.md 定卷式,读 references/exam-item-templates.md 逐题套模板。动笔前先向用户明示两处考情偏差:
| 用户模板 | 天津卷实际 | 处理 |
|---|---|---|
| 第 4 题「全都表现……的一组」 | 2020 年后已淡出,改考文化常识 | 照模板出,卷首标注「全国卷题型,天津卷已淡出」 |
| 第 5 题「正确的一项」 | 天津卷为「不正确的一项」 | 默认按天津卷出「不正确」;若坚持「正确」,三个错项须无争议 |
选择题答案尽量均衡,避免全卷某字母占六成以上。
S7 · 自检与交付
"$PY" scripts/check_delivery.py --report report.json
- 输出 ✅/⚠️/❌ 三级清单。有 ❌ 必须修;⚠️ 逐条判断。
- 自检含两条拼音专项:多音字表与正文注音是否一致(已应用 overrides 后比较)、是否出现轻声误判(文言中轻声极少,「子(zi)」这类基本都是 pypinyin 错,应改 zǐ)
- 交付清单见 §7。
4. 与原「文言文沉浸式学习」技能的差异
从原技能(ShowAPI 工作流,v1.0.1)继承了流程骨架,替换了付费链路,修正了两处设计缺陷:
| 维度 | 原技能 | 本技能 | 原因 |
|---|---|---|---|
| 输入清洗 | 剥离注解/拼音/零宽 | 同,但不自动删含中文的括号 | 原逻辑可能误删释义 |
| 字数限制 | 硬上限 300 字 | 取消硬限,超 900 字建议分段 | 高考选文 600—820 字,原限直接卡死 |
| 解析深度 | 实词/虚词/特殊词 + 句式 + 主题(5 项) | 十六板块 | 教学备课实际需要 |
| 配图 | ShowAPI 工作流,含中文文字 | 文生图大模型,不嵌文字 | 大模型写汉字必错;且免付费 |
| 配音 | glm-tts 默认音色 | 磁性浑厚男声,参数化 + 三通道 | 文言朗读需低沉克制的讲述感 |
| 拼音 | 工作流内部生成,不可干预 | pypinyin + 多音字候选 + 校正表 | 多音字必须人工定音 |
| 合规检查 | 阻断式 is_valid |
降为非阻断 warnings |
教学场景不应因字数直接拒答 |
| 命题能力 | 无 | 天津卷命题蓝图 + 九类模板 | 用户核心需求 |
| 配图工序 | 工作流内部黑箱 | make_illustration.py 三步:出任务→ImageGen→回填 |
提示词可控、画风可锁、水印可裁 |
| 配音工序 | 工作流内部黑箱 | make_narration.py 一次出四件 |
朗读稿可人工校对,SSML 可换引擎 |
| 交付形态 | 一段 JSON | 单文件 HTML + Word 双格式 | HTML 投屏分享,Word 打印存档 |
| 付费 | 约 0.28 元/次 | 0(仅本地脚本 + 已有模型能力) | — |
5. 五大语料库使用要点
详见 references/lexicon-sources.md。速查:
| 要查什么 | 首选 | 次选 |
|---|---|---|
| 拼音 | 所用教材版本的注音 | cngwzj.com 注音页 |
| 一字本义/字源/通假/异体 | zdic.net(说文+字源+异体栏) |
《康熙字典》 |
| 文言词义(要书证) | hanyucidian.org《古代汉语大词典》 |
zdic.net 详细解释 |
| 典故与文化常识 | hanyucidian.org《中国典故大辞典》 |
guwendao.net 注释 |
| 创作背景/作者生平 | guwendao.net 作者页与作品页 |
《中国历代人名大辞典》 |
| 一句一译底本 | cngwzj.com 的 /juyi/ 视图 |
自译 |
| 词性判断(教学口径) | wyw.hwxnet.com |
— |
红线:不整段照抄(改写后不得与原句连续 15 字相同);不伪造页码版次;不绕过反爬;三源冲突时并列并注明。
6. 天津卷命题速查
详见 references/tianjin-exam-blueprint.md(真题档案、干扰项手法、教材对照句库)与 references/exam-item-templates.md(模板)。
6.1 高考(2018—2026)
- 分值:客观 5 题 ×3=15 分;主观 8—11 分;合计 23—26 分
- 题序:7 实词 → 8 虚词 → 9 断句 → 10 文化常识 → 11 内容理解 → 12 翻译(3 句 8 分)→ 13 简答(3 分)
- 三条铁律:
1. 虚词题 4 组,每组一句文内 + 一句教材(2019/2021/2024/2025 全中)
2. 2020 年起复合文本常态化,2024/2025 为三文本同题比较,必设「异同/侧重点」题
3. 三文本卷必设一处假全称陷阱(「三则材料都……」) - 选文规律:单篇 600—820 字;体裁从史传转向史论、书序、学记、笔记;主题贴立德树人;不考生僻典籍
6.2 中考(2015—2026)
- 分值:课内 9 分(第 9—11 题,选择各 3 分)+ 课外 7 分(第 13—15 题)= 16 分
- 第 9 题稳定考实词解释;第 11 题稳定考内容理解;第 10 题是「六大知识点轮换位」——古今异义(2023)/ 特殊句式(2024)/ 虚词(2025)/ 词类活用(2026),不得连续两年同点
- 课外选文:90% 为人物传记,取自宋人笔记,150—260 字,附注释 6—8 条;主题一律正面(清廉、刚正、知人、勤学、孝义)
- 第 13 题所考词必为课内学过且课内外同义者(归、叩、因、闻、尝、悉、素、率、谓、故)
- 第 15 题从「单一人物形象」向「原因+形象」复合设问演进(2026)
7. 交付物清单
| 文件 | 必需 | 说明 |
|---|---|---|
<篇名>-文言文解析.html |
✅ | 单文件(配图/音频 base64 内联),含 16 板块 + 试卷,可直接投屏/打印 |
<篇名>-文言文解析.docx |
✅ | Word 版,原生拼音指南 + 三线表 + 目录域,用于打印与教研存档 |
report.json |
✅ | 源数据,两种格式共用,改一次两处同步 |
text.json |
建议 | 预处理产物,含多音字候选与注音 |
media/<篇名>_<风格>_NN_<日期>.png |
可选 | 意境配图(画面无文字、已裁平台水印) |
media/illustration-log.json |
配图时 | 任务日志:提示词、风格、版本、失败清单 |
media/<篇名>-narration.txt / .ssml / -meta.json |
配音时 | 朗读稿、可直接喂 TTS 的 SSML、字数与时长元数据 |
media/<篇名>-narration.mp3 |
有凭证时 | 男声朗读成品 |
media/<篇名>-narration.annotated.txt |
配音时 | 带注音与通假提示的人工核对稿 |
完整目录结构见 references/media-pipeline.md §3.4。缺项要说明原因,不静默省略。
8. 质量红线(违反即返工)
- 不编造:名家点评出处、教材页码、课标原文、作者生卒年——不确定就标「(待核)」。
- 不空转:每个文言知识点必须给文中原句;「语言优美」「感情真挚」这类无信息量表述一律删。
- 多音字必校:
polyphones全部定音并写入overrides,不留虚线下划线。 - 选项唯一解:每道选择题命题人须能写出「为什么其余三项必错」。
- 干扰项靠知识或逻辑致错,不靠抠字眼。
- 全卷不重考同一知识点。
- 配图无文字;配音无背景音乐。
- HTML 打印检查:A4 下表格不溢出、区块不跨页断裂。
9. 资源索引
references/parse-spec.md—— 十六板块字段规范、条目下限、交付总检 16 项references/lexicon-sources.md—— 五大语料库能力矩阵、URL 规律、冲突裁决、检索式references/tianjin-exam-blueprint.md—— 2015—2026 天津真题档案、命题机理、教材对照句库、120 实词、命题 SOPreferences/exam-item-templates.md—— 九类题型模板(题干/选项/干扰项/解析/自检)references/tts-image-spec.md—— 配图七段式、风格库、TTS 音色参数、三通道、验收标准references/media-pipeline.md—— 配图/配音流水线工序、场景切分、画风锁定、版本管理、双格式分工与 docx 排版规格scripts/prepare_text.py—— 清洗/分句/注音/多音字候选scripts/make_illustration.py—— 配图任务生成(--emit)、水印裁切(--clean-watermark)、路径回填(--attach)、二次微调(--revise)scripts/make_narration.py—— 朗读稿 + SSML + TTS 合成(--dry-run只产稿,--duration校验语速)scripts/build_report.py—— JSON → HTML(--scaffold出空模板,--no-inline-media改外链)scripts/export_docx.py—— JSON → Word(--no-toc/--no-images)scripts/check_delivery.py—— 交付自检(--strict严格模式)scripts/self_check.py—— 技能完整性自检(frontmatter / 语法 / 悬空引用)
10. 常见失败与处置
| 现象 | 原因 | 处置 |
|---|---|---|
| 拼音整串连写看不清 | 未按字分隔 | 已修正:pinyin 字段按「单字音节+空格」输出;正文用 ruby 渲染 |
| 多音字报了几十个 | pypinyin 大字典含冷僻异读 | 已内置教学白名单过滤;需要全量时加 --all-poly |
| 注音与多音字表矛盾 | 未写 overrides |
按 S1 补校正表;check_delivery.py 会直接报冲突 |
| 「子」「了」注成轻声 | pypinyin 按现代汉语处理 | 文言中除少数外无轻声,check_delivery.py 会列出所有轻声字,逐个改(「子」在「孔子」读 zǐ) |
| 原文与拼音字数对不上 | 分句时并句/跳句 | 跑 check_delivery.py 的 ② 项 |
| TTS 读错「说」「王」 | 引擎默认音 | narration.ssml 已含 <phoneme> 定音;不支持 SSML 的引擎改用 .annotated.txt 人工埋音 |
| 配图出现乱码汉字 | 提示词要求嵌字 | 去掉文字要求,改用纯画面 |
| 配图右下角有「AI生成」水印 | 生成平台强制水印,提示词管不了 | --attach ... --clean-watermark 物理裁底边 5.5%,原图自动备份 |
| 多张配图锚点重复 | 短文本只有一段/一句 | 已修正:按全篇句序均分取样,不按段落首末取 |
| docx 里拼音变成两行错位 | 用 HTML→docx 通用转换器 | 不要转,直接跑 export_docx.py,用 Word 原生 w:ruby |
| docx 体积 5 MB 以上 | 原图直嵌 | 已内置插入前压到 1200px,体积降 80% 而打印无损 |
| docx 目录没有页码 | 目录是域,未更新 | 打开后右键目录→「更新域」;页码由 Word 计算,脚本不预渲染 |
| HTML 图组里单张图被拉满宽 | CSS 1fr 铺满 |
已改为固定列宽(主图 340px、副图 230px) |
| 名家点评写不出 | 该篇确无名家评点 | 改为「教材教参观点摘述」并注明非古人评点 |
| 试卷答案全集中在 B | 未做分布检查 | check_delivery.py 会提醒,调整选项顺序 |