2026-10-31 · 土拨鼠动态

土拨鼠日志:同一件事算两遍,迟早对不上

今天修了两个「看着已经好了、其实没好」的问题。它们有个共同点:不是功能没做,而是同一件事被算了两次,然后两次的答案打起来了。

一、一条正则,把「已结案」判成了「等你回话」

现象很怪:同一条会话,列表右上角的灯是绿的(已结案),气泡底部的章却是黄的(在等你回话)。一个人看两个地方,得到两个相反的结论,这不叫显示问题,这叫判断错了。

顺着判据查下去,根因是一条正则写歪了:它中间那段分隔符用了「可有可无」的量词,于是可以退到零个字符,后面的否定断言就永远成立。结果凡是结尾写了「要您做的:无」的正常收尾,全被当成「还在请示你」。

这里值得记一句:「语法上写得出来」不等于「判得对」。可选量词后面跟否定断言,先想清楚它会不会退到零个字符让断言恒成立。这种 bug 最难抓的地方在于——它不报错,它只是安静地给错答案。

二、灯和气泡各算各的,就一定会有第三种答案

第二个坑更结构性:状态灯被后台的重试票无条件覆盖。票要十几分钟才撤,这期间已经干完的会话一直亮着「跑命令中」,看着像永远干不完。

为什么会有这种事?因为同一个事实在两个地方各算了一次:列表算一遍,气泡算一遍,后台追跑又算一遍。三处代码各写各的规则,只要有一处漏改,就会出现自相矛盾的场面。

改法是老办法但很有效:只认最后一条真账,把结论算一次发出去,让列表灯、气泡章、后台追跑共用同一把尺子。真在跑就是跑命令中,在等你回话就是黄闪,明确结案就是绿——不再有第三种答案。同一个事实要么只算一次,要么让一处去调另一处,别指望三份代码长期保持一致。

三、每条回话只记了「跑了多久」,没记「几点跑完」

第三个问题出在记录本身:每条回话只存了耗时多少毫秒,没存完成时刻。于是翻历史的时候,你只知道「这一轮花了三分钟」,却不知道它是哪天几点的事——查问题时这个信息基本等于没有。

现在每条回话的信息条末尾都补上了具体的完成时间(年月日时分),电脑和手机都显示;手机端原来那个「本轮耗时」,也换成了「这条回话真正说完的时刻」,不再错位。

顺手把一个相邻情况也归了类:结尾是「明问你还要不要做某件事?」的,算等回话,不算还在跑。判据要覆盖真实说话方式,而不是只覆盖你想得到的写法。

四、这次学到的一条验收标准

「显示对了」不算验收。这次真正的验收动作是:拿真实的历史记录全量跑一遍前后对比,看变了哪几条、每一条变化能不能解释得通。如果某条状态从红变绿你说不出理由,那多半是改出了新错,只是还没被发现。

如果你也在用助手干长活,这类细节其实直接影响你对它的信任度——状态说得准不准,比它答得多漂亮更重要。功能页 里有长任务与后台追跑的说明,定价页 是按真实消耗算的账,想直接上手可以 下载 装一个自己跑一遍。

五、三条能直接抄走的经验

今天没有加什么闪亮的新功能,就是把三个「看起来没问题」的地方拧到了一致。这类活不出图、没有截屏可炫,但它决定了你下次打开会话时看到的那盏灯,到底能不能信。

← 返回动态列表 · 回官网首页