Skip to content

《当时明月——中国诗人列传》入库+两轮清账+去模板轮(附公众号版 24 篇) - #254

Merged
oratis merged 28 commits into
mainfrom
claude/chinese-poet-biography-cleanup-ffa30e
Aug 28, 2026
Merged

《当时明月——中国诗人列传》入库+两轮清账+去模板轮(附公众号版 24 篇)#254
oratis merged 28 commits into
mainfrom
claude/chinese-poet-biography-cleanup-ffa30e

Conversation

@oratis

@oratis oratis commented Aug 28, 2026

Copy link
Copy Markdown
Owner

《当时明月——中国诗人列传》五卷 22 章加序终共 24 篇、约 21.3 万字。这个 PR 做三件事:把它放进 git清两轮欠账过一轮去模板,并配好公众号版。

一、它此前从未进过 git

初稿一直躺在另一个 worktree 的未跟踪目录里,只要那个目录被清理就没了。第一个提交是原样搬进来的基线(一字未改),此后每一步都有版本记录。

二、清欠账:看 --why,不要看总数

开轮实测 1080 条(HANDOFF 上一版写的 927 对不上,差的是上轮清账被本机休眠打断时新立的)。两轮之后:

合计 1080 条:已清 861(80%)· 待核 129 · 成书前 90

总数不是要看的东西。 未清的 219 条按「为什么没清」分:

开轮 收工
主编定夺 137 90
纸本不可及 158 120
确实查不到 30 2
复核未通过 8 6
清过却没写明为什么没清 93 1

最后一行才是这两轮真正做完的事。总数从来不会归零,也不该归零——这本书的系年靠近人年谱与清人笺注,多数不在网上。第二轮九个考据员专打这一档,翻不动的一律升级成「纸本不可及(搜韵 API 与四库本/丛刊本两路已试,皆无)」——那才是站得住的 C。

查出来的正文实错(每条都有一手)

  • 序章把赵子栎的《杜工部年谱》当成了吕大防的,并把订正的方向整个写反
  • 屈原章《渔父》的争议朝代与理由都错;《楚世家》「楚往迎妇」被写成怀王把女儿嫁到秦国,方向反了
  • 苏轼章一句里错三处:两朝两事说成一位皇帝一次做的、先后写反、孝宗写的是「赞并序」
  • 刘禹锡章苏州水灾与到任摆反;杜牧章「刘克庄说他的诗豪而艳」作者与文字都错
  • 龚自珍章「这年春天在裕谦幕里」——魏源自记是伊里布,年份、人、身份三样全错
  • 李清照章「元祐党人碑上司马光排在最前面」——把两块碑混了
  • 文天祥章「欧阳氏此后的下落,书上没有」——整段是错的
  • 元好问章「《中州集》二百五十一个人」——那个数不出自任何古书,改成「两百多个人」

三、修订轮:三条全书级的模板

单章 agent 与单章阈值一条也报不出来。

  1. 七章用同一个开场句式「X 是……的。」(两章还都是「船」)→ 三章
  2. 二十二章里十一章的末节都叫「八 · 身后」
  3. 王维与李白那条穿线写了三遍,几乎逐字重复

顺带办完 README 待办里挂最久的细纲回改,统一 2 650 处引号,二十四篇 status: draft → revise

四、工具

  • debt_report.py 只读欠账条目的第一行,把 41 条早已写明理由的报成「没写明为什么没清」——报表自己造出来的欠账。改成按条目聚合后 41 → 11。
  • style_audit.py 新增一项:查章末「本章诗作编年」里的清账过程词。那张表是要印进书里的,公众号版整篇带出去;这一轮有四章把清账过程写进了「系年依据」栏。
  • refresh_readme.py 现在连状态看板一起按 frontmatter 重算;新增 refresh_refs.py——《参考资料》的系年依据表也不许手写。
  • build_wechat.py / gen_covers.py / mp_publish.py 收进 book/tools/:README 一直写着它们在那儿,其实从未提交过。为这本书加了两处,都按内容分流不按书名(引诗块自成版式、章末编年表改两行一条)——《要有光》33 篇重编译逐字节一致

五、体检

粗体中位 0.0%、教辅腔 0、章号互指 0、跨章真冲突 0、同诗异年 0、章内不一致 0、必嵌诗 22/22 全在正文里;公众号 24 篇引诗块 214 → 214,无泄漏。

六、下一步(不在这个 PR 里)

主编待决 88 条诗人传/提纲/主编待决.md),每条证据链都补到一眼能拍板、末尾带 **建议:**全书还没有人从头到尾读过一遍。 公众号还差出封面与灌草稿两步,都要密钥,命令在 ~/Documents/Claude/公众号-当时明月/README.md


🤖 Generated with Claude Code

oratis and others added 28 commits August 28, 2026 12:08
从 worktree reverent-antonelli-01614e 未提交的工作目录搬进来,一字未改,
作为清欠账轮的基线:24 篇 21.6 万字,欠账 1075 条(已清 649 · 待核 289 · 成书前 137)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`build_wechat.py` / `gen_covers.py` / `mp_publish.py` 一直只存在于仓库外的两个产出
目录里(README 写着「三份脚本在 book/tools/」,其实从未提交过)。这次连同新写的
`covers_page.py` 一起收进来,三个产出目录各放一份同样的拷贝。

为第三本《当时明月》加的两处,都按内容分流、不按书名:

- **引诗块**(首行 `《题》 纪年(公元)· 岁 · 地点`)自成一种版式:题、系年、诗行
  三段,诗行逐行断开。姊妹卷的引文是散文,转换器把段内换行并成空格——照那样处理,
  一首绝句会被拼成一行。行短的居中,出现长行的(赋、序一类文的节引)自动改左对齐。
- **章末「本章诗作编年」**六栏表在手机上没法看,改成两行一条:年/岁/地点/诗题一行,
  处境与系年依据压小压灰一行。系年依据一栏没有丢。

顺带三处:`words` 改从各书自己的 `measure.py` 实测(三本的 frontmatter 里 `words:`
常年是 0);`排期表.txt` 随正文一起重出,不再手抄;更新节奏不再写死「每三天」。

《要有光》33 篇重编译后**逐字节一致**——那本没有引诗块也没有编年表,是这套脚本的回归金丝雀。

另附 `诗人传/提纲/清账轮说明.md`:这一轮派给清账 agent 的方法与交稿要求。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
23 个考据 agent 在跑,先把已交稿的落进 git,免得再被休眠打断一次全丢——
这正是 8-25 那轮的教训。另:出处入口表补进本轮新实测的地址与三条会把
限流误判成「查不到」的陷阱;refresh_readme 现在连状态看板一起按 frontmatter 重算。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
出处入口表更正两条硬错:`杜工部年譜_(四庫全書本)` **是赵子栎谱不是吕大防谱**;
元稹墓铭的页名是「墓係銘」不是「墓系銘」。另记下本轮长出来的检索纪律——
`insource:` 的负面结果不可信(`insource:/文璧/` 前 30 条里不含确有该串的页),
凡判「某书没有」一律改逐卷 raw 通检。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
「本章诗作编年」**是要印进书里的**——它就是这一章的年谱,公众号版也整篇带出去。
这一轮有四章把清账过程写进了「系年依据」栏(「本轮取到」「见欠账」「复核未通过」),
公众号 HTML 里原样带了出来,是重建产物时才发现的。欠账区块随便写,那是 HTML 注释,
不进书;编年表不行。加进标准体检,下次自己会报。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
三条全书级模板里,凡落在已交稿章上的先改掉:

- **开场**:七章用同一个「X 是……的。」句式(03、04、13、14、16、17、18),其中 03 与 17
  还都是「船」。改 04(余下的等那几章的考据员交稿)。
- **末节标题**:二十二章里十一章的末节都叫「八 · 身后」,另十一章早已用具体的地名物名。
  改掉八个(湘水、思、靖节、岭南、王士源、罗池、四编诗、烧剩的),余三章待交稿。
- **穿线复读**:王维与李白「同年生、同在长安、无一字相及」被写了三遍,几乎逐字重复。
  第 6 章末节的重述改成回指(那里的作用是点名不是复述),第 7 章改从两部集子这一边说。

另:第 5 章末节首句「他死的时候,诗大半已经不在了」与第 13 章几乎同句,改一处;
编年表里的「待主控定」两处清掉——那张表是要印的。

补丁逐字符匹配、幂等,对不上就停:`scratchpad/detemplate.py`。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
条目的理由、出处、检索路线都写在缩进续行里:

    - [ ] 弟弟之名无考;《勉爱行》系年须核朱谱
          —— 诗题已定位于《全唐诗》卷三九一……**纸本不可及**

`--why` 的正则只吃 `^- \[ \]` 那一行,于是这一条被归进「清过、却没写明为什么没清
——只有这一档是问题」。**报表自己造出来的欠账**:41 条里 30 条早就写明了。
`scan()` 的【成书前】判定同病,写在续行上的标记会被漏掉。

改成按条目聚合(`items()` 连续行一起取),并把分桶关键词补到本轮实际在用的说法
(零命中、逐卷、通检、无一手、两说、无考、不在库……)。修完:41 → 11,
那 11 条是真的。

姊妹书在同一个地方栽过两次——**先怀疑量它的那把尺子**。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
各章欠账里记着考据员对细纲的异议,此前一直只写在欠账里没有回改。已交稿的卷先改:

- 一卷:曹植徙封雍丘王 224 → **223**(《三国志·陈思王植传》「四年,徙封雍丘王」=黄初四年);
  谢灵运袭封康乐公的 406 改成不书年——《宋书》卷六七、《南史》卷十九、《晋书》卷七九
  三处叙袭爵**皆不系年**,正文只作「二十二岁」。
- 二卷:孟浩然章开场「某个春天的早晨」→ 水落天寒的早晨。《与诸子登岘山》「水落鱼梁浅,
  天寒梦泽深」是冬景;诗里的字属骨架层,细纲的「春天」没有任何依据,**该动的是细纲**。
- 四卷:苏轼《和子由渑池怀旧》「写它的人二十五岁」→ 二十六。他生景祐三年十二月十九日,
  公元已入 1037,虚岁按农历年算——十二月生的人一律如此,哲宗同型。
- 五卷:龚自珍到杭州的月份九月 → 七月初九(《己亥杂诗》其一四九自注);
  「浩荡离愁」与「落红」**细纲当成了两首,实为同一首的前后两联**。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
开场:13「那张纸上的字是两行两行对着写的」→「一张纸上的字,两行两行对着写下来」;
17「船是往北去的」→「船头朝北」;18「马是在城外上的」→「他们没有在城里上马」。
七章同一句式现在剩三章(03、14、16),其中 03 与 17 都用「船」的撞车也解了。

末节标题:13→郑笺(元好问「独恨无人作郑笺」,且下文正说「郑笺到清朝才有」)、
14→北邙山、17→剑南诗稿。二十二章的末节现在都用具体的地名物名,没有一章还叫「身后」。

13 的末节首句「他死的时候没有人替他编诗」与第 5 章几乎同句,去掉前半。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
草稿接口要 thumb_media_id,没有封面一篇也建不成。改成一次说清楚缺哪几篇、
以及补封面的那条命令。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
《参考资料》开篇写着「骨架层的每一条都要能追到这里」,但分章一节从初稿起就只填了
王维一章。一首诗到底系在哪一年、从哪一家,实际写在各章编年表的说明行里,
散在二十二个文件中。汇成一张表放进来,并写明它由那些说明行生成——改了说明行就来改这里。

汇出来才看清一件事:这一栏里的近人年谱与校注本(逯钦立、顾绍柏、佟培基、陈铁民、安旗、
孔凡礼、于北山、邓广铭、刘学锴余恕诚、狄宝心)**多数不在网上**,两轮清账的
「纸本不可及」几乎全压在这一格上。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
跟字数看板、状态看板同一个道理:那张表的原始事实在二十二个文件的编年表说明行里,
手抄的迟早对不上。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
第一版把引诗块之后的全部散文算成讲解,报十九章违规;第二版只算「还在引这首诗的字」的段落,
报全书 79% 合规、一章不违规。差这么远,是因为机器分不出「讲这首诗」和「故事继续往下走」,
而那正是这条规矩的要害。信不过的检查比没有更坏。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
第二轮考据员把四章的引诗块逐块扫过,全书现成可用的只有这一句:第 22 章
《秋心三首·其一》道光六年(1826)条下「斗大明星烂无数,长天一月坠林梢」。

**放在纳兰之后,不是欠账条原议的「纳兰之前」**——那份名单是严格按时代排的。
补上之后还顺手修好一处:「二十二个人,前后两千一百年」这个跨度,
按屈原卒(前 278)算到 1826 才合,只排到纳兰仅一千九百多年。

欠账条留着,但注明哪一半已经办了——余下的文天祥、元好问、柳宗元三位,
各章引诗块里一句带月的都没有,补不补是主编的事。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
第 6 章十条翻掉六条(天宝元年左补阙、祖咏生卒、淇上年份、孟浩然落第、《献始兴公》、辋川置业),
第 8 章翻掉两条,第 11 章翻掉两条,终章翻掉一条;余下的一律升级成
「纸本不可及(搜韵 API 与四库本/丛刊本两路已试,皆无)」——那才是站得住的 C。

顺带改了两处正文:第 6 章《献始兴公》原系在开元二十二年张九龄拜中书令之下,
《旧唐书》卷九九「二十三年……累封始兴县伯」是一手下限,须溪本题注作「时拜右拾遗」,
诗不可能早于 735;第 11 章编年表「秋作《昌谷诗》」→「五月」——与该诗首句
「昌谷五月稻,细青满平水」直接抵触。

出处入口更正一条:赵殿成《右丞年谱》在 `王右丞集箋註/卷之末`(「註」、无四库后缀),
上一轮记的四库本那个页名是 missing,四库本附录只有诗评画录、没有年谱。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
第 16/14/17 组据此判了零翻案:搜韵确实给出了系年,但那是它今人编的地图库
(AuthorDate/AuthorPlace),按写作规范 §四·19 不够格当骨架依据;它甚至会跟年谱家打架
(《凤凰台上忆吹箫》搜韵系 1109 青州,年谱家系 1121 莱州)。**搜韵是把清人笺注送到手边的通道,
不是系年的权威。** 顺带把取法改成直接用诗句当 key,绕开 QueryPoem 那个 45 字节的限流页。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
《中州集》的立目人数,第二轮把三条路都走完了:四部丛刊景元刊本总目与四库本正文
**两点全同,都是 223**;四库提要作「为人二百四十有奇」(立目+附见,差额正是提要自己说的
「一传而附见数人」);今人工具书作 249。**正文那个 251,全站正则检索无一条相干。**

按 §四·19「骨架层的每一条都必须有出处」,一个无出处的精确数字不能留。改成「两百多个人」——
这个说法在 223/240 余/249 三个数下都成立,撤掉了无据的精确,又不预判底本。
底本仍是主编待决,欠账条里写明了恢复精确数字时回到哪里改。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
第二轮九个考据员打完「纸本不可及」那一档。收工形状:

    合计 1080 条:已清 861(80%)· 待核 129 · 成书前 90

**总数不是要看的东西,`--why` 那一份才是。** 未清的 219 条里,90 条是主编定夺、
120 条是纸本不可及(绝大多数已注明「搜韵 API 与四库本/丛刊本两路已试」)、
6 条复核未通过、2 条检索到底,**而「清过却没写明为什么没清」只剩 1 条**——
开轮时这一档有 93 条。那才是这两轮真正做完的事。

收尾一并办的:

- **引号统一**:全书 2 650 处全角改半角。HANDOFF 记着这既是体例问题也是工程陷阱
  (按字符串替换正文会因引号形式不符而静默失配),现在清零。
- **去模板收口**:同句式开场七章 → 三章;末节叫「身后」的十一章 → **零**。
- 二十四篇 `status: draft → revise`;人物谱/时间线 AUTO 区、主编待决(88 条)、
  系年依据表、字数与状态看板全部按实测重出。

全套体检:粗体中位 0.0%、教辅腔 0、章号互指 0、跨章真冲突 0、同诗异年 0、章内不一致 0、
必嵌诗 22/22 全在正文里;公众号 24 篇引诗块 214 → 214,无泄漏;
《要有光》33 篇重编译仍逐字节一致。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@oratis
oratis merged commit e9e15c1 into main Aug 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant