Codex VS Code 多窗口与历史记录补丁
问题 1:无法打开多个 Codex 标签页
执行多次:
text
Codex: New Codex Agent
VS Code 始终复用同一个标签页。
原因是官方插件使用固定 URI:
text
/extension/panel/new
VS Code 将相同 URI 视为同一个编辑器资源。
修改方式:创建面板时添加随机查询参数:
js
"/extension/panel/new"
改为类似:
js
"/extension/panel/new?n=<随机值>"
这样每次执行命令都会产生独立标签页,可以拖动到左右编辑器组并排显示。
问题 2:重启后分栏布局丢失
官方插件恢复 Codex 标签页时,没有向 vscode.openWith 传递原来的 viewColumn,导致多个标签页集中到当前编辑器组。
修改方式:恢复标签页时增加:
js
viewColumn: group.viewColumn
问题 3:空白面板没有历史记录按钮
刚创建的面板使用独立页面:
text
/extension/panel/new
对应资源:
text
webview/assets/new-thread-panel-page-*.js
该页面只渲染编辑区和输入框,没有挂载通用 Header。发送第一条消息后,页面切换到:
text
/local/<conversationId>
会话页面包含 Header,所以此时才出现历史记录按钮。
修改方式:
- 从
header-*.js导入通用 Header:
js
import { t as CodexHistoryHeader } from "./header-*.js";
- 在空白面板主内容前渲染:
js
(0, O.jsx)(CodexHistoryHeader, {})
修改后,无需先发送消息,空白面板顶部就能打开 Chat history。
当前安装位置
补丁脚本:
text
~/.local/share/codex-vscode-patches/patch.py
当前补丁包含:
multipanel:允许多个 Codex 标签页viewcolumn:恢复分栏位置activitybar:显示 Codex 活动栏入口emptyhistory:空白面板显示历史记录
检查状态:
bash
python3 ~/.local/share/codex-vscode-patches/patch.py --check
插件更新后重新应用:
bash
python3 ~/.local/share/codex-vscode-patches/patch.py
应用后执行:
text
Developer: Reload Window
撤销全部补丁:
bash
python3 ~/.local/share/codex-vscode-patches/patch.py --revert
补丁依赖官方插件压缩后的代码结构。官方插件升级后,如果结构发生变化,脚本会返回 UNKNOWN 并停止修改,避免错误替换。