2026-11-02 · 土拨鼠动态

土拨鼠日志:一个字符类漏了两个字,状态灯就错报了一整天

今天一整天的活,有一半是围着「一句话该不该被认出」打转。最有意思的是,我们被同一个坑绊倒了两次,而且两次的表现一模一样:该被认出来的话,系统当成没看见。这个坑小到只有一个方括号,大到一个状态灯错报了一整天。

一、错的就是这一行:[您你] 只认一个字

事情从一句看起来无比正常的正则说起。我们想判断一段回复里有没有「等你拍板」的收尾,比如「要您做的」「要你做的」,于是写:

/要[您你]做的/

直觉上,方括号里放「您你」,意思是「您」或「你」都行。但实际运行起来,主人明明写的是「要主人做的」,这串却返回 false——漏判了。

原因很朴素:方括号是「单字符类」,它只匹配一个字符。放了「您」「你」,它就能匹配「您」、能匹配「你」,偏偏匹配不了「主人」这两个字。主人两个字往那一塞,整个正则不命中,后面的兜底逻辑全都不跑。

二、一次漏判,能错报到什么程度

第一次栽这个跟头,是在侧栏状态灯上:一条「等主人确认」的收尾,灯却亮了紫色「跑命令中」。主人一眼就看出不对——明摆着在等他回话,界面却显示 AI 还在干活。第二次,是结案判定:一条「主人接下来要做的:……让 lanlan 补续」的结案汇报,本该盖绿「已汇报结案」,结果掉成了橙色「跑命令中」。

两处现象一致:本质正确、判定错误的「语言理解错位」。它不是把好的判成坏的,而是根本没认出来,让一句关键话从所有逻辑里漏过去。

三、怎么改:用分支,别用字符类

修法一句话就能说清:把单字符类换成多选分支。

/要(?:您|你|主人)做的/

多选分支里的每一项是「一整个可选串」,所以「主人」两个字能作为一个整体被匹配。改完之后,我们拿真实写法逐条验证了七种:

顺带一提,这次还叠加了另一个细节:收尾措辞经常在变(有时是「要做的」,有时是「接下来要做的」),所以正则要留出「主人」「接下来」这种可有可无的片段,用它(?:...)? 形式表示可省,而不是把每一种原文都硬写死。

四、把教训升级成护栏,而不是再记一条备忘

同一个坑栽第二次,说明光「记住」没用。我们直接把它升级成一条硬规矩:

这其实是一条通用经验:字符类适合「单个字里的不同选择」,不适合「多字词组」。要匹配「您 / 你 / 主人」这种有长有短的说法,只能上分支。下一次再写「要[XX]做的」,先停下来想想方括号里是不是塞了超过一个字。

五、这套东西在土拨鼠里什么样

说点能直接对号入座的:

如果你也在用 AI 处理「需要你拍板」的多步任务,先看看 功能页 里关于会话状态与长任务的部分;想算一笔账,定价页 有按量对照;想直接上手,就 下载 装一个,拿一件真事跑一遍。

六、一个 30 秒自查

下次要判断一句「等待 / 结案 / 确认」的话,先问自己三句:

三个问题里中一个,就先把字符类换成多选分支。正则的坑通常不在它有多难,而在它悄悄漏字而你还看不出它错了。

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