用途
cold-reader(文脉を持たない読み手)用于日语说明文的审校。写作者持有上下文,因此看不到「没有上下文就读不懂」的地方,这类问题往往要等到人工审阅才被发现。本工程让「不提供上下文的子代理」先承担这一角色,提前找出这些问题。
针对的六种失败类型
- 指代不明:如「保管庫はNASです/同じフォルダ/残りの3つ」。
- 称呼改写或临时造词:如「サーバーの外に置いた控え/サーバーの外」。
- 使用借来的词语而不加定义:如「詰むことへの対策」(未说明什么情况下会陷入困境)。
- 否定无人提出的说法:如「台数ではなく」。
- 结论段落重复前文段落:如整个最后一段(只提出一个新点)。
- 主张范围偏移:缺少「私の環境では」,读起来像在谈备份的一般情况。
翻译腔、比喻性动词、句尾单调等问题属于「可读性改写」工程,本技能不处理。
位置
流程顺序为:段落构成 → 句子规范 → 可读性改写 → 换行与空行(line-layout)→ cold-reader → 输出。放在可读性改写之后,是因为改写会改变主语与指示词,可能新产生类型1和类型6的问题。
使用方式(步骤)
- 用一行确定读者:写出「谁读」以及「此人已知什么」,不知道的也写出来。若对方有提问或帖子标题,按原文放入。类型3和类型4在没有读者发言内容时无法判定。
- 自查:参照 references/self-check.md 的六个问题自行检查并修正,然后运行机械检查
python3 scripts/restate_check.py draft.md。标为 LOW 的段落是类型5的嫌疑:指出该段首次陈述的一点,若没有则整段删除,若有则把这一点移到陈述理由的段落。该检查只看词语重叠,不捕捉改写的摘要。像 README 这类按节复用术语的参考文档容易误报,此时应阅读 LOW 段落,若含新条件、理由或数值则保留。 - 让「冷读者」阅读:启动一个子代理(general-purpose,model: sonnet 即可),把步骤1的读者一行与正文填入 references/reader-prompt.md 的指示中交给它。不可传递:对话经过、原始文件与路径、写作者意图、上一版、「改了哪里」。传递任何一项都会让读者用写作者的上下文补全,从而漏掉类型1至3。读者返回「段落# / 引用 / 类型 / 为何困惑 / 修改建议」的表格。
- 逐条处理指摘:每条要么修改,要么写出不修改的理由。不修改的理由要具体指出依据。类型1、2、3、6需写明读者知识的出处(如「读者知道……,来自提问中的……这句话」);类型4需写明被否定主张是谁提出的,若无法指名则删除该否定;类型5需引用该段首次陈述的内容。不得事后编造依据来让指摘通过。若读者的修改建议包含正文中没有的事实,需写作者自行确认后再写入,不得直接采用读者的推测。
- 必要时进行第二轮:若修改处达4处以上,或删除、移动了段落,则用修改后的版本再跑一次步骤3,且须启动新的读者(不复用第一轮读者)。第二轮的指摘在步骤4处理完毕,不进行第三轮。
- 记录并展示:连同正文一起,简短附上指摘一览(已修改/不修改的理由),以便人工复核时看出哪些是冷读者发现的、哪些没有发现。
脚本与测试
- scripts/restate_check.py:类型5的机械检查。按段落计算「与前一段重复使用两次以上词语的比例(中心词再利用率)」,对0.40以上的段落标 LOW。校准值与已知限制写在文件开头的 docstring 中。
- tests/test_restate_check.py:用虚构题材的草稿,确认能检测出成为摘要的最后一段,且不检测最终版的段落。运行:
python3 -m unittest discover -s tests
评估
在有、无本工程两种条件下各写两份草稿,由不知道条件归属的判定者统计六种类型的失败数:无工程的草稿为4件、7件,有工程的草稿为1件、0件。