ARTICLE · 1085397
AI 管审稿台账:改一处,另两处还挂着旧结论
匿名 · 电力电子方向在读博士 · IEEE 期刊审稿人
我用 AI 管一个自建的科研事务台账:投稿与审稿的邮件自动进库、自动判级、自动建卡、自动建待办。省事是真的省事,但它有一类失败特别隐蔽:一个判断改了,只有一处跟着变。
台账不会报错,也不会给你个红叉。它只会前后矛盾地继续跑:邮件已经归了档,审稿卡还写着"审稿中",催办事项照旧躺在首页到截止日。这篇把这类"改一处漏两处"的具体场景摊开,讲清让 AI 动台账时该写进要求里的那几条。
(与前面写过的邮箱合并那篇不同层:那篇管"同一封信进两次",这篇管"改完一个判断之后,谁还没跟上"。)
核心判断:让 AI 管台账,它可以替你执行改动,但"一个判断的完整影响面"必须你写在前面。写不全,它就会只改你指的那一处,而且不报错。
台账里最典型的一次订正,是某封审稿邮件判错了档:编辑已经取消了这次审稿,机器却读成了"需要处理"。这一改,牵动三处。
只改邮件记录是最常见的一版:库里的级别对了,卡和待办还是旧的。用户看到的是"处理了,但没处理干净"。所以订正类操作的正确描述不是"把这封邮件改成低",而是"把这封邮件降级,同时把对应的卡置为已取消并清空截止日,再把关联待办置为已完成并留一行说明"。
筛选按钮的候选列表里有没有这个状态; 状态徽章的配色表里有没有这一档; 所有"把这条算作待办"的统计和排除逻辑里,有没有把它排除掉。
这三处少任何一处,用户脑子里的台账和库里的台账就不是同一本。用户看不到的状态变更,等于没改。
AI 生成更新语句时,最顺手的写法是"拿邮件正文里抽出来的那个号当条件"。问题在于,邮件里的编号常带返修轮次后缀,而台账里存的是不带后缀的那个号。
多数数据库驱动不会因为"命中 0 行"而报错,它只是更新了零条记录。脚本照常打印"更新完成"。等几天后你发现状态没变,会以为是别的原因。
所有跨表更新一律按台账自己的主键定位,不用邮件里抽来的外部号; 执行后断言影响行数恰好为 1,日志里打印的是真实行数,不是"成功"两个字。
台账里有"还没有编号的占位卡"这种东西。它的关联键本来是空集,但如果代码在拼键列表时把它退化成含一个空字符串的列表,而判据又写成"任意一个键出现在文本里就算命中",那么空字符串命中一切,这张卡会关联到全库的每一封邮件。
实测下来,那张卡的关联记录数变成了全库邮件总数(1900 多封),而真实相关的只有 8 封。症状是它的时间线里塞满了别的期刊的邀请、感谢和决定信,看着像数据乱了,其实是判据的一支边界没堵。
这类边界,AI 默认不会主动告诉你。要它自己说清楚:"列表为空、字符串为空、字段缺失这三种情况,分别会命中多少行。"
一是共享函数改一处,波及全库。 从邮件里抽标题、抽刊名、抽截止日的函数是全库共用的,改一个正则等于改 1900 多封邮件的解析结果。所以改完必须用旧版把全库跑一遍,逐条比"从有变无""从对变错",而且先判哪些差异是惰性的(那个字段本来就没人消费)。一次小修会顺手把十几条当时不显形的差异一起翻出来,其中还夹着一条回归。
二是每天必响的告警会淹掉真错误。 巡检报的每一类问题,先问一句"它会不会在正常库里每天都响"。会响的要么找到病根,要么降级成"只进报告、不进推送"。判据很简单:不产生任何显示后果的项,才配得上低一档;只要有显示后果,就必须留在告警里。之前有近一个月,晨报里天天挂着同一类元数据提醒,真正要人管的错误反而被埋在下面。
- 写接口返回成功,不等于落库成功。
曾有第二条写入通道被废弃之后仍在被写:写接口一路返回成功,只有读接口才报错,于是"交办的事录进去了、页面上却没有"持续了好几天。凡写入口都要有"写后读回"这一步。 - 改规则前,先证明你的自测抓得住旧 bug。
回归用例一套 21 条,新版本 21/21 全过;把上一版模块载进来再跑一遍,如果不合格的比例很低,说明这套用例根本没覆盖那个病。只跑新版本的"全过"没有信息量。 - 批量订正要留批次标记。
每次回填在备注末尾写一个批次号,出问题才能按标记精确圈定这一批回滚,不误伤别批次和人工订正过的记录。 - 口径要对着人的口径改,不能对着库里的现状改。
库里长什么样是历史(很可能是上一版模型判的),不是标准。曾经因为"库里的现状是这样"把口径做窄了一版,事后还得改回来。
让 AI 动台账之前,先把"一个判断的完整影响面"写下来:哪几张表、哪几个字段,一处不能少。 所有跨表更新按主键定位,并断言影响行数,日志打印真实行数。 让 AI 逐个说清楚空列表、空字符串、字段缺失这三种输入分别会命中多少行。 改完必须读回,并且看一眼页面。用户看不到的状态变更等于没改。 改共享的抽取或判级函数,先存旧版全量对拍,差异逐条归因,别无差别接受。
台账类工作最像的不是写代码,是记账。账能对上,靠的不是记性好,而是每一笔改动都写全了。你在"改一处漏两处"上踩过什么?欢迎在后台说说。