Codex 插件一直转圈、侧边栏没了,WSL / SSH 上更常见

VS Code 里 Codex 侧边栏一直转圈,或者直接蹦「Codex could not start」「couldn’t start its user interface」,有时候连图标都没有。本机偶发,WSL、Remote-SSH 上更常见。下面按环境拆开写。扩展 ID 以 Marketplace 为准:openai.chatgpt(面板上常显示成 Codex)。

先确认装的是谁、开在哪

官方入门见 Codex IDE,扩展页见 Marketplace:openai.chatgpt。装好后点侧栏 Codex 图标;没有图标就 Command Palette 跑 Codex: Open Codex Sidebar(命令 ID 文档写的是 chatgpt.openSidebar)。同页还有 chatgpt.newChat、chatgpt.newCodexPanel 等,见 IDE commands。

Windows 本机还有一项 chatgpt.runCodexInWindowsSubsystemForLinux(IDE settings):意思是「当前这个 Windows 本地窗口里,让 Codex 进程跑进 WSL」。改完会 reload。它解决不了「已经用 Remote 打开了 WSL/SSH 工作区,侧边栏整块失踪」——远程窗口要在远端再装一份扩展。

别乱填 chatgpt.cliExecutable。官方写明:只有开发 Codex CLI 才需要;手改成奇怪路径,扩展可能半残。如果你以前跟教程改过,先把这个覆盖清掉,让它用扩展自带的可执行文件。

本机、WSL、Remote-SSH:扩展到底装在哪边

VS Code 远程模型(Developing in WSL)里,影响工作区的扩展跑在远端,主题类才偏本地。状态栏若是 WSL: … 或 SSH: …,打开 Extensions,把 Codex Install in WSL / Install on SSH Host,不能只停在 Local - Installed。

对得上的典型症状:Windows/macOS 本机窗口侧栏好好的,一连远程图标没了,命令面板搜「Codex」也空。Local 那栏里扩展变灰、提示要装到远程——就点安装,再 Reload Window。远端文件一般在用户目录下的 .vscode-server/extensions/(Cursor 等 fork 可能是别的 server 目录),以你磁盘实际路径为准。

装到远端之后如果只是转圈、不是「完全没入口」,再往下看日志。两件事别搅在一起。

一直转圈 / could not start:先看 Output

View → Output(或命令面板搜 Output),下拉里找带 Codex / ChatGPT / openai.chatgpt 字样的通道——通道名以你当前扩展 Output 为准。需要的话再开 Developer: Toggle Developer Tools,看 Webview 控制台。整包日志可用 Developer: Open Extension Logs Folder,在当前 window 的 exthost 目录里翻 openai.chatgpt 相关文件(系统不同路径不同)。

日志里常能对上这些原文(openai/codex issue 里反复出现,用来对症,不是保证修法):

  • Spawning codex app-server 之后没下文,或 app-server process exited unexpectedly
  • renderer_ready_timeout,界面文案类似 could not start its user interface
  • PendingMigrationError: navigator is now a global in nodejs(Remote 上多见)
  • Service Worker / webview 注册失败(invalid state 一类)

扩展背后会拉起 app-server。CLI 参考里有 codex app-server(标注 Experimental,偏开发调试),以及更适合排障的 codex doctor(装机、配置、auth、runtime、Git、终端、app-server、会话库存)。终端里 CLI 能登录、插件却转圈时,先跑:

codex doctor

把报告和 Output 对着看,比反复重装扩展省时间。需要更吵的日志可设环境变量 RUST_LOG(见 Environment variables)。

IDE 和 CLI 共用一套状态根目录:默认 ~/.codex,可用 CODEX_HOME 改(目录必须事先存在)。下面有 config.toml、登录态、sessions 等。动之前先整份备份——把整个目录拷走再碰。然后才考虑清理临时目录、插件缓存;不要一上来删掉 auth 或整个 ~/.codex,会话和登录会一起没。子路径以你机器上实际为准。

公司代理 / HTTPS 拦截时,文档提到 CODEX_CA_CERTIFICATE、SSL_CERT_FILE。CLI 正常而只有插件 Webview 挂,仍要先分清:是 app-server 进程退出了,还是 UI renderer 超时。

还有一种情况:多开了好几个 VS Code 窗口,其中一个卡在初始化,其它窗口的 Codex 也跟着转。可以先关掉多余窗口,只留一个远程会话再试;Output 里如果出现 Initialize timeout、多个 extension host 相关字样,先关到只剩一个窗口再排。重装扩展前先记下当前版本号,方便和 Marketplace、GitHub issue 对照。

按环境扫一眼

纯本机:确认扩展启用 → Open Codex Sidebar → 看 Output。若日志里 app-server 已经 Initialize,界面仍起不来,更像 Webview / 扩展版本问题。去 Marketplace 更新;或对照同版本号的 GitHub issue。有人回退某一版立刻好,那只说明你这版有回归,别当成长期固定版本策略。

WSL Remote:先保证装在 WSL 侧。runCodexInWindowsSubsystemForLinux 管的是本机窗口,管不了远程窗口缺侧栏。

Remote-SSH:远端终端里 CLI 好好的、侧栏一直转,多半是扩展宿主或 Webview,不是订阅没额度。OpenAI 在部分 Remote issue 里建议把 VS Code 升到较新版本再试。本地 User Settings 里有人加过 extensions.supportNodeGlobalNavigator(有时还有 http.electronFetch)——只有当你的 Output / 开发者工具里真有 navigator 相关报错时再考虑,改完要关掉所有 VS Code 窗口再重连。不要随手改 remote.extensionKind 把 Codex 钉成只跑 UI:侧栏也许亮了,文件和命令却不在远端仓库环境里执行。

登录与计划:Marketplace 写明面向 ChatGPT Plus、Pro、Business、Edu、Enterprise 等。codex login status 已通过、插件仍挂,就别只在订阅页打转。

若只是图标被拖没了、面板空白但不是转圈报错,可以试 View: Reset View Locations,或再执行一次 Open Codex Sidebar。这和 app-server 起不来不是一类问题。

临时文件、扩展缓存清完仍不行时,再考虑禁用其它同时占用 Webview 或远程扩展宿主的插件做对比,一次只关一批,别全关了再猜。WSL 里磁盘权限、家目录挂载到 Windows 盘符时,偶发会让 ~/.codex 读写变慢或锁文件残留,备份时留意是不是拷到了 /mnt/c/... 那一侧。

贴 issue 或问人前,把 Output 里的报错原文、扩展版本、Local 还是 WSL/SSH 抄全。通道名和目录以你当前编辑器为准。