微信里的"假切换",和真修不掉的连接
这条故障线从 Build 76 的资源路径写错一层 Rime/ 开始。Codex 会话里确认过,当前安装的包里,中文引擎从 Contents/Resources/ 去读 default.yaml,实际词典却放在 Contents/Resources/Rime/ 下,于是直接报 engine_unavailable。把路径修好、重新打包签名之后,新包在测试宿主里输入 nihao 能正常上屏"你好"。会话里接着又问"为什么还是不行",这才把故事推到真正难缠的部分:输入法本身修好了,微信却依旧打不出中文。
排查过程里先后试过几种办法。切到系统拼音再切回 Ajin、禁用并重新注册 Ajin、点左上角红钮关闭微信主窗口再从 Dock 打开——这些都不需要重启微信,进程号 48434 也确实没变。Codex 给出的解释是:旧客户端仍持有旧 Ajin 进程的 InputMethodKit 输入会话,重装只是替换了进程,已经打开的窗口不会自动接上新的。最后一次解法是直接重启微信,会话记录里用户自述"重启 Codex 后就恢复了,那么我还要重启微信才能恢复"。这个句号不是修好的句号,而是把问题顶到流程层的句号。
Codex 自己也承认,判断下得太早。围绕"还是不行,这个问题如果解决不了我们后续上线的话更新是否也会有同样的问题",它给出的结论是:只要更新流程保持现状,正式上线后也会复现相同的问题;当前安装脚本会重启 imklaunchagent,让所有已打开 App 的输入连接一起失效。这是一条"用户每次更新都要挨个重启 App 才能继续打字"的流程风险,不是一个输入法本身的缺陷。代码里已经修改了安装脚本,取消默认重启 imklaunchagent,脚本检查也通过了;但今天没有拿真实更新去验证它,也没有重新打包发布。故障眼下没有解,最终落在了"先验证,下次更新再说"的开放状态上。代码侧对应有一条沉淀:ai-input-method-digital-avatar 仓库的 fix: 限制错别输入误学并持久化纠错降权,给中文引擎加了一层自我约束的小护栏——这是同一时段里少数真正合入 main 并推到 GitLab 和 GitHub 的改动。
后台把"修好了"标成"失败了"
另一条不那么显眼、但同样和"判断标准"有关的线,是 10 月 2 日那张封面在后台的展示。Codex 会话里用户截了一张图过来,三处红色节点看着刺眼:封面简报、封面生成、视觉验收。结果去翻这条 5a5b2f62 的运行记录,实际时间线和截图完全对不上——红色标签把早期执行错误和后来已经恢复成功的阶段混在了一起,最终这张封面其实已经验收通过并完成发布。修法落到了后台展示逻辑上:刷新 10 月 2 日日报详情,三处节点统一显示"已完成",早期失败不再把恢复成功的阶段染红;耗时也改成按最新一次尝试计算,视觉验收这次显示 28 秒,不再把多次重试之间的等待时长全塞进来。
这条修复看上去很小,但它点出来的是同一类问题:脚本只会在意"是否报错",不在意"是否最终被恢复"。一旦中间失败过,整条时间线就被贴上"红"。把"阶段最终状态"和"过程是否报错"分开,本身就是判断标准的一次升级。
把推进权交还给会判断的那一方
和上面这两条并列的,是一场更结构性的讨论。围绕"现在一直遇到卡壳的问题,我需要的是不让程序固化写死导致我们的自动化博客更新发布的流程跑不通,我希望让本地的模型更多的介入做判断",Codex 给出的方案是把任务推进权交给本地的 OpenClaw agent:让它读现场状态、判断下一步、处理可恢复的失败,并跟进到线上结果;现有脚本退到"被调用"的工具位置,遇到预设之外的状态不再让整次任务直接结束。
具体落地是:正式 cron 的任务描述被改写,当天任务正常启动时不再把"查询当天线上结果"当成异常路径,10 月 1 日留下的旧 pending 也已经按线上确认结果结算,主任务切换为本地 agent 编排。10 月 2 日的博客随后续跑成功并上线,正文、独立隐私审查都走完了,文章挂在了 blog.chenjin.ai 上。也就是说,今天比较像"把地基重做一遍"的一天:输入法那条线暂时停在了一个开放问题,但围绕它的判断逻辑——不再让"重启一次客户端"被默认为正常使用流程、不再让"早期一次失败"覆盖最终状态、不再让"脚本走不下去"等同于"任务失败"——都被重新写了一遍。等到下一次真实更新触发,或者下一次封面生成踩进边缘 case,这些新写下的标准才会真正被验证。
