1. 为什么 Codex 扩展只给你看 3 条最近任务
如果你在 Windsurf 或 VS Code 里装了 Codex 扩展,大概率会遇到这个场景:左侧任务面板里,最近任务永远只显示 3 条,剩下的要点 View all 或者 Show more 才能翻出来。任务一多,每次切换历史记录都像在翻抽屉,效率直接掉一半。
先说清楚这是什么问题。它不是你的项目配置写错了,也不是 settings.json 里漏了某个字段,而是 Codex 扩展前端 bundle 里把默认展示数量写死了。也就是说,扩展在打包的时候,把「最近任务最多显示几条」这个值硬编码进了 JavaScript 文件,公开设置项里根本没有对应的开关。
我实测下来,这个默认值体现在三个地方:首页最近任务列表的 slice 上限是 3,侧边栏 Recent threads 的 maxItems 常量是 10,任务查询接口的 limit 是 20。三个值互相配合,导致你即使手动展开,前端也只向接口要 20 条数据,界面再想显示 100 条也没数据可渲染。
所以想改成 100 条,思路不是找设置项,而是直接改扩展安装目录里的前端 bundle 文件。Windsurf 对应~/.windsurf/extensions/...,VS Code 对应~/.vscode/extensions/...。这里有个特别容易踩的坑:如果你同时装了 Windsurf 和 VS Code,改了 VS Code 目录下的扩展,但实际运行的是 Windsurf,那怎么 reload 都不会生效。我一开始就栽在这上面,排查了半天才发现进程跑的是 Windsurf.app。
这篇文章会给出可复制的配置片段、逐步验证动作,以及如何通过统一 Key/API 通道完成相关配置对接。适合在本地开发环境里用 Windsurf 或 Codex 扩展、希望把最近任务上限调到 100 条的开发者。核心检索词就是「Windsurf Codex 最近任务显示数量修改」,下面按步骤来。
2. 前置准备:确认运行环境与 TaoToken 通道配置
动手改 bundle 之前,先把两件事做掉:确认你当前实际运行的是哪个 IDE,以及把模型调用的 Key/API 通道配好。前者决定你改哪个目录,后者决定改完之后任务能不能正常跑起来。
2.1 确认当前运行的 IDE 进程
最直接的方法就是看进程。打开终端执行:
ps aux | rg -i 'Windsurf|Visual Studio Code|Cursor'如果输出里出现的是/Applications/Windsurf.app/...,那就优先改~/.windsurf/extensions/...。如果出现的是/Applications/Visual Studio Code.app/...,那就改~/.vscode/extensions/...。这一步别省,我见过太多人改错目录后反复 reload 都没反应。
2.2 配置 TaoToken 统一 Key/API 通道
Codex 扩展要能正常调用模型,需要 Base URL、API Key、Model ID 三件套。TaoToken 提供统一的 API 通道,官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。
如果你用的是 Claude Code 或 Codex 这类需要 auth.json 的工具,配置结构大致如下:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model": "claude-sonnet-4-20250514" }如果你用的是 Cline 或带 MCP 的扩展,配置片段类似:
{ "mcpServers": { "taotoken": { "url": "https://taotoken.net/api", "headers": { "Authorization": "Bearer sk-你的Key" } } } }Key 的获取入口在控制台的 API Keys 页面,模型对话可以在模型对话页验证,长期编码或 Agent 场景可以看 Coding Plan。这三件套配好之后,再改 bundle 里的显示数量,任务列表拉取数据时才不会因为鉴权失败而空白。
2.3 定位扩展安装目录
Codex 扩展的安装目录一般长这样:
~/.windsurf/extensions/openai.chatgpt-26.325.31654-darwin-arm64/webview/assets/里面有两个关键文件:index-CpiKkRDN.js是运行时代码,index-CpiKkRDN.js.map是源码映射。版本号26.325.31654和文件名 hashCpiKkRDN会随扩展升级变化,所以别机械照抄路径,先用ls看一下实际目录名。
ls ~/.windsurf/extensions/ | rg chatgpt确认目录存在后,再进入webview/assets/找到对应的 js 文件。这一步做完,前置准备就算完成了。
3. 可复制配置:把 3/10/20 改成 100 的完整片段
这一节是核心操作。Codex 扩展前端 bundle 里控制最近任务数量的地方有三处,需要分别改。改之前先备份原文件,这是基本习惯。
3.1 备份原文件
cd ~/.windsurf/extensions/openai.chatgpt-26.325.31654-darwin-arm64/webview/assets/ cp index-CpiKkRDN.js index-CpiKkRDN.js.bak cp index-CpiKkRDN.js.map index-CpiKkRDN.js.map.bak备份完再动手,万一改崩了可以直接还原。
3.2 修改首页最近任务默认展示数量
在index-CpiKkRDN.js里搜索这段逻辑:
slice(0, Math.max(3, prioritizedTasks.length))把它改成:
slice(0, Math.max(100, prioritizedTasks.length))作用是把首页最近任务的默认展示下限从 3 提到 100。注意Math.max的语义是取两者较大值,所以当任务总数不足 100 时,仍然显示全部任务,不会报错。
3.3 修改侧边栏 Recent threads 展开上限
继续搜索常量定义:
var XS = 10改成:
var XS = 100这个XS对应侧边栏 Recent threads 的 maxItems。压缩后的变量名可能随版本变化,下个版本不一定还叫XS,所以升级后要重新搜索关键字,而不是照抄变量名。
3.4 修改任务查询接口的拉取数量
再搜索接口参数:
taskFilter:`current`,limit:20改成:
taskFilter:`current`,limit:100这一步最关键。前端界面允许显示 100 条,但如果接口只请求 20 条,那还是只能看到 20 条。三处必须一起改,缺一个都会导致「看起来改了但没完全生效」。
3.5 同步修改 .map 文件
index-CpiKkRDN.js.map是源码映射文件,虽然不影响运行,但如果你希望调试时行号对得上,建议把里面相同的三处也同步改掉。搜索关键字和上面一致。
改完之后,可以用rg快速确认三处都改到位了:
rg -n 'Math.max\(100|var XS = 100|limit:100' index-CpiKkRDN.js如果三行都能搜到,说明修改完成。
4. 验证请求:Reload Window 与成功结果确认
改完文件不代表生效,还要走一遍验证流程。这一步能帮你区分「改对了」和「改错了目录」。
4.1 执行 Reload Window
在 Windsurf 或 VS Code 里按Cmd+Shift+P(Windows 是Ctrl+Shift+P),输入Developer: Reload Window并执行。这个操作会重新加载扩展宿主,让新的 bundle 生效。
如果 Reload Window 之后界面没变化,先别急着怀疑改错了,试试彻底退出 IDE 再重新打开。我这次的经验是:改错目录时怎么 reload 都没用,改对目录后通常 Reload Window 就能看到变化,缓存顽固时完全退出更稳。
4.2 确认任务列表显示数量
重新打开后,看左侧最近任务面板。如果之前只显示 3 条,现在应该能看到更多条目。侧边栏 Recent threads 区域也应该突破原来的 10 条上限。
你可以用一个简单方法验证接口拉取是否生效:打开开发者工具(Cmd+Option+I),切到 Network 面板,触发一次任务列表刷新,找到任务查询请求,看limit参数是不是 100。如果是,说明前端和接口都对上了。
4.3 验证模型调用通道
任务列表能显示之后,随便点开一个历史任务,确认模型调用正常。如果出现鉴权错误,回到第 2 节的 TaoToken 配置检查 Base URL、Key、Model ID 三件套。模型对话页可以单独验证 Key 是否有效,接入文档里有完整的参数说明。
4.4 成功结果对照
改对了的表现是:首页最近任务默认展示 100 条以内全部任务,侧边栏 Recent threads 不再卡在 10 条,Network 里任务查询请求的 limit 是 100,点开历史任务模型能正常响应。四项都满足,说明配置完整生效。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
改 bundle 和配通道的过程中,容易遇到几类报错。下面按真实报错对照排查。
5.1 401 Unauthorized
这是最常见的鉴权失败。原因通常是 API Key 没配、配错,或者 Base URL 写成了带 UTM 的地址。注意 API 地址是https://taotoken.net/api,不要加 UTM 参数。检查 auth.json 或 MCP 配置里的Authorization头,确认 Key 没有多余空格。
5.2 local proxy failed
这个报错一般出现在扩展尝试走本地代理转发时。检查你的配置里是否误填了本地代理地址。TaoToken 的通道是直连 API 地址,不需要额外代理层。把 Base URL 改回https://taotoken.net/api即可。
5.3 reading choices 报错
reading choices通常意味着接口返回结构不符合预期,扩展在解析响应时拿不到choices字段。常见原因是 Model ID 填错,或者请求打到了不兼容的端点。确认 Model ID 和 TaoToken 支持的模型列表一致,模型对话页可以先单独测一次。
5.4 OAuth 相关报错
如果你用的是 Codex 的 OAuth 登录流程,报错可能是 token 过期或回调地址不匹配。这种情况下,改用 API Key 方式接入更稳。在 auth.json 里配置 Base URL、Key、Model ID 三件套,绕开 OAuth 流程。
5.5 改了没生效的排查顺序
如果界面还是只显示 3 条,按这个顺序查:第一,确认当前运行的 IDE 进程,改对目录;第二,确认三处都改了,用rg搜一遍;第三,确认 Reload Window 或彻底重启过;第四,确认扩展版本没在后台自动升级覆盖了文件。扩展升级后 bundle 会被覆盖,需要重新改一次。
6. 长期使用建议与统一通道接入
把显示数量改成 100 之后,日常切换历史任务的效率会明显提升。但有两个长期注意点。
第一,扩展升级会覆盖 bundle。Codex 扩展每次升级,webview/assets/下的文件都会重新生成,你改的三处会被还原。建议把修改步骤记成一个脚本,升级后重新跑一遍。搜索关键字优先用Math.max(3, prioritizedTasks.length)、taskFilter:\current`,limit:20、Recent threads` 这几个,比记变量名靠谱。
第二,统一 Key/API 通道能减少配置漂移。如果你同时用 Windsurf、VS Code、Cursor 多个 IDE,每个都单独配 Key 很容易乱。用 TaoToken 的统一通道,Base URL 固定为https://taotoken.net/api,Key 在控制台的 API Keys 页面统一管理,模型对话页可以随时验证通道是否正常。长期编码或 Agent 场景可以看 Coding Plan,接入文档里有完整的参数说明和示例。
最后提醒一句:改 bundle 属于对扩展前端资源的本地调整,不涉及任何绕过授权或非法中转的操作。所有模型调用都走正规 API 通道,Key 和额度在控制台正常管理。改完之后如果遇到鉴权或通道问题,优先回 API Keys 和接入文档排查,而不是反复改 bundle。