doco收尾: 22期融合A稿成品归拢 + ep021/022补稿 + cli路径修复

- ep021(海战颠覆者)、ep022(硬核脑洞)全流程P1→C4跑通
- ep007/010 C4说话人区分重跑补漏
- cli.py episode_dir加.resolve()修复子进程路径翻倍bug
- 22份融合A稿按播出顺序归拢至doco/deliverables/
- 排播对照表2026episode_list.xlsx导入
- 词典累积至267+条
- 两份CLAUDE.md更新交接状态

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
simonkoson
2026-06-26 17:55:09 +08:00
parent 897b662e54
commit ffb507a87c
27 changed files with 983 additions and 129 deletions
+18 -15
View File
@@ -16,8 +16,8 @@
## 🔖 状态栏 (STATUS — 每次结束 session 前必须更新这三行)
- **最后更新**Claude Code 2026-06-24
- **当前状态一句话****20 期全部出稿完成(16/16 批量跑零失败)。** doco 流水线验证通过。下一步:通哥逐期核验分段 → doco 收工 → 带 20 期成品回 TPS 主项目知识库。
- **最后更新**Claude Code 2026-06-26
- **当前状态一句话****doco 子项目开发收尾。** 22 期融合A稿全部产出(含说话人区分重跑),已归拢至 `doco/deliverables/`。第01期(武器装备里的形状规律)缺A稿暂跳过。下一步:带 22 期成品回 TPS 主项目知识库批量导入
- **下一个动手的人从这里开始**:见下方「⏩ 交接备注」
---
@@ -81,14 +81,15 @@
## 3. 当前进度(核心交接区,以最新快照为准)
- **已完成至**ep001-004 四期全流程出稿。一键脚本 `doco run` + 批量脚本 `_batch_run.py` 已就绪。16 期骨架全部生成并通过核验。C3 prompt 已收紧(专名铁律)。C4 batch_size 已降至 25
- **正在做**:无(等通哥逐期核验分段标签)
- **卡点 / 待解**20 期出稿已全部产出,通哥核验分段后 doco 收工,带成品回 TPS 主项目
- **已完成至****doco 子项目开发收尾。** 22 期融合A稿全部产出(ep001-022,含说话人区分 C4 重跑),已归拢至 `doco/deliverables/`(按播出顺序命名,22 份)。第01期(武器装备里的形状规律)缺A稿暂跳过。排播对照表 `doco/data/2026episode_list.xlsx` 已就位
- **正在做**:无。doco 开发完成,等待回归 TPS 主项目
- **卡点 / 待解**下一步把 22 期融合A稿批量导入 TPS 主项目知识库(走 Phase 3 上传/embedding 链路)
---
## 4. 已完成(只追加,最新在最上)
- [2026-06-26 Claude Code] **doco 子项目收尾:ep021/022 补稿 + 说话人重跑 + 成品归拢。** 本 session 完成:① **ep021(海战颠覆者)、ep022(硬核脑洞)两期新补 A 稿全流程 P1→C4 跑通**——ep021 骨架 LLM 自动生成失败(`extract_a_paragraphs()` 过滤空段后重编号,LLM 用了 raw docx 下标),手写骨架 JSON32 段=26 normal+6 ignore 粗体章节标题)通过校验;ep022 骨架 LLM 自动通过(38 段全 normalinline header);ep021 C3 review 13 条(均 OCR 修正,专名零替换)、C4 punct_ok 25/26ep022 C3 review 5 条、C4 punct_ok 全过;② **cli.py 路径 bug 修复**`episode_dir = Path("programs")/episode_id` 相对路径在子进程中二次解析导致路径翻倍(`programs/ep021/programs/ep021/...`),加 `.resolve()` 修复——此 bug 从未触发因 ep004 用 `--skip-p1``_batch_run.py` 用绝对路径;③ **ep007、ep010 C4 说话人区分重跑**(06-24 批量重跑时这两期被遗漏,融合A稿时间戳仍为 06-23),重跑完成、产物已更新;④ **排播对照表** `doco/data/2026episode_list.xlsx`(25 期播出日期/期次/节目名/编导/收视)导入,建立 ep→播出顺序完整映射;⑤ **成品归拢** `doco/deliverables/` 文件夹:22 份融合A稿按播出顺序统一命名(`第XX期_YYYYMMDD_节目名_编导_融合A稿.docx`),缺第01期(武器装备里的形状规律,无A稿);⑥ 通哥人工核验 ep021/022 质量高,仅两处小毛刺(ep021 一段话归错段落、ep022 一个标签应为三维动画),确认技术路径有效。
- [2026-06-23 Claude Code] **批量化基础设施完工 + ep004 全流程通过 + 16 期批量跑启动**。本 session 完成:① ep004(枪王对决,最难·小剧场密·58段)全流程 P1→C4 一次通过,C4 punct_ok 58/58 全过、confidence 全 ≥0.80batch_size=25 效果显著,无批次回退);② 新增 `doco run` 一键全流程命令(Cline 实现,Opus 审核),参数 `--episode-id / --a-script / --input-video / --batch-size / --skip-p1`ep004 `--skip-p1` 验证通过;③ C3 SYSTEM_PROMPT 收紧专名铁律(防 ASR 同音字替换权威 B稿专名);④ Ollama 并发提至 16 路(`OLLAMA_NUM_PARALLEL=16`,8 路实测 GPU 96%、显存充裕);⑤ 16 期新目录建立 + 文件拷贝 + 骨架批量生成并集中核验(真名零泄露、隔断/ignore 正确);⑥ `_batch_run.py` 批量脚本启动跑 ep005-ep020。**doco PRD 完成标准已与通哥确定**:20 期全出稿 → 带成品回 TPS 主项目知识库批量导入。
- [2026-06-22 晚|Claude Code] **ep002 C4 审核完毕,全流程收工**。Cline 跑完 C4 compose 出稿 `20260127潜艇的仿生之路_穆佩弦_融合A稿.docx`。Opus 审核核验:硬校验(汉字零改)全过、733 行全覆盖、标点回退 0 段。**但发现两个问题**:① Cline 自报空段名称错了两个(报"解说3/解说6",实际是"三维动画解说3/解说8")、隔断数也报错(报 3 个,实际 4 个)——再次印证不信 Cline 自检;② **9/19 批次(47%LLM 对齐失败走回退**(全 confidence=0.30),本次因失败批次恰在大段中间未翻车,但属黄色预警。**分段偏差根因**:A 稿是拍摄前剧本,专家采访段与实际播出内容差异巨大(A 稿一句话提纲 vs 专家自由发挥两分钟),LLM 无法正确匹配——这是信息不对应,非算法问题。通哥手动批改分段(~10 处高亮标签),内容本身正确。**结论(通哥拍板)**:治本靠编导给贴近播出版的稿子,现阶段接受"程序保证文字零改 + 编导手调分段"的模式。
- [2026-06-22 Claude Code] **ep002 C3 融合通过**。融合B稿 733行(零偏移),review 10条(5 minor_edit 全是 OCR 错字修正,专名无同音替换)。C4 compose 交 Cline 跑中。
@@ -119,8 +120,8 @@
- [ ] **【产品 backlog】原稿缺【专家N】/【三维动画N】标签**:ep003 复查发现编导原稿里就没有专家、后续三维动画的分段标注,骨架如实反映=融合A稿里也没有(通哥手工补了高亮)。不赖程序(原稿零信号,LLM 与人一样猜不准),**不让程序猜**。治本=提醒编导/责编原稿把【专家N】等段头标全;50 期前在导入须知里写清。
- [x] **【已完成】C3 prompt 收紧**`fusion_review.py` SYSTEM_PROMPT 新增专名铁律——厂名/型号/番号/国名/人名/机构名遇 B稿与 ASR 同音异写,一律以 B稿为准,零容忍采 ASR。
- [x] **【已完成】串一键脚本**`doco run` 命令(P1→P2→C1→C2→C3→C4 六阶段串联),ep004 验证通过。模板脚本放 `src/doco/templates/`
- [x] **批量跑 20 期(完成)**ep001-004 + ep005-ep020 共 20 期全部出稿,16 期批量跑零失败(847 分钟),B稿行数 699-874,融合B稿行数全部零偏移
- [ ] **doco 收工后回 TPS 主项目**20 期融合A稿批量导入知识库(走 Phase 3 已有的上传/embedding 链路),为 Phase 4a 语义搜索提供冷启动数据。
- [x] **批量跑 22 期(完成)**ep001-020 共 20 期 + ep021/022 新补 2 期全部出稿。说话人区分 C4 重跑覆盖全部 22 期。成品归拢至 `doco/deliverables/`22 份,按播出顺序命名)
- [ ] **doco 收工后回 TPS 主项目**22 期融合A稿批量导入知识库(走 Phase 3 已有的上传/embedding 链路),为 Phase 4a 语义搜索提供冷启动数据。成品位于 `doco/deliverables/`
- [x] **【已修复】`fusion_align.py` align_batch 崩溃 bug**`_parse_align_json` 调用在 `try/except` 之外,LLM 返回空字符串时进程崩溃。Cline 已修,移入 try/except 内,错误时优雅回退。
- [ ] **骨架小瑕疵 backlog(不拦路,后期顺手或跳过)**:ep002 演播室主持人 vs 主持人 是否统一;ep004 小剧场角色编号乱(斯9/斯通纳10、卡8跨场)直接改 JSON 即可,不必重调 LLM;ep003 行内`【固摇轨】`留在参照正文(无害,不进输出)。
- [x] **C2** 讯飞 ASR 适配层(密钥外置 + asr_adapter 并入 + `doco asr` 命令 + 真转写310句)
@@ -168,25 +169,27 @@
## 7. ⏩ 交接备注(写给下一个接手的 session)
> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(2026-06-23 重写)**
> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(2026-06-26 重写)**
- **大局**doco 子项目进入收尾阶段。ep001-004 四期全流程已出稿验证通过。16 期新节目(ep005-ep020)正在 `_batch_run.py` 批量跑中。20 期全部出稿后,doco 收工,融合A稿作为知识库资源带回 TPS 主项目。
- **批量跑状态**`python _batch_run.py` 在独立终端跑中。脚本有断点续跑能力(B稿v2 存在则跳过 P1+P2,ASR 已有则跳过转写,融合B稿已有则跳过 C3,融合A稿已有则跳过 C4)。中断后直接重跑即可
- **第一句话该干的**:看 `_batch_run.py` 跑完没有。跑完看汇总表,有失败的排查原因重跑。全部成功后,逐期打开融合A稿 docx 核验分段标签,分段偏差的地方手调
- **大局****doco 子项目开发已完成。** 22 期融合A稿全部产出(含说话人区分重跑),成品归拢至 `doco/deliverables/`22 份,按播出顺序 `第XX期_YYYYMMDD_节目名_编导_融合A稿.docx` 命名)。缺第01期(武器装备里的形状规律,无A稿)。下一步是把成品带回 TPS 主项目知识库
- **第一句话该干的**:切回 TPS 主项目,把 `doco/deliverables/` 里 22 份融合A稿批量导入知识库(走 Phase 3 上传/embedding 链路),为 Phase 4a 语义搜索提供冷启动数据
- **排播对照表**`doco/data/2026episode_list.xlsx`(25 期完整播出日期/期次/节目名/编导/收视),内部 ep ID → 播出顺序的映射已建立
- **LLM**:小米 MiMo 2.5 Pro,环境变量 `LLM_API_KEY` / `LLM_BASE_URL` / `LLM_MODEL`
- **Ollama**16 路并发(`OLLAMA_NUM_PARALLEL=16`),4090D 24GB 充裕。
- **关键参数**C4 batch_size=25`_batch_run.py` 硬编码)C3 batch_size=35。
- **量产坑(务必记住**
- **关键参数**C4 batch_size=25C3 batch_size=35。
- **量产经验(若后续加期**
1. **C3 fuse 后必扫 `fusion_review.csv`**:专名被 ASR 同音字替换要打回。C3 prompt 已收紧专名铁律,但仍需人工复核。
2. **C4 空段 = 播出剪了那段**,不是 bug。
3. **C4 分段偏差是常态**(A 稿≠播出版),编导手调分段标签即可。
4. **OCR 漏字不补**(通哥拍板),LLM 补词=破红线。
5. Cline 自报结果一律对源数据核验,不轻信。
6. thinking 分任务用:骨架/对齐开,标点/抽取/融合关。
- **出稿命名**`{原始A稿stem}_融合A稿.docx`
7. **骨架注意**`extract_a_paragraphs()` 会过滤空段并重编号,LLM 生成骨架时必须基于过滤后的下标(ep021 踩过此坑,需手写骨架)
8. **cli.py 路径**`episode_dir` 已改为 `.resolve()` 绝对路径,修复了子进程路径翻倍 bug。
- **出稿命名**episode 目录内为 `{原始A稿stem}_融合A稿.docx`deliverables 文件夹统一为 `第XX期_YYYYMMDD_节目名_编导_融合A稿.docx`
- **字体坑**:大标题方正小标宋_GBK(商业字体),出稿前确认已装。
- **doco 收工后的路**:20 期成品 → TPS 主项目知识库批量导入(走 Phase 3 上传/embedding 链路)→ Phase 4a 语义搜索提供冷启动数据。主项目待办三选一中的"200+ Obsidian md 批量录入"正好是接收口。
- **工具脚本清单**(一次性,跑完可删):`_setup_episodes.py`(建目录+拷文件)、`_batch_skeleton.py`(批量生成骨架)、`_batch_run.py`(批量全流程)。
- **doco 收工后的路**:22 期成品 → TPS 主项目知识库批量导入(走 Phase 3 上传/embedding 链路)→ Phase 4a 语义搜索提供冷启动数据。
---