有一天我收到这样一条进度汇报:
Probe 事件:i18n-sweep 转 stale,等 catalog 重生后自动续,无需处理。
发它的是 Claude Code。我在做两个自己的 App,开发交给它在几个终端窗口里同时跑,它每天回来报进度,碰到要我决定的事就来问。i18n-sweep、catalog、stale 这几个词,都是它在那一次会话里自己起的名字:i18n-sweep 是一条任务线,catalog 指翻译表,stale 是它给某种状态打的标记。这些我一个都没记住,读完只能回头去问,这是什么事,要不要我做点什么。
我现在每天写出去的中文,多数不是自己一个字一个字打出来的。除了这类汇报还有两类。一类是工作:我做外包性质的软件质检,拿到别人交来的代码和评语逐条核对,把结论填进甲方的平台和表格,再把要改的地方反馈给做这道题的人,每天几十条,格式和读者都是固定的。另一类是这个博客。三类加起来量很大,很早就交给了模型:有一份文件规定中文该怎么写,模型每次动笔前先读一遍。Claude Code 管这种文件叫「技能」,说到底是一段很长的指令,外加几份参考资料。
这样过了几个月,三类文字都开始出问题。甲方直接指出交付的文字「AI 味重」,有一次对接人干脆自己动手,把一份四千多字的需求文档改到一千出头,还在群里说:「prompt 可以用模型辅助设计难度,但一定要降低 AI 浓度,AI 产出的多余 emoji、标点、空格、描述都去掉,都用自己日常开发中的话术。」写给复核人的报告动辄几千字,人家要的是七八百字。给我的汇报就是开头那条的样子。
九月初开始从头改。思路是拿考试的办法对待规范:先出题,模型按规范作答,由我来判每一份「能不能直接发出去」,不能发,就回去改规范,换题再考。十天里一共考了二十轮,其中三轮是题出坏了,不算数;模型调用有账可查的约三十七美元,加上没逐轮记账的部分,在四十几美元。到最后,规范里分出的四类文字都写到了能直接发的程度。如今我每天收到的汇报、发出去的工作消息,还有博客上的文章,包括这一篇,都是按这套规范生成的。
一、按读者划分的写作规范
旧规范是按怎么写来分的,分成审阅一篇、改写一篇、和人一起写一篇三种。这个分法回答不了最要紧的问题:这段话是写给谁看的。「这条不合格」这句话,填在平台的表格里是一种说法,发在工作群里又是另一种说法。评测时出过一次典型的错位,模型学会了群消息开头那句「麻烦几位对一下」,转头在平台的表格字段里也客气起来,而没有人会在表格里这么写。
改造后按读者分成四类:给我本人看的汇报,对方会读到的工作文字,我署名发布的文章,没有特定读者的朴素中文。这些判据没有一条是专门冲着模型定的,换成人来写一样适用。
给我本人看的汇报
这一类由模型写、给我读。我手上同时有十几条线在跑,能记住的只是自己交代过什么、上回点头同意了什么,编号、代号、窗口名这些我都不会去记。所以汇报开头先给判定和一句理由,「已完成」这种状态词不算判定。验收类写成「不通过,两处必修:日志泄漏、边界没处理」,决策类写成「能做,建议走 B,因为数据不出本机」。
要我拿主意的事,判定之后马上就说。这条是从一次抱怨来的:有份汇报先用两段话论证方案行得通,到最后一句才问「要不要按 A 方案走」,而我从头读到尾,想知道的只是要我做什么。二选一的事,两个选项编号分行,每项后面写一句选了会怎样。几件并列的事同样分行列出,不用分号连成一大段;某件事下面还有子选项,就缩进四个空格再列一层,外层编号照常往下排。
这一轮头一回出现的代号,要当场用一句话交代清楚,交代不清的干脆不提。开头那条汇报改写后是这样:
上一轮验收结论是「不通过」,两处待改:6 条文案只补了英文没补日文;设置页里动态拼出来的字符串没扫到。但建议先发这版——这两处只影响日文用户的极少数界面,不碰主流程,而商店审核窗口今晚截止。
stale 那条不用管:i18n-sweep 是扫描全 App 界面文案、把没进翻译表的补上的那条任务线,它的结果被标成过期,是因为翻译表刚被另一条线改过,翻译表重新生成后它会自己再跑一遍,几分钟内自动续上,不需要你做任何事。
「不通过」却「建议先发」,两个结论看上去互相矛盾,这时因果要在同一句或紧挨着的下一句里说明白。我判读时对这段的评价是:两个问题分别用「不通过是……建议照发是……」接起来,彼此又分得很清楚。
事实只挑撑得住判定的几条写。另一份汇报里有这样一段:
计划已接进跑步页,段前 5 秒震动、掉出区间语音播报一次(用 10 秒滑动平均判断,等红灯不算)。11 个新单测全绿,手表和手机各跑一次 8 组 400 米一致,90 分钟多耗 3% 电。
这段话挑不出一个用错的词,可读完我不知道它想让我干什么。判读时我当场记下:「不能假设读者对上下文全部了解,一段话如果没头没尾,不如不要呈递,尤其是次要信息;重要信息则一定要给出上下文。」这句后来写进了规范。我觉得它是这一类里最有用的一条,因为缺了上下文的段落看着在解释,其实读不懂,比不写还多耗读的人一份力气。
嫌长要删的时候,只保留判定、待决事项的列表和一条必要的事实,其余成段删掉。这里出过两次问题。删法有两种:把旁支、经过、逐项罗列整段去掉,或者每句都削短一点。后一种删完,句子一句没少,每句都短了,判定靠的那几条依据反而没了。
对方会读到的工作文字
这一类包括外包交付里的整改反馈、群里的催办消息、给复核人的核对结论。看这些文字的是甲方的复核人、质检人和同事,一次要看几十条同样格式的字段,而且他们会留意哪里像 AI 写的。
开头先点明说的是哪一题、哪个项目或哪一期,省得对方往上翻。每指出一处问题,都给出位置和能复现的现象:位置是题号、字段名、文件行号或操作步骤,现象写成在什么条件下得到什么结果,对方照着这段话能找到地方,自己试一遍。没问题的地方不提,规则背后的道理也不讲。口气放软,用「建议改成」「这边查验是这样」,避开「退回」「必须」「你错了」。
怎么验证的,一句话带过,不展开,也不替结论担保。「没配 key 时能删任意短链,返回 200」是现象,要写;「本地起服务跑了三轮逐条比对」是细节,「经确认无误」是担保,都不写。不作保这条有来历:所有收集来的文字里,只有一处被逐字点出来说「这句只有 AI 会写」,那是一份产出主动报上的「Prompt 人工撰写率」。我觉得人写报告不会这样替自己作保。
这一类花时间最多的是口气。一开始拿给模型参照的,是工作群里的一条真实消息:
43 期格式质检,麻烦几位对一下:
@甲 7378「任务质量」填成了「是」,改成「高质量」;「是否是高质量题目」是空的,补一下
@乙 7483 四个模型的「验证截图」都是空的,各补一张
@丙 7491 四个模型都判了不合格,这种情况下需要填一下「脏数据标签理由」
先客气一句,接着一人一行:哪道题,哪一栏填成了什么,和哪里对不上,怎么改。模型第一轮就学会了,原来写「评语和打分退回重写」,这次写的是「麻烦对一下这题,评语和打分需要改」。可它把这份客气也用进了平台的表格字段,就是前面说的那次错位,表格没有收件人,客套放在那里是多余的。所以又加了一条:填回表格的内容,先求讲清楚,口气放第二位;判了不合格,就得写到对方能照着找到位置、自己验一遍,不能因为想说得客气,把这些删了。
工作文字里还有两种,规则单独定。一种是出题时写给被测模型的需求描述,只描述做出来的东西该有什么行为,不碰实现:类名、函数签名、参数名、类型注解、文档字符串、单测建议都不出现,给的输入里有也要删掉;每段只谈一个主题,每句只说一件事,段与段之间不留空行。这几条来自开头那次改稿。模型写的版本这样开头:
策略用公开枚举 MergePolicy 表示,四个成员分别是 DEEP、REPLACE、EXTEND、EXTEND_UNIQUE。DictConfig 节点只能取 DEEP 或 REPLACE……读写策略靠两个接口:OmegaConf.set_merge_policy(cfg, policy, key=None) 和 OmegaConf.get_merge_policy(cfg, key=None, inherited=True)。
对接人改完是这样:
策略希望有四种:深合并、整体替换、追加、去重追加。字典只能用前两种,列表只能用后三种,含义和现在的参数几种一致。设到叶子节点或者设了不支持的策略要报错。要有公开的方式按路径给节点设置、读取、清除策略,读取时能区分节点自己设的和实际生效的,生效值往上找最近的祖先设置,对当前节点类型不适用的跳过。
改过的稿子里找不到一个枚举名。我觉得两版差的不是用词,模型那版的问题是把怎么实现当成了要什么。
另一种是判分用的评分标准。一条只检查一件事,句式是「做了什么操作,应观察到什么」,期望结果写到具体的状态码、次数或返回值。甲方给的规范里有正例:
考点 22:某请求首次处理后,数据库中的结果码应等于 RELEASE_MANIFEST_CHANGED
考点 24:相同参数再次提交后,该请求在数据库中仍应只有 1 行
不合格的写法,要么一条里挤了十几项要查的东西,要么是「代码质量好」「体验良好」这种没法观察验证的话。
我署名发布的文章
「像我自己写的」这种要求听上去没法说清楚,是四类里最难写成规则的。拆开来看,能拿来核对的有四条。文中每个判断、感受和细节,都得在材料或我的口述里找得到,材料以外的经历、情绪和人物一句不添。拿不准的地方照实写拿不准,拿得准的地方不加缓冲,也不往高处拔,意义不替我总结,「让我明白了」「或许这就是」这类收尾不用。开头直接写事,不交代大背景,不先亮主题,写到最后一件事或最后一个念头就停。谁都能用的装饰性比喻不用,不排比,不堆成语,我自己的意象例外,可以用,而且要用足。
意象那半句是看了产出以后加的。之前的规则干脆写着「不比喻」,可我以前写文章用过旷野、寺庙、逛五金店这样的比方,这些是我自己的东西,和谁都能随手拿来的装饰不是一回事。
给模型的东西也和其他几类不同,不给描述性的规则,给的是几段我亲手写的原文,让它照着原文的分寸写。挑原文时,引了古文的段落不要,转述别人书里观点的段落也不要,只留写了具体经历、下了我自己判断的那些。
写得严肃些的文章,还要多守一组关于事实的规矩:凡是陈述事实,都加脚注,文末列出对应来源;下结构性的结论,至少举一个时间、人物、事情、结果都写明白的例子,「据说」「当时很多人」这类说不出是谁的说法不用;段落的主语是对象、时间线或制度,观点跟在证据后面;我个人的判断标上「我觉得」,不拿「不难发现」「由此可见」替读者下结论。
朴素中文
这一类只在明说要「朴素」、或者说「不要我的语气」时才用。它不带任何人的样本,是一类没有作者口吻的文字,全靠规则约束,不靠模仿。第一句就是结论,或者就是要说的那件事,「本文将」之类的开场不要。内容以材料为限,自己推出来的要说明是推断,没把握的要说没把握,细节不补,评价不加。比喻、排比、成语堆砌、自问自答都不用,「值得注意的是」「综上所述」「不难发现」这种承上启下或收尾的套话也不用。
四类之外还有一条通用的:一段写几句、一句有几个转折,都不做规定,长短由内容决定。改造中途加过分段和句长的规定,后来都撤了,经过写在第二部分。
二、让模型照着规范写
逐条加规则的那几轮
一开始想得很简单:规范写得越细越好,浓缩成一份指导文本,和题目一起交给模型;哪道题输了,就针对它补一条规则进去。每道题两边的产出并排摆着给我判,我不知道哪边用的是哪一版。
汇报这一类,规则越补成绩越差,一连三轮:指导文本由 1281 字增加到 1520 字,成绩从四胜一负,到三胜五负,再到两胜两负外加一题两边都不能用。找到的原因是一段范例。指导文本里给了一份完整的示范,结构是「一句判定,三个编号选项各带后果,最后写我推荐 1、你不回我就按 1 走」,模型拿它当了填空的模板。有道题按材料只有一种处理办法,产出里却照样列了选项,其中「先修完再归档」「直接关掉不留单」两条是材料里没有的,末尾照例写着「我推荐 1」。我觉得它学到的只是范例的样子,没学到分寸。
工作文字这一类问题更严重。等指导文本加到 2097 字,一轮三道题共六份产出,我一份都没判能发。我给其中一题的评语是:「两个都不是很好的文本,阅读时非常吃力,基本上没有阅读下去的欲望,也不大像是人随手写的。」
评测于是停下来,转去查文献,查到的两组实验正好对得上。第一组讲约束条数和遵循率:同一个模型,约束从一条加到十条,通过率由 94% 降到 21%,降得最快的是四到六条那一段;另一项实验里,八条约束时每一条单看还有四成能做到,八条同时做到的不到 6%。对照当时那份指导文本,读者画像、七条行文结构、一串硬性规定、候选规则、范例,加起来的约束早就不止五条。我觉得照这个结果,规则越加效果越差是正常的,不能怪模型不听话。第二组讲风格模仿:拿一段抽象的风格摘要给模型作参照,模仿准确率不到 6%;拿作者亲笔的典型段落作参照,是 91% 到 100%。那份指导文本里篇幅最大的读者画像和结构描述,恰好都是抽象摘要。
那三道题挨的差评,细看也不是文风的事。需求描述写了一千两百字,读不下去,缺的是一个长度上限;报告一上来没有上下文,是因为模型不知道这段要发给谁、对方已经知道多少;表格字段里出现客套话,口气又命令又笃定,是把几种场合的写法搅在了一起。这些毛病,文风规则写得再多也管不到。
提示词的四层
后来的做法是把提示词的顺序翻过来。以前先讲规则再给任务,现在拆成四层,从前往后依次是:
- 两三段同一体裁的真人原文;
- 一张五行的场景卡:发给谁、走什么渠道、对方已经知道什么、要他做什么、字数上限;
- 不超过五条硬边界,也就是能用脚本检查的禁止项;
- 任务和材料。
原先的读者画像、结构描述、候选规则和编出来的范例都没有保留,指导文本从 2097 字缩到 963 字。为了确认这一步改对了,拿同一批题目让旧文本和新结构各写三份,再换一个模型按新结构写一遍作对照,比的只是每边有几份能直接发,谁稍好一点不算。头一轮的结果,整改反馈那题原先一份能发的都没有,这回新结构写的能发了;压缩报告那题,也是新结构那边写得最好。
作参照的原文必须出自真人之手,还要查得到来历。在我的外包工作区里找样本时出过错:有一批驳回记录,从口气、停顿到称呼都挑不出毛病,一查来源,是我这边的系统替人拟好发出去的;另一个项目里也有一栏看着很口语,其实是模型填的。从那以后,读着再像人写的也不算数,要在记录里查到作者一栏,是谁、什么时候写的、有没有留档。
场景卡要回答的就是这段写给谁。五行里最管用的是渠道,同一件事在群里说和填进表格,写法完全两样。字数上限要说清按含标点的字符算,不说的话模型只数汉字。有一回要求「压到一千字」,交上来的稿子光汉字就有一千两百个;拿来对照的真人版本,汉字六百多,加上标点也就一千出头。
硬边界要按体裁分开。一开始只有一组五条,对所有体裁通用,后来发现只在整改反馈上管用。用同一组去写需求描述,输入里的类名和函数签名被原样当成了约定;去写评分标准,考点里看不到具体的期望值。后来按反馈、需求描述、评分标准各写五条,分成三组,需求描述和评分标准那两道题一次就都能发了。
评测的做法
前面提到的胜负和「能不能发」,都是这样考出来的。一道题里有四样东西:一段像口头交代的指令,比如「这题我要退回去让他改,你写一条给他看的反馈,让他看完就知道该怎么改」;一份材料,只有事实,没有任何人的原话;一张判据表,写明必须出现的字、不许出现的字和需要人来判断的地方;再加上这题要测的点。题目里的场景全是编的,但样子仿照真实工作,比如「某 App 的导出功能验收不通过,但上游方案已经换了」。
每道题派给几个无头会话分头去写。所谓无头会话,是不带交互界面的模型实例,除了派给它的那条消息,它什么也看不到。每条消息开头都固定写着「本题只依据本消息内提供的信息作答,不要读取任何本地文件」。规范文件和它在同一台机器上,要是不加这句,它可以自己把文件翻出来照着写,这样考出来的只是它会不会找文件,跟规范好不好没关系。产出并排放在一个网页上,左右来自不同版本的规范或不同的模型,页面上不标。我判的时候只看文字,结论定下来以后才去看哪边是哪个版本。判输的题,回到产出原文里找出问题出在哪一句,再去改规范里管这件事的那一条,然后换一批新题重跑。
判卷的办法前后改了四次。最早分五档:A 明显好、A 稍好、差不多、B 稍好、B 明显好。有一轮三道题我全判了「差不多」,看完不知道该改什么,「差不多」既可能是两边都好,也可能是两边都没法用,光看这三个字分辨不出来。后来改成只判这一边能不能直接发出去,不能发的再选一种毛病:「看不出哪里出问题」「语气不对」「太长或太短」「不像人写的」。改完的下一轮就得到了明确的结果,三道题都不能发。查到的一项实验也指向这边:两两比较时约 35% 的判断会前后翻转,绝对打分只有 9%。
第二次改的是对照组。前四轮拿来对照的,是什么规则都不给的模型。它写的东西连编号列表都没有,我判的时候一眼就认得出,这样比只能说明有规则比没规则强,至于某一条规则该不该留,比不出来。我当场提的意见是:「已经明确有偏好的东西应该也补进基线,不然一眼就看出来哪条是基线;新旧对比每次都应该基于还不确定的语句来做。」这里的基线就是对照组。照这个意见改过以后,对照组先带上已经确认的规则,另一边在此之外多加一两条还没定的候选。第一轮的结果和预想的不一样:两条候选都没比对照组好,对照组靠已确认的那些规则,自己就写出了想要的样子。有一条候选「巡检类每件待决写一行我建议 X」前后加进去好几次,连着输了四轮,最后没有留下。
第三次是同一题多跑几份。有一轮我判了一边「明显好」,其实两边带的指导文本一字不差,只是同一个提示词跑了两次。单跑一次的偶然差别,足以盖过规则之间的差别。从那以后每边各出三份,我看三份的总体表现再下判断。
第四次是样本和题目不能同题材。那一轮要压缩的是一份需求文档,给模型作参照的真人样本也是同一个项目的需求文档,模型抄样本就能交卷,这一轮只能不算。
题目本身也出过三次错,同题材算一次。花钱最多的一次,用的是一道真实工作里的题,五个模型写了十份稿子,花掉二十六美元,判完发现两个版本读起来分不出高下。毛病在口述稿:模型顺着口述稿的说法往下写,写出来的风格是口述稿的,规范到底添了什么,看不出来。还有一次,材料本身就是我写好的一段路上的观察,让模型整理,交回来的和原文几乎一样,我的判读记录是「自己写的已经有很多不错的修辞,导致看不出来 AI 做了什么」。后来改给十条零碎的日志,都没成文,其中三条跟主题无关,模型得自己挑、自己连、自己定口气,两边的高下这才分出来。
三次错误合在一起,得出的出题规矩分两头:工作文字和汇报的题,材料里只放事实,不放作者自己的话;「像我自己写的」那一类反过来,材料要用没成文的零碎记录,我已经写成、带着修辞的文章,只能拿来当样本。
两个模型各自适合的体裁
同一套样本和规则,换个模型结果就不同。这次比的是两个模型,Opus 5 和 Sonnet 5,按体裁分,结果是这样:
- 整改反馈、给复核人的核对结论、压缩需求描述:Opus 5 写的能发,Sonnet 5 的不能;
- 评分标准、从要点写需求描述:Sonnet 5 能发,Opus 5 不能;
- 给我看的汇报和署名文章:三道题都只有 Opus 5 写的能发。
两个模型出错的方向也不一样。Sonnet 5 删得太多,口述里「大概是这么处理」这种留有余地的说法也一并删掉;它还会把自检的话漏进正文,比如开头来一句「812 字,在 1200 以内,符合要求。直接输出正文:」。Opus 5 则是解释得太多,评分标准总写得偏长。所以技能里记的是每种体裁该交给哪个模型。正在干活的模型如果不是这类文字的推荐人选,就把这段转给推荐的那个去写。
句子和段落的长短
语言细节里来回改得最多的是句子和段落的长短。有一轮判完,我的反馈是:「偏好长句子、喜欢把段落聚成一块,这其实并不是推崇的风格,只是因为很多时候用口述语音转文字,表述上往往会把自然段弄得很长。」
顺着查,发现有三个地方同时在把句子和段落往长里带。规则里有一句「长短句照样本的走法」。样本是从长文章里整段截来的,一段平均一百三十到两百三十字。记录我说话习惯的语气档案里还有一份句长统计,数据来自日志和口述转写,句长中位数在三十五到五十五字。规则让模型学样本,样本和统计又都偏长,写出来的东西只会越来越长。
接着加进去的规定是:每段只写一件事,写完就另起一段,时间、地点或话题一变也另起;两句能拆开的就拆开,一句话里最多转一次折。句长统计换成拿我发表过的文章重算。下一轮出来,我的反馈是:「每一个段落被切得太碎了,把前面那个会让段落变得这么碎的说明撤回,不要主动去规范一个自然段有多少个转折。」
最后定下来的是哪一头都不规定。规范里关于长短只剩一句话,意思是分段按书面文章来,别学口述转写的样子,句子和段落写多长看内容需要,既不故意写长,也不故意拆碎。脚本里查句长、段长的那几项也全部删了。拿同一道题再跑,原来切成三到四段、每段平均五十到七十五字,现在回到三段,每段平均八十到一百零四字。
这一来一回,我觉得有两点。我的日志是语音输入的,从里面数出来的句长,是我说话时的习惯,拿它当写作的目标本来就不对。反过来,凭一句偏好就去加形态上的硬规定,又容易改过头。所以在句子和段落的形态上,规范只保留「不要照搬口述转写」这样一句指方向的话,别的交给人来判,脚本不查。
对我写作习惯的两处误判
规范里还有两处,是凭着对我的印象写进去的,后来发现都不对。第一处是格式。模型看过我几百条口述,里面几乎没有编号列表,我说事情就是一段话连着说,它据此在规范里写了「不用表格、标题、加粗」。按这条写出来的汇报,我看了就否掉了。给我看的东西,需要格式就该用格式,三个选项挤在一段里,远没有编号列表一行一项好读。我觉得问题出在把两件事混在了一起:我怎么写,归署名文章那一类管;我怎么读,归汇报那一类管。
第二处是用词。语气档案里原先记着我的几个口头禅,毕竟、愈发、多少有些。把我 2024 年以后自己写的十一篇文章挨篇搜过,这三个词一次都没出现。那份档案是根据更早的材料和印象归纳的,一旦写进去,模型就照着用,中间没有人回头查过。现在档案里要写我常用哪个词,必须同时附上一处我亲笔文章里的原句,附不出来就不写。
禁用词和机器检查
旧规范里列了很多不许用的词,有文学腔的,有书面腔的,有评语结尾爱用的,另外还有一张替换表。比如把「属实」全换成「一致」,「一致」接着就成了新的口头禅。我觉得禁词表的坏处就在这里,它逼出来的是更隐蔽的绕开写法,毛病只是换了个词。这次文风类的禁用词全部删掉,我定的口径是「应该以规范的指导让模型生成合适的东西,而不是以违禁的方式」。
还留着的,是划定信息边界的那些词:工具名、截图的文件名、内部流程的叫法,以及「甲方」这个词本身。它们要管住,是因为不能让对方看见。交付的文字本来就是写给甲方的,文中却称对方为「甲方」,等于把内部的叫法摆到了对方面前。这些词按项目各列一张表,我看过才用,不写进通用规范,因为每个项目要防的东西都不一样。
能交给脚本自动检查的只是规范的一部分。最后的分工是:字数超过硬上限、命中项目的信息边界词表、几种确定的结构毛病,比如结尾的总结句、需要决定的事埋在后面、营销腔的模板段,由脚本标红;文风、句子长短、段落疏密、像不像人写的,脚本一概不管,交给规则描述和真人样本,最后由人判。
检查脚本本身也有过两个毛病。其一,句长的门槛只接受两个固定的数,填了别的数,脚本不提示,自己改回默认值,提示语里印的却还是新填的数,所以查出来的结果看着正常,用的其实一直是旧门槛。其二,从命令行把文本传给脚本时,只要文本开头是两个减号,脚本就把整段当成命令参数扔掉,当作空文本来查,同样不报错,而 markdown 文件的文件头恰恰是以减号开头的。我觉得工具出错却不吭声,比规则本身写错更难察觉。
还没解决的问题
有几件事到现在还没有办法。我自己的样本里最早的是 2024 年写的,人写东西的习惯会变,哪天该换样本,凭什么判断我已经不这样写了,眼下都说不上来。体裁和模型的对应表只在 Opus 5 和 Sonnet 5 上测过,模型换代以后,多半得从头再测。至于「真挚」,能拆成规则的只有可追溯、保留不确定、不拔高、不总结这四条。我觉得一段文字读着诚恳,靠的不止这四条,其余的部分,目前还只能由人读了再判。