没有不值得去解决的问题,也没有不值得去学习的技术!

VS Code 中 Codex 一直加载:从目录改名怀疑到升级 VS Code 解决问题

图3:开发人员工具中 Codex Webview JavaScript 资源加载失败

作者:

,

最近,我将本地项目目录从原来的调试型名称,调整为更适合长期维护的名称:

Plaintext
/home/wangqiang/code/wordpress-ai-translation-pipeline

项目目录调整完成后,Git 仓库、文件列表和代码本身都没有出现异常。不过,在准备继续使用 Codex 检查翻译插件代码时,我发现 VS Code 右侧的 Codex 聊天窗口一直停留在加载状态。

由于问题恰好发生在项目目录改名之后,我最初怀疑两者可能存在关联。但经过逐步排查,最终发现问题更可能来自 VS Code 与 Codex 扩展 Webview 资源加载之间的兼容性。将 VS Code 从 1.127.0 升级到 1.129.1 后,Codex 恢复正常。

本文记录这次完整的排查过程。

一、问题背景

这次打开 Codex,是为了继续处理 SlyTranslate 翻译过程中的受保护占位符校验问题。

这一次,验证器正确阻止了错误内容写入文章。接下来需要检查 TranslationValidator.php 中是否适合增加一种非常严格的单令牌误编号修复,因此我准备让 Codex 对仓库和生产代码进行只读分析。

但就在这时,VS Code 中的 Codex 无法正常加载。

二、Codex 聊天窗口一直停在加载状态

打开项目后,VS Code 的文件列表可以正常显示,代码也可以正常浏览。

Codex 面板虽然能够打开,但界面中央一直显示加载图标,没有出现历史任务、输入框或聊天内容。

图1:VS Code 中 Codex 面板一直停留在加载状态
图1:VS Code 中 Codex 面板一直停留在加载状态

最初怀疑的原因主要有两个:

  1. 项目目录刚刚改名,旧的 VS Code 工作区状态可能仍然指向原路径。
  2. Codex 扩展本身的 Webview 或登录状态可能出现异常。

因为目录改名与故障出现的时间比较接近,所以首先排查目录问题。

三、重新加载 VS Code 窗口没有解决

第一步是在命令面板中执行:

Plaintext
Developer: Reload Window

VS Code 窗口重新加载后,Codex 仍然停留在加载画面。

这说明问题并不是一次普通的界面刷新异常。

随后,我关闭旧窗口,重新打开一个 VS Code 窗口,并明确选择新的项目目录:

Plaintext
/home/wangqiang/code/wordpress-ai-translation-pipeline

这一次,文件列表能够正常加载,但 Codex 仍然无法进入聊天界面。

到这里,基本可以判断:项目目录改名并不是导致 Codex 无法加载的主要原因。

如果是工作区路径失效,通常更容易表现为项目无法打开、文件路径错误或上下文丢失,而不是整个 Codex Webview 一直处于加载状态。

四、查看 Codex 扩展输出

接下来打开 VS Code 底部的“输出”面板,并在输出来源下拉列表中选择:

Plaintext
Codex

日志显示,Codex 扩展本身已经成功激活:

Plaintext
[info] Activating Codex extension
[info] [CodexMcpConnection] Spawning codex app-server
[info] [CodexMcpConnection] Initialize received id=1
[info] [IpcRouter] I am the router

这些日志说明:

  • Codex 扩展已经被 VS Code 激活;
  • codex app-server 已经启动;
  • IPC 初始化请求已经收到;
  • 后端进程并没有在启动阶段直接崩溃。
图2:VS Code 输出面板中的 Codex 扩展启动日志
图2:VS Code 输出面板中的 Codex 扩展启动日志

因此,问题范围进一步缩小到了 Codex 聊天界面的前端 Webview。

五、在开发人员工具中发现资源加载失败

为了继续查看 Webview 前端错误,我打开了 VS Code 的开发人员工具:

Plaintext
帮助 → 切换开发人员工具

在 Console 中,可以看到大量资源加载失败:

Plaintext
Failed to load resource: net::ERR_FAILED

失败的文件位于 Codex 扩展目录:

Plaintext
/home/wangqiang/.vscode/extensions/openai.chatgpt-26.715.31925-linux-x64/webview/assets/

其中包括多个 JavaScript 模块,例如:

Plaintext
chats-thin-CkAcsMtd.js
settings-group-BhhtyN64.js
route-scope-provider-Dro00OIJ.js
settings-shared-CV4ZE1aS.js
page-header-DtzUAdLe.js

最关键的错误是:

Plaintext
Uncaught TypeError: Failed to fetch dynamically imported module:
https://file+.vscode-resource.vscode-cdn.net/home/wangqiang/.vscode/extensions/openai.chatgpt-26.715.31925-linux-x64/webview/assets/app-main-BPH9pd0X.js

这条错误已经能够解释为什么 Codex 面板一直停在加载状态。

Codex 的后端虽然已经启动,但聊天界面的主 JavaScript 模块没有成功加载,Webview 自然无法完成初始化。

图3:开发人员工具中 Codex Webview JavaScript 资源加载失败
图3:开发人员工具中 Codex Webview JavaScript 资源加载失败

日志中还出现了一些其他提示:

Plaintext
potential listener LEAK detected
Extension host is unresponsive

以及:

Plaintext
Loading the font ... violates Content Security Policy

不过,从故障表现来看,这些更可能是 Webview 反复加载失败后产生的连带现象。真正直接导致界面无法启动的,仍然是 app-main 等动态模块加载失败。

六、为什么没有立即重装 Codex 扩展

发现扩展资源加载失败后,一个比较直接的处理方式是卸载并重新安装 Codex 扩展。

例如可以执行:

Bash
code --uninstall-extension openai.chatgpt

然后删除对应扩展目录并重新安装。

不过,当时 VS Code 正好提示存在新版本更新。

考虑到故障发生在 Webview 本地资源加载阶段,而 Codex 扩展后端已经能够正常启动,因此也存在另一种可能:

当前 Codex 扩展版本使用的 Webview 资源加载方式,与旧版 VS Code 存在兼容问题。

相比直接删除扩展和缓存,先升级 VS Code 的改动更小,也更容易回退和验证。

因此,我决定暂时不重装 Codex,只先更新 VS Code。

七、将 VS Code 从 1.127.0 升级到 1.129.1

下载的新版本安装包路径为:

Plaintext
/home/wangqiang/下载/code_1.129.1-1784303641_amd64.deb

关闭所有 VS Code 窗口后,在终端执行:

Bash
sudo apt install "/home/wangqiang/下载/code_1.129.1-1784303641_amd64.deb"

安装程序识别出这是对现有 code 软件包的升级:

Plaintext
将被升级:
  code

摘要:
  升级:1,安装:0,卸载:0

原版本为:

Plaintext
1.127.0-1782814776

升级后的版本为:

Plaintext
1.129.1-1784303641

安装过程正常完成:

Plaintext
正在解压 code (1.129.1-1784303641) 并覆盖 (1.127.0-1782814776) ...
正在设置 code (1.129.1-1784303641) ...
图4:通过本地 DEB 安装包将 VS Code 升级到 1.129.1
图4:通过本地 DEB 安装包将 VS Code 升级到 1.129.1

八、升级后 Codex 恢复正常

重新启动 VS Code,并再次打开项目目录:

Plaintext
/home/wangqiang/code/wordpress-ai-translation-pipeline

这一次,Codex 面板成功完成加载。

界面中能够正常显示:

  • 历史任务;
  • Codex 输入框;
  • 模型和推理强度;
  • 设置入口;
  • 新任务入口。
图5:升级 VS Code 后 Codex 聊天界面恢复正常
图5:升级 VS Code 后 Codex 聊天界面恢复正常

从最终结果来看,这次问题并不需要:

  • 恢复旧项目目录名称;
  • 删除新的 Git 仓库;
  • 清理整个 VS Code 用户目录;
  • 删除 Codex 登录状态;
  • 重新安装 Codex 扩展。

仅升级 VS Code,就已经恢复了 Codex 的正常使用。

九、这次故障的实际判断

目前能够确认的事实包括:

  1. 项目目录改名后,VS Code 仍然可以正常打开项目和加载文件列表。
  2. Codex 扩展能够成功激活,codex app-server 也能够启动。
  3. Codex Webview 中多个本地 JavaScript 模块加载失败。
  4. 主入口动态模块 app-main-BPH9pd0X.js 加载失败后,聊天界面一直停在加载状态。
  5. VS Code 从 1.127.0 升级到 1.129.1 后,Codex 恢复正常。

因此,更稳妥的结论是:

这次故障更可能是旧版 VS Code 与当前 Codex 扩展之间的 Webview 资源加载兼容问题,而不是项目目录重命名造成的。

不过,由于没有进一步对比 VS Code 内部 Webview 实现,也没有重新安装同一版本的 Codex 扩展进行交叉测试,因此不能完全证明具体是哪一处代码发生了兼容问题。

从实际维护角度看,这个结论已经足够指导后续操作。

十、以后遇到 Codex 一直加载,可以按什么顺序排查

结合这次经历,后续再遇到类似问题,可以按以下顺序处理。

1. 重新加载 VS Code 窗口

执行:

Plaintext
Developer: Reload Window

如果只是临时的 Webview 状态异常,这一步可能直接恢复。

2. 使用新窗口重新打开项目目录

不要直接使用旧的 .code-workspace 文件,明确打开实际项目目录。

这样可以排除工作区缓存、旧路径和目录重命名的影响。

3. 查看 Codex 输出日志

打开:

Plaintext
查看 → 输出

然后在下拉列表中选择:

Plaintext
Codex

重点确认扩展是否已经成功激活,以及 codex app-server 是否已经启动。

4. 查看开发人员工具 Console

打开:

Plaintext
帮助 → 切换开发人员工具

重点查找:

Plaintext
Failed to load resource
Failed to fetch dynamically imported module
ERR_FAILED
401
403
CSP
WebSocket

如果大量错误都指向 Codex 扩展的 webview/assets 目录,问题通常已经不再是项目代码本身。

5. 优先更新 VS Code

如果 VS Code 存在可用更新,可以先升级 VS Code,再重新测试。

这一步通常比删除扩展目录和用户缓存更稳妥。

6. 最后再考虑重装 Codex 扩展

只有在升级 VS Code 后仍然无法加载时,再考虑:

  • 卸载 openai.chatgpt
  • 删除残留扩展目录;
  • 重新安装扩展;
  • 重新登录 ChatGPT 或 Codex。

这样可以避免一开始就进行范围过大的清理。

十一、关于项目目录改名的补充

这次故障发生前,项目目录刚刚从临时调试型名称改为:

Plaintext
/home/wangqiang/code/wordpress-ai-translation-pipeline

时间上的接近很容易让人认为两者存在直接关系。

但排查过程中,新目录可以正常打开,Git 仓库和文件列表也没有异常。即使完全关闭旧窗口,再从新窗口重新打开新目录,Codex 仍然无法加载。

这说明目录改名最多可能影响:

  • 最近打开项目记录;
  • 工作区缓存;
  • 项目路径引用;
  • 某些项目级配置。

它并不能解释 Codex Webview 中大量 JavaScript 文件出现 net::ERR_FAILED

在排查软件问题时,时间上刚刚发生的变更确实值得优先怀疑,但仍然需要通过日志判断真正的故障层级。

十二、总结

这次问题表面上是 Codex 一直加载,最初又恰好发生在项目目录改名之后,很容易把注意力集中在仓库路径和 VS Code 工作区状态上。

但实际日志显示:

  • Codex 后端启动正常;
  • Webview 前端模块加载失败;
  • 主动态模块无法读取;
  • 升级 VS Code 后问题消失。

最终解决方案非常简单:

Plaintext
VS Code 1.127.0
→ 升级到 VS Code 1.129.1
→ Codex 恢复正常

这次排查也再次说明,遇到 IDE 扩展异常时,不能只观察界面表现。输出日志和开发人员工具往往能够快速区分:

  • 项目路径问题;
  • 扩展后端问题;
  • 登录和网络问题;
  • Webview 前端资源问题;
  • IDE 与扩展之间的版本兼容问题。

在确认故障范围后,再选择最小的修复动作,比直接删除配置、重装全部环境更稳妥。

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理