Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codex Model Mapper

Codex Model Mapper 是一个面向 Windows 的轻量本地模型映射工具。由于codex会话默认使用gpt-5.6-luna生成会话标题,此项目旨在帮助中转站无法使用luna模型的用户生成会话标题。它在 Codex 和 OpenAI 兼容上游之间运行,只将请求 JSON 顶层的指定模型名称改写为上游实际可用的模型。

典型用途是:Codex 会调用某个上游未开放的内部模型,而该上游提供了可替代模型。例如默认规则为:

gpt-5.6-luna -> gpt-5.5

程序以单文件 EXE 发布,不需要安装 Node.js、Python、Docker 或数据库。

快速开始

1. 准备上游服务

先启动 CC Switch 或其他 OpenAI 兼容上游,并确认其地址可访问。下面以此地址为例:

http://127.0.0.1:15721

2. 开启映射

  1. 从 GitHub Releases 下载 CodexModelMapper.exe,并放到一个不会随意移动或删除的目录。
  2. 双击运行程序,选择“开启映射”。
  3. 按提示填写源模型、目标模型和上游地址;直接按回车可保留当前值。
  4. 程序确认上游可达后,会启动隐藏的后台代理,并为当前 Windows 用户注册登录自启动。
  5. 看到“模型映射已开启”后即可关闭命令行窗口,后台代理会继续运行。

默认监听地址为:

http://127.0.0.1:15722

登录自启动记录使用 EXE 的当前位置。移动程序后,菜单会提示旧路径已失效;可先用第 4 项删除旧项,再为当前位置重新开启,或者直接选择“开启映射”自动更新路径。

3. 配置 Codex

将 Codex 当前模型提供商的 base_url 指向本地代理。例如:

[model_providers.custom]
base_url = "http://127.0.0.1:15722/v1"

本工具不会自动读取或修改 Codex 配置。修改完成后,建议完全退出并重新打开 Codex,确保新地址生效。

填写上游地址时通常不要重复添加 /v1。Codex 发来的请求路径已经包含 /v1,代理会保留该路径并转发。

4. 后续管理

需要调整时,再次运行同一个 EXE:

  • 1. 开启映射:检查上游并开启模型名改写;
  • 2. 关闭映射(保持兼容转发):只停止模型名改写,后台代理仍会将请求透明转发到上游;
  • 3. 修改映射模型:更新源模型和目标模型;
  • 第 4 项会根据当前状态显示“开启登录自启动”“关闭登录自启动”或“删除失效的登录自启动项”;
  • 5. 退出:只关闭当前命令行菜单,不会终止后台代理。

关闭登录自启动不会停止当前已经运行的后台代理。这样可以避免仍连接到 15722 的 Codex 任务因本地端口消失而反复重连。

关闭映射后,如果上游本身仍不支持源模型,相关请求可能返回上游的模型错误;透明转发保证的是本地连接不中断,不会让上游获得原本没有的模型能力。

映射规则

开启映射后,程序会检查可安全解析的 JSON 请求。当且仅当 JSON 顶层 model 字段与源模型完全一致时,才将其替换为目标模型:

{
  "model": "gpt-5.6-luna"
}

会被改写为:

{
  "model": "gpt-5.5"
}

程序不会识别请求是否用于生成标题,也不会裁剪 input、删除会话历史或修改 reasoning。除顶层 model 外,其他 JSON 字段的语义保持不变。

所有命中源模型的请求都会执行相同映射,这是本工具的预期行为。建议把上游不支持、仅需要替换的模型设为源模型;如果普通会话也主动使用该源模型,它同样会被映射到目标模型。

工作原理

Codex
  -> Codex Model Mapper (127.0.0.1:15722)
  -> CC Switch 或其他 OpenAI 兼容上游

关闭映射时,链路不会消失:

Codex
  -> Codex Model Mapper(不改写请求)
  -> 原上游

因此,“关闭映射”不等于停止后台服务。只要 Codex 的 base_url 仍指向 15722,保留透明转发就是维持正常连接所必需的行为。

功能特点

  • 单个 Windows EXE,无额外运行时依赖;
  • 精确匹配并只改写 JSON 顶层 model 字段;
  • 支持运行中开启、关闭和修改映射规则;
  • 关闭映射后继续透明转发,不中断 Codex 连接;
  • 开启映射前检查上游是否可达;
  • 支持当前 Windows 用户登录自启动,无需管理员权限;
  • 支持 /v1/responses、SSE 流式响应,并透明转发 WebSocket Upgrade;
  • 仅监听本机回环地址,不直接暴露到局域网或公网;
  • 不记录请求正文、Authorization 或 API Key;
  • 日志自动轮转,限制长期磁盘占用;
  • 使用 Go 标准库实现,无第三方代码依赖。

配置与日志

个人配置和日志不会写在 EXE 旁边。Windows 默认位置为:

%APPDATA%\CodexModelMapper\config.json
%APPDATA%\CodexModelMapper\service.log
%APPDATA%\CodexModelMapper\service.log.1

配置示例:

{
  "listen_address": "127.0.0.1:15722",
  "upstream_url": "http://127.0.0.1:15721",
  "source_model": "gpt-5.6-luna",
  "target_model": "gpt-5.5",
  "mapping_enabled": true,
  "control_token": "由程序自动生成"
}

control_token 用于保护本机控制接口。请勿公开该值,也不要将个人配置文件提交到仓库。

service.log 即将超过 2 MiB 时,程序会将其轮转为 service.log.1,并只保留一份旧日志。日志记录服务状态和映射结果,不记录请求正文或鉴权信息。

兼容性与限制

  • 只有未压缩、Content-Type 为 JSON 且正文不超过 64 MiB 的请求会被解析并执行模型映射。
  • 超过 64 MiB 或使用 gzip 等压缩编码的请求会保守地原样转发,不会返回本地 413,也不会执行模型映射。正常 Codex 请求通常远小于该限制;只有这类请求恰好依赖模型映射时,才可能因上游不支持源模型而失败。
  • WebSocket 连接可以透明通过代理,但程序不会解析或改写连接建立后的 WebSocket 数据帧。如果客户端把模型名放在帧内而不是 HTTP JSON 请求正文中,该模型不会被映射。
  • 启用前的上游探测只检查目标主机和端口能否建立 TCP 连接,不发送 API 请求,也不消耗模型额度。它不能替代模型权限、账户余额、速率限制和真实生成请求检查。
  • 登录自启动属于当前用户启动项,只会在用户登录 Windows 时拉起后台代理,不是 Windows 系统服务。
  • 本项目不包含进程崩溃后的即时 watchdog。若后台进程在当前登录会话中意外退出,请重新运行 EXE;下次登录时仍会按登录自启动设置拉起。
  • 模型名称、模型能力、价格、配额和速率限制均由所连接的上游决定。本项目不提供模型或 API 服务。

安全边界

  • 监听地址必须是本机回环 IP,配置为 0.0.0.0 或非回环地址时程序会拒绝启动;
  • 控制接口需要匹配程序随机生成的本机控制令牌;
  • 本工具会读取可映射请求的 JSON 并将请求转发给上游,请只连接到你信任的服务;
  • 配置文件包含本机控制令牌,不应加入版本控制或随故障报告公开。

Windows 下载提示与代码签名

未经代码签名的 GitHub Release 可能触发 Windows SmartScreen 提示。发布者可以使用受信任的 Authenticode 代码签名证书为构建后的 EXE 签名;普通自签名证书通常不能消除其他用户设备上的信任提示,SmartScreen 信誉也不由本项目保证。

当前构建脚本不会自动签名,因为签名证书及其私钥必须由发布者自行保管。

本地构建

需要 Windows 和 Go 1.23 或更高版本:

.\build.ps1

构建脚本会先运行测试,再生成:

dist\CodexModelMapper.exe

也可以手动执行:

go test ./...
go build -trimpath -ldflags "-s -w" -o dist\CodexModelMapper.exe ./cmd/codex-model-mapper

发布前检查

建议至少验证以下场景:

  • 目标源模型能够映射并完成非流式请求;
  • SSE 流式响应能够及时返回首个事件;
  • 非目标模型原样转发;
  • 关闭映射后现有 Codex 连接仍能正常使用;
  • 上游未启动时,开启映射会给出明确错误;
  • Windows 重新登录后,已开启的登录自启动能够拉起代理;
  • 超大或压缩请求能够透明转发。

免责声明

本项目是独立的社区工具,与 OpenAI、Codex、CC Switch 及任何模型服务提供商不存在隶属或官方合作关系。使用者应自行确认所连接服务的授权、条款和数据处理方式。

License

MIT

About

Windows 单文件 Codex 模型映射工具:解决 CC Switch/中转站未开放 gpt-5.6-luna 时会话标题无法生成的问题,可将 Luna 请求映射到 gpt-5.5 等兼容模型。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages