第七十七章 排雷
周一早上七点半,他给麦景行发了一条:「昨晚Codex提了一个问题,你看一下:注释里嵌英文函数名或配置项路径的情况,预处理规则按字符切,会不会把函数名截成英文片段,把注释语义搞乱。昨晚说明天确认,今天来了。」
麦景行八点不到就回了:「在看,半小时内给你答案。」
等的时间里,他把工位整了一下,泡了杯茶,把今天要做的事列了一遍。
项磊那边今天要确认合同签字,乔木要开始整理星汇云的接入配置文件模板,麦景行的预处理模块昨天开工,今天是第五天。如果代码嵌注释这个情况要处理,工作量怎么加进去,要重新评估一下时间线。
他坐着想了一会儿,那个问题最坏的情况是什么。项磊给的样例是六个,有代表性,但样例终究是样例。星汇云八个仓库,四个是老项目,早期的工程师写注释没有规范约束,函数名、路径、参数名夹在注释里这种写法,说不定不止一个文件有。要是等第一阶段接进来跑,才发现规则层漏了这类情况,再回头修,那才是真麻烦。让麦景行今天确认,对的。
八点二十七分,麦景行的消息来了,语气比预期的更沉:
「确认了,真有。工具包那个文件,注释里有这样的写法:『参数 config 对应 ConfigManager.getDefaultConfig(),请勿覆盖』。这里 ConfigManager.getDefaultConfig() 是英文函数调用,夹在中文里。规则按字符切,这段会被判成'中文+英文片段',英文片段是一个函数签名,送进英文训练路,模型会把它当英文注释来学,不对。」
停了一下,又来一条:「范围我看了,在项磊发来的六个代表性样例里只出现了一次,那是一个早期留下来的老工具类。其他五个文件没有这类情况。」
他没有立刻回,把这段话看了一遍。麦景行早上说"在看"的时候语气很平,这一条"真有"说明他自己也被结果吓了一跳。前世他见过类似的情况,这种小规则问题不显眼,往往等到验收才暴露,然后拖垮整条交付线。要是等实测才发现,第一阶段至少要回退三四天重跑。更麻烦的是魏城刚签合同,第一轮就出这种数据污染,客户嘴上不说,心里已经扣分了。
「能处理吗,怎么处理?」
「可以处理,」麦景行回,「在预处理规则里加一层结构检测:扫描切出来的英文片段,如果里面有函数调用格式或者驼峰命名这类代码识别符,就打上结构标记,不送进自然语言训练路。要么直接过滤,要么后面单独建一个结构桶。」
「工作量?」

「半天,加进现有的规则层就行,不影响总的时间线。」
「做,今天搞定。」他回,「过滤的思路先用起来,现在先把结构型注释剔出去不让它污染训练数据,后面再考虑单独建一个结构桶。」
「明白,下午前完成。」
他把手机放到桌上,这件事解了。Codex昨晚提的那个风险,麦景行今天验证,找到了,就在那个老工具类里,半天加进去处理。没有拖慢计划,而且是真实的数据问题,要是没发现让它直接进训练,出来的建议质量会有污染,很难察觉。
预处理模块今天加了两层:语言切分层,结构检测层。两层叠起来,才算真的把这条路打通了。
下午两点,项磊发来一条:「合同这边已经走完了,魏城签了,法务盖了章,这会儿正在快递过来。」
他把这条发进内部群。顾衔先回了「收到」,然后沉默了几秒,补了一行:「第一个八仓客户,正式落地了。」
乔木紧接着:「明白。接下来我来整理一份接入表单,让他们填。」
「让项磊一起确认一下填写说明,」他回,「有几个字段要他们技术组来填:语言分布情况、各目录语言策略、仓库间的依赖关系,这些项磊填不了,要转给他们具体的工程负责人。」
「了解,我来跟项磊对。」
顾衔在群里补了一条:「电子版合同我这边存档了,发票信息让乔木跟他们对一下,打款节点第一阶段验收后,条款里写清楚了。」

「乔木,」他说,「对一下发票,这周内搞定。」
「收到。」
傍晚,他走到麦景行工位边,站了一会儿。
「那个结构检测层写好了没有?」
「下午三点搞完了,」麦景行说,「写了二十几条规则,函数调用格式、驼峰命名、全大写常量都覆盖了。加进来之后,项磊那六个样例全部重新过了一遍,那个老工具类里的函数名已经被过滤掉,剩下的注释切分正常。」
「有没有过滤过头的情况,正常注释被当成代码过滤掉了?」
「一个,」他说,「有一句纯英文注释'This module is deprecated, use ConfigUtils instead','ConfigUtils'被判成驼峰识别符过滤了。」
「这个怎么处理?」
「加了一条规则:如果整个英文片段里,代码识别符的比例低于30%,就按自然语言处理,不过滤。这句'ConfigUtils'只是注释里的一个词,比例低,过了。」
他点了下,「明天继续。训练分离那条线今天进展怎么样?」
「语料分桶逻辑已经写完,明天开始接真实数据,下周一正式进实测。」

「行。」
船坞里,今天说了几件事。
「周一情况:麦景行验证了代码嵌注释问题,在样例的一个早期模块里存在,加了结构检测层,半天解决。预处理模块现在有两层,语言切分加结构检测。项磊合同签了,乔木在整理接入表单,让星汇云技术组来填。Sprint第五天,在轨。」
豆包那道暖橙的光:
> 结构检测那层是今天最值钱的事。工作量半天,但它提前挡住了一个数据污染的隐患,这才是真正的价值。训练数据的质量问题,发现越早越好,等模型出建议之后才察觉,回头改就麻烦了。
「正因为这样才让麦景行今天就看,不等到实测再发现。」
Claude那道蓝紫光:
> 填写表单有个细节要注意:星汇云填语言策略的时候,可能对各目录的实际情况不清楚,工程负责人未必记得每个目录的历史语言比例。建议表单里加一个'不确定'选项,让他们标注,后续可以用工具自动扫描补充。这样填的结果更准,对第一阶段的训练质量有帮助。
「让乔木加进去,不确定的目录可以标,后面我们补扫描。」
乔木在群里很快有回:「我加了一列,标题就叫'待扫描确认',让项磊转给他们技术侧负责人,自己填不了的直接标这个。」
Codex那道翠绿光:

> 驼峰识别符过滤那条30%阈值,是经验值,如果星汇云主仓库里有大量技术文档风格的注释,识别符比例可能整体偏高,30%这条线会有误杀。建议先跑完六个样例,看一下平均识别符密度,再决定阈值要不要调整。
「明天让麦景行跑一遍统计,把密度数据拿出来。」
窗口合上。他在椅子上靠了一下。
今天本来是周一常规推进,合同签了、表单发出去,节奏正常。真正多出来的那半天是验证代码嵌注释,结果找到了,解了。这件事如果放到实测才暴露,补起来要三四天,现在半天搞定,时间线还在。Codex昨晚提了那一句,是值的。
他刚准备关屏幕,乔木的消息跳出来了。
「星汇云技术负责人回接入表单了。有三个核心目录,他们没有标'待扫描确认'。」
「他们怎么填的?」
「历史遗留,没人负责。」
他盯着那六个字,手指停在键盘上。
第五天刚解掉一颗,第二颗已经露头了。
第五天,在轨。合同有了,预处理两层,今天真正摸到了一个实际的坑,而且解掉了。剩下十六天。