Repository navigation
Codex++ 1.8.0
1.8.0
本版汇总 v1.7.7 之后合入 main 的全部更新:输入框下方新增用量状态栏,模型选择器按供应商分组折叠,官方 App 可自动接管、macOS 补上开机启动;聚合供应商改用裸名发布默认成员模型并收紧解析口径,另有一批启动即崩、配置被覆盖丢失与弹层交互的稳定性修复。
新增功能
- 用量状态栏(默认开启,管理器「常用增强 → 用量状态栏」可关):在 Codex 输入框下方显示生成速度、缓存命中率与上下文占用。数据取自 Codex 自己写入的本机 rollout(
event_msg.token_count),口径与 Codex 一致——缓存命中 =cached_input_tokens / input_tokens,上下文占用 =last_token_usage.total_tokens / model_context_window;这里的model_context_window正是注入model_catalog_json之后 Codex 认到的每模型窗口,所以按模型配窗口的效果会直接反映在这一项上。为扛住秒级轮询,新增/thread-usage-live只读 rollout 文件尾部(512 KB 起,拿不到两条事件再按 4 倍放大,8 MB 封顶),不复用按会话整读的/thread-usage-history;该路由不开放给第三方拓展。速度按同一轮内相邻事件的累计输出差除以时间差算,换轮即切段,取最近三个区间平均,本轮结束超过 2 分钟只淡化速度项。 - 模型选择器按供应商分组折叠:按模型聚合后一份目录里会混进多个成员的模型,原先只能靠展示名尾部的「(供应商)」辨认,四十多个模型平铺下来满屏后缀。现在原生选择器里每个供应商一个可折叠分组,表头显示供应商名与模型数量,模型名不再重复后缀;默认成员那一组带「默认」标志(默认成员的模型是裸名发布的,光看名字分不出是哪一家,身份由目录发布的
codex_plus_default/codex_plus_default_group_id给出);右上角「全部展开 / 全部折叠」一键切换,折叠状态按供应商记忆。打开时若已选中某个模型则只展开它所在的分组,没有选中模型时展开默认供应商;单供应商(直连供应商)完全不动原生列表。 - 自动接管官方 App(默认关闭,macOS 与 Windows):你自己双击 / Dock 启动官方 App 时,Codex++ 会自动接管并注入增强,不必再从管理工具点一次启动。官方 App 已在运行且没带调试端口时,会先请它退出再带调试参数重开;已在监听我们端口的实例只做附着,不动你的窗口。带 10 秒启动宽限期(避免重启自己刚拉起的实例)、失败指数退避与「一小时最多 6 次」的防风暴闸门,检测到 Codex 多开实例时跳过,「本次不接管」只跳过当前实例。
- macOS 开机启动:写入
~/Library/LaunchAgents/com.bigpizzav3.codexplusplus.watcher.plist(RunAtLoad+--autostart,不立即拉起进程),注销时删除该 plist;此前 macOS 上该功能只在 Windows 可用,开关会直接失败。 - 供应商级「搜索历史压缩兼容」实验选项(#2434),用于兼容上游搜索历史压缩行为。
安装维护页
- 状态项改成开关:「开机打开 Codex++」由「设置/移除开机启动 + 启用/禁用」四个按钮合并为一个开关,「自动接管官方 App」的开启/关闭也改由开关控制(「立即接管 / 本次不接管 / 刷新状态」作为例外通道保留)。开关走新的
set_watcher_enabled命令:开启时注册并清除禁用标记,关闭时写入禁用标记并注销。 - 移除「入口管理」板块:删除「安装入口」「卸载入口」「修复入口」按钮与「卸载时移除 Codex++ 托管数据」勾选项,后端
install_entrypoints、uninstall_entrypoints命令一并下线;「检查与修复」中的入口状态与「修复快捷方式」保留。
聚合与供应商
- 默认成员的模型改用裸名发布(显示名也保持裸名),其他成员仍用
cpx-<成员id>/<模型>绑定身份:这样「选中哪个名字 = 发给哪一家」在列表里一目了然,裸名请求原样转发给默认成员;默认值已不是成员时按未设置处理,全部带前缀。 - 聚合解析不再静默改派:去掉按上游模型名归因的静默改派,不带
cpx-前缀的请求只交给默认供应商并按请求里的 id 原样转发,没有可用默认供应商就报错(报错带模型名与处理建议);带cpx-前缀但解析不出来(成员被移除、模型被移出列表、成员 id 变过)一律硬报错,不再改派给别的成员——那等于替用户换了供应商。 - 旧模型目录残留的模型名按成员归属放行:非
cpx-*的模型名若能在成员目录里按上游模型名归属就归因到该成员,不再一律 400。此前 Codex 回合前的自动压缩(用的是上一回合的模型)会因此失败并死循环,症状是「明明选了聚合模型却一直报错」。 - 模型聚合按成员隔离故障:缺 Key/URL、官方未登录或成员被删只影响该成员自己的模型,不再让全部聚合请求 400;模型聚合生效时检测
config.toml的[features] multi_agent_v2,该开关优先级高于目录里的multi_agent_version=v1,会破坏跨供应商子代理的明文任务契约,切换/重启聚合时带回提示。 - 修复「正在用的聚合供应商会突然报成员不存在、像被删了一样」:聚合成员的规范化过去直接拿「可勾选候选」过滤,而候选要求成员 URL+Key 齐备、官方登录快照里有 tokens,供应商编辑中或快照未回填时判定会翻转,于是一次普通保存就把正在用的成员静默删掉。现在成员/路由去留只按「这家供应商是否还在配置里」判断。
- 修复供应商列表分页切换会把「当前分页可见的子集」当完整设置提交:切换必报「聚合成员供应商不存在」,且子集切换一旦成功会把其它分页的供应商与聚合配置从
settings.json覆盖丢失。 - 供应商分页顺序调整为 直连 / 模型聚合 / 需协议转换 / 故障转移;分页切换不再强制回跳并补上空状态,总开关关闭时「使用」按钮改为提示(#2470 #2481 #2490 #2495)。
修复
- 修复设置加载无限递归导致应用启动即崩:聚合供应商的
configContents非空时,SettingsStore::load与complete_relay_profile_config互相调用造成主线程栈溢出。归一化期间的嵌套 load 现在只解析、不再归一化。 - 修复下拉弹层被父级
overflow裁剪、点别处收不起来:AppSelect、思考等级多选、目录/会话选择器统一改为createPortal到 body + fixed 定位,收起点改为 document 上的pointerdown/focusin(WKWebView 里点非可聚焦元素不触发 blur),同一时刻只允许一个弹层,Escape 关闭并还焦点。 - 修复「Codex 增强」页功能开关卡被展开项撑大,以及可展开配置块牵动左列开关卡:开关卡按内容取高,可展开块放到开关行之后跨满整行。
- 修复语音输入在首页出现两个入口:新版首页 composer 的顶部上下文栏与底部控制行都带
data-composer-footer-responsive,注入脚本给两个都插了按钮;改为按输入框去重并清理残留。 - 语音输入空闲态改为 28×28 麦克风图标,文字降级到 aria-label / title;录音、转写、出错状态仍保留文字。
- 修复 deepseek 被兜底补出 ultra 档:
shouldAddUltra名单只保留确认支持 ultra 的 sol / terra / gpt-5.x。 - 协议代理层放行混合模式下的官方额度锁定,不再要求先开启前端增强(#2383):独立模式复用用量缓存修复逻辑并补齐断线重连与运行期模式切换;额度监督任务随会话停止(取消信号与任务句柄归属
LaunchHandle,退出与重启先停止并等待任务,防止旧会话重连复用端口);更新器兼容 Windows 路径分隔符。 - 修复
apply_patch代理转换丢失原始补丁输入(#2484):按原始补丁输入透传,并迁移旧版 apply_patch 历史记录。 - 修复图片覆盖层的层级、透明度与渲染性能(#2428);修复重新应用时 DreamSkin CSS 丢失;修复发布面板的布局观察器。
- 生成模型目录补齐
base_instructions,避免新版 Codex 拒载整份 config(#2492)。 - 皮肤主题加载中显示转圈计数,不再先显示 0;各区块「正在加载…」空态补上转圈图标。
性能
- 将自动消息索引修复移出启动关键路径,改为注入之后再执行(#2382)。
文档
- README(中英)与官网新增「用量状态栏」功能介绍与截图。
下载
- Windows:x64 安装程序与便携 ZIP。
- macOS:Intel 与 Apple Silicon 通用 DMG,包含 Developer ID 签名和 Apple 公证票据。
安装包由 GitHub Actions 构建完成后添加到本 Release。查看 v1.7.7 到 v1.8.0 的全部提交。