Repository navigation
v2.1.2 · 外部工具冷启动验收:修 3 个「填了没人读」的字段
v2.1.2(2026-09-26)
这一轮的验收人不是我自己,也不是我的 agent —— 是另一个编辑器的 agent。
给它一个仓库地址和一篇阅读题,它自己装、自己分析、自己交付。它把活干完了
(装的时候还逐一核对过 163 个文件),然后主动报了一件我没发现的事。
修的:三类字段,三种病,同一个根
根:模板、契约、实现三者不同步 —— 而模板是别人抄的样例。
样例与契约不一致时,照着抄的人是在按一份残缺的规格干活。
| 字段 | 模板 | 契约表 | 渲染器 | 后果 |
|---|---|---|---|---|
questions[].user_wrong_choice / user_thinking |
有 | 没提 | 不读 | 使用者自己「当时为什么选错」的原话,页面上看不到 |
review.dual_channel(A032 双通道) |
有 | 没提 | 不读 | 核心方法论的落点不显示 |
questions[].gap / transfer |
没有 | 标「逐题必填」 | 读 | 照模板填必然缺两个必填字段 |
三个字段现在都渲染了,两个必填字段也补进了模板。
第一类最扎心:SKILL.md 自己写着「喂错题时给三样最有效:①原文 ②哪题错+正确答案
③你当时为什么选错」—— 第三样此前只进 JSON,不进页面。
新增门禁(第 11 道):交付模板字段归宿声明
模板现在带一张 _渲染说明 表,逐字段写明渲染成什么或为什么不渲染;
门禁查「有没有声明」。
为什么不做「模板键 ⊆ 渲染器读到的键」这种机器判定(那是最直觉的写法):
实测模板里本来就有一批字段渲染器不读且属有意为之 ——
card_names(用卡文件真标题替代,更准)、meta.*(存档用)、user_note(是输入信号不是输出内容)。
那个判据会一口气报十几个假阳性。按本项目既有纪律:喊狼来了比没有门禁更坏。
→ 改成声明式:零假阳性,而且加字段必须当场想清归宿。
顺带修的
why字段的换行此前被吞(同一渲染器里takeaway早就支持)→ 统一了
我自己的两个错(都记档,没抹)
- 门禁 11 无限递归两次 —— 夹具写在门禁函数里、夹具又调门禁函数;
改名成_check后忘了把夹具搬出去,第二次照样递归(输出刷了几百屏)。
教训:函数改名只是改名,「谁调谁」要重新想一遍。 - 又用了整份覆写(改模板时)—— 两轮前刚踩过的动作。
这次安全(先完整读过、事后逐字段验过),但习惯不好。
Full Changelog: v2.1.1...v2.1.2