文章目录
- 前言
- 报错来得比分手还干脆
- 排查过程像相亲翻车
- 文件属性比银行卡还高级
- node_modules:一个美丽的误会
- 修复四连击,电脑做了套SPA
- 真相只有一个
- 求生指南
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01
前言
各位观众,今天给大家讲一个程序员版的恐怖故事。不是鬼故事,比鬼故事更可怕——Windows自动更新。
那天我打开Codex,左上角一个蓝色小图标在闪,像极了我妈催我相亲时的微信红点。我手贱点了一下"自动更新",然后……我的沙箱就疯了。
报错来得比分手还干脆
报错信息特别简洁:"找不到指定的模块。"就七个字,比我前任的分手理由还短。
我寻思这不对啊,昨天还好好的,今天怎么就找不到模块了?模块又没长腿,它能跑哪儿去?
更离谱的是,有时候还能间歇性成功。这就好比你约女神出门,她有时候答应有时候不答应,你根本不知道问题出在哪。比直接拒绝更让人崩溃。
排查过程像相亲翻车
作为一个身经百战的老司机,我决定亲自排查。先看环境:Windows 11,PowerShell 5.1,一切正常。再看路径:好家伙,PATH里指向的居然是旧版本的WindowsApps包!
这就好比你去相亲,对方给你的是三年前的照片。你到了现场发现,人还是那个人,但已经是"加密保护"版本了——翻译成人话就是:看得见,摸不着。
runtime cache都升级到26.622了,系统PATH还指着26.616的旧包。这就像是你的导航让你去老地址找新店,到了门口发现门锁换了,钥匙不对。
文件属性比银行卡还高级
我查了一下文件属性,两个大字:Encrypted。加密了!还是"Application Protected"级别的加密。这待遇,比我银行卡密码还高。
同一个目录下的rg.exe也拒绝执行。rg.exe是谁?就是那个帮你全局搜索的ripgrep啊。它平时任劳任怨,今天突然跟我说"拒绝访问"。我寻思我也没欠你工资啊?
后来我明白了,这不是普通的权限问题。这是WindowsApps的"应用保护"机制在搞事情。Codex自动更新后,新版本的runtime cache已经到位了,但系统PATH还指着旧版本的app包。旧包里的可执行文件被加密保护起来了,新环境想调用它,Windows说:“不行,这是前任的东西,你不能碰。”
这就解释了为什么apply_patch会间歇性失败。普通写文件没问题,但Codex要走自己的专用通道,需要启动sandbox helper。helper在旧包里,旧包被锁了,helper出不来,apply_patch就跪了。相当于你叫外卖,骑手到了小区门口,保安说"这栋楼现在不让进",你的饭就凉在门外了。
node_modules:一个美丽的误会
排查过程中我还遇到个插曲。备份runtime cache的时候,Copy-Item报错了,说路径太长。我一看,node_modules深处那个@napi-rs+canvas-win32-x64-msvc的路径,长得跟俄罗斯人的全名似的。
但这只是插曲,不是主因。主因还是WindowsApps那个"Application Protected"。路径长顶多是名字难念,Application Protected是直接不让你进门。
换robocopy之后备份就成功了,FAILED=0。所以node_modules表示:这个锅我不背。
修复四连击,电脑做了套SPA
我尝试了标准修复流程:清理旧runner、重建runtime cache、Windows App Repair、Reset。四连击下来,rg.exe依然"拒绝访问"。
Repair和Reset就像给电脑做SPA,按完摩它该罢工还是罢工。又像中医给你开调理方子,你说"大夫我腿断了",他说"没事,我给你拔个罐"。罐拔完了,腿该断还是断。
这就好比你家WiFi断了,你重启路由器、检查网线、打电话给运营商,最后发现是隔壁装修把光纤挖断了。你修不了,只能等。
真相只有一个
Codex自动更新后,本地app package的部署状态出了问题。旧版本的WindowsApps包里的可执行文件被标记为加密受保护,当前沙箱上下文无法正常执行。这不是你项目目录的权限问题,也不是node_modules太深,这是Windows应用包机制自己的锅。
总结一句话:Windows自动更新,程序员的一生之敌。下次看到那个蓝色小图标,我建议你先备份,再祈祷,最后才点更新。毕竟,点一下很简单,排查起来可是要掉头发的。
求生指南
**第一步:**完全退出Codex,包括后台和托盘进程,然后重新打开。有时候它只是需要冷静一下。
**第二步:**备份关键目录:.codex、.cache/codex-runtimes、Documents/Codex。备份是程序员最后的尊严。
**第三步:**尝试Windows设置中的Repair。虽然大概率没用,但万一呢?
**第四步:**如果不担心登录状态和本地缓存,可以尝试Reset。注意,这会清空应用数据,相当于给Codex做失忆手术。
**第五步:**如果Repair和Reset都无效,建议卸载Codex,从官方渠道重新下载安装。这是终极奥义——重装解决99%的问题。
**重要警告:**千万别手贱去改C:\Program Files\WindowsApps目录的权限、加密属性或exe文件。这地方是Windows的禁地,动了它以后更新可能全炸,到时候就不是掉几根头发能解决的了。
最后送大家一句程序员箴言:更新有风险,点击需谨慎。你的头发,值得被温柔以待。
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01