Codex 是目前主流的 AI 编程工具之一。但在实际使用中,很多开发者会遇到两个问题:
想用不同的 AI 模型供应商,但切换配置很麻烦——改配置文件、换 API Key、重启服务,流程繁琐。 想知道每个月在不同供应商上花了多少钱,但各个供应商的账单分散,统计困难。
CodexSwitch 是一个刚刚发布的 .NET 开源项目,专门解决这两个问题。
仓库地址:https://github.com/AIDotNet/CodexSwitch
项目简介
CodexSwitch 是由国内 .NET 社区组织 AIDotNet 开发的跨平台 Avalonia 桌面应用(Avalonia 12.0.3)。它在本机运行一个兼容 OpenAI Responses 的本地代理服务,Codex 客户端通过该代理与上游 AI 供应商通信,同时 CodexSwitch 负责供应商选择、协议转换、用量统计和配置管理。
默认本地端点:
http://127.0.0.1:12785/v1
Codex 客户端将该端点当作 OpenAI Responses API 对接,无需修改客户端配置,在 CodexSwitch 界面中即可一键切换供应商。
本地代理提供 /health、/v1/models 和 /v1/responses 三个端点,支持流式响应,并在上游协议允许时输出 Responses 风格的 SSE 事件。
应用采用侧边栏 + Home 布局,版本和更新状态显示在左下角。
核心功能:协议转换
CodexSwitch 支持三种上游协议,并在它们之间实现双向转换:
OpenAiResponses | /responses | |
OpenAiChat | /chat/completions | |
AnthropicMessages | /messages |
以 Anthropic 为例,CodexSwitch 会把来自 Codex 的 Responses 请求转换为 Anthropic Messages 格式,包括工具调用和 thinking/reasoning 输出的映射,再将响应转换回 Responses 形态返回给客户端。这意味着不需要上游供应商兼容 OpenAI 协议,CodexSwitch 会完成协议层面的适配。
模型路由按请求模型自动选择,支持模型别名和上游模型映射。Codex 和 Claude Code 的激活供应商可独立配置,本地代理可同时服务两类客户端。
核心功能:用量统计
CodexSwitch 将所有请求的用量数据记录在本地 JSONL 日志中,并通过仪表盘进行可视化展示:
请求日志
按日期分片的本地请求记录,支持输出 token/s 显示和分页导航 供应商统计
各供应商的用量占比 模型统计
各模型的调用次数和成本 趋势图
24 小时、7 天、30 天的用量趋势
配套的本地模型价格目录支持阶梯价格、缓存读取价格、Claude 缓存创建计费,以及 fast mode 倍率。成本数据为本地估算值,供日常决策参考。
代理请求的用量日志采用后台缓冲写入,降低对请求路径延迟的影响。
核心功能:供应商管理
CodexSwitch 内置了以下供应商模板:
对于其他兼容 OpenAI Responses、OpenAI Chat 或 Anthropic Messages 的服务,可通过自定义供应商功能配置 base URL、API Key、协议、模型路由、上游模型名和 service tier。
Codex OAuth 供应商提供通过 ChatGPT 登录连接 Codex 后端的能力,并支持多账号管理。内置的 OAuth 账号信息充实功能,包括 ChatGPT 工作区解析、计划和配额快照,以及按启用 OAuth 账号的用量查询。此外,可选择保留 Codex App 的 ChatGPT 登录态,使依赖 ChatGPT 登录的插件功能在本地代理模式下继续可用——此模式下 CodexSwitch 仍会写入 config.toml,但保留原来的 auth.json 登录态。
核心功能:Claude Code 支持
自 v0.0.5 起,CodexSwitch 新增对 Claude Code 的支持:
自动写入和恢复 ~/.claude/settings.json提供供应商和模型选择控件 路由 /v1/messages请求通过 CodexSwitch 代理支持 sonnet、opus、haiku别名可选的 Sonnet 模型 1M 上下文处理 手动 Claude Code 模型输入和快捷模型按钮 代理 /v1/messages时保留 Anthropic 扩展请求头供应商切换至 Anthropic Messages 协议时自动启用 Claude Code 支持
核心功能:Home 仪表盘
自 v0.0.7 起,CodexSwitch 新增 Home 仪表盘页面:
实时代理和供应商概览卡片 范围可配置的用量指标(token 和成本) Token 和成本趋势图 按供应商和模型排名的用量分解
跨平台与部署
CodexSwitch 基于 .NET 10 和 Avalonia UI 12.0.3 构建,采用 Native AOT 编译,输出自包含安装包,无需安装 .NET 运行时。项目依赖 CommunityToolkit.Mvvm(8.4.2)用于 MVVM 模式,Lucide.Avalonia(0.2.6)提供图标支持。
三平台安装包:
Windows: CodexSwitch-vX.Y.Z-win-x64-setup.exeLinux: CodexSwitch-vX.Y.Z-linux-x64.AppImagemacOS ARM64: CodexSwitch-vX.Y.Z-osx-arm64.dmg(构建 .app/.dmg,无需 Developer ID 签名)
首次使用流程:
打开 CodexSwitch 选择内置供应商模板或创建自定义供应商 填入 API Key(或使用 Codex OAuth 登录) 将供应商设置为激活状态 保持本地代理启用
代理启动时,CodexSwitch 会向用户的 .codex 目录写入受管理的 Codex 配置。代理停止时,会自动从本地备份恢复原始 Codex 文件。
UI 支持浅色、深色和跟随系统主题,并提供中、英、日三语本地化资源。应用内可检查 GitHub Release 更新,并自动下载适合当前系统的安装包。
版本迭代
项目自 2026 年 5 月 13 日发布 v0.0.1 以来,已迭代至 v0.0.7:
v0.0.1(5月13日):初始发布。多供应商代理(OpenAI、Anthropic、Gemini、DeepSeek、Codex、Xiaomi)、协议转换、用量统计、本地化 UI、启动注册、托盘菜单控制、本地代理生命周期管理、xUnit 测试覆盖
v0.0.2(5月13日):移除 macOS x64/AMD CI 发布目标,自动化 GitHub Release 发布
v0.0.3(5月13日):CI 产物从压缩包改为平台安装包(exe/DMG/AppImage),CI 发布命令显式请求 Native AOT 自包含编译
v0.0.4(5月13日):自动更新检查,系统特定安装包选择,下载进度显示,CI 安装包排除 .pdb 文件
v0.0.5(5月14日):Claude Code 支持、网络代理设置(系统代理/自定义代理/禁用)、共享 HTTP 客户端工厂(HTTP/2 优先、连接池复用、HTTP/2 保活 ping)、代理监听优化(TCP no-delay、更长客户端 keep-alive、禁用响应缓冲、更高连接数限制)、Codex 和 Claude Code 激活供应商独立配置、后台缓冲写入、OAuth token 合并刷新、有界 Responses 会话状态缓存
v0.0.6(5月14日):Anthropic Messages 兼容性增强(OpenAI Chat 和 OpenAI Responses 供应商也支持非流式和流式转换,包括消息、工具使用、推理输出和用量统计)、DeepSeek 模板切回 Chat API、macOS DMG 签名和公证、迷你状态面板悬浮详情窗口、更丰富的按钮样式和焦点可见性设计
v0.0.7(5月15日):Home 仪表盘(实时代理和供应商概览卡片、范围可配置的用量指标、token 和成本趋势图、按供应商/模型排名分解)、Codex OAuth 账号信息充实和多账号管理(ChatGPT 工作区解析、计划和配额快照、按 OAuth 账号用量查询)、用量日志表输出 token/s 和分页导航、桌面侧边栏 + Home 布局重构、Codex OAuth 模板更新为当前 Codex 客户端头部和请求覆盖、移除 global.json SDK pin、OpenAI Chat 重放规范化(工具输出紧跟 assistant 工具调用)、macOS 打包改为无需签名的 .app/.dmg 构建
CI 工作流(ci.yml)包含 changelog 验证、依赖还原、测试项目构建、xUnit 测试运行,以及三平台 Native AOT 安装包发布。标签触发时自动创建 GitHub Release 并上传产物。
项目结构
CodexSwitch/
Assets/ 应用资源(i18n 本地化文件、图标)
Controls/ 可复用 Avalonia 控件
I18n/ 运行时本地化服务和 markup extension
Models/ 应用配置、供应商、价格、用量模型
Proxy/ 本地代理主机、路由、协议适配器、payload 构建器
Serialization/ 序列化相关
Services/ 配置存储、Codex 配置写入、用量、价格、图标、更新检查
Styles/ Avalonia 主题和组件样式
Components/ 组件级样式
ViewModels/ 桌面应用主状态和命令
Views/ 窗口、页面、对话框、shell 组件
Views/Dialogs/ 对话框组件
Views/Pages/ 页面组件
Views/Shell/ 应用壳组件
CodexSwitch.Tests/ xUnit 测试,覆盖路由、价格、配置写入、payload 构建、启动注册、
供应商用量查询、用量、i18n 和更新检查
build/ 发布和验证脚本
docs/ 发布流程说明
本地文件
CodexSwitch 将应用状态保存在用户应用数据目录中(Windows 平台):
%APPDATA%\CodexSwitch\config.json | |
%APPDATA%\CodexSwitch\model-pricing.json | |
%APPDATA%\CodexSwitch\usage-logs\yyyy\MM\usage-yyyy-MM-dd.jsonl | |
%APPDATA%\CodexSwitch\icons\ | |
%APPDATA%\CodexSwitch\backups\ | |
%APPDATA%\CodexSwitch\codex-restore-state.json | |
%USERPROFILE%\.codex\config.toml | |
%USERPROFILE%\.codex\auth.json |
配置文件包含 API Key 和 OAuth token 等敏感信息,需妥善保管。
开发指南
前置要求:.NET SDK 10.0(v0.0.7 起移除了 global.json SDK pin,跟随已安装的 .NET SDK 版本)。
git clone https://github.com/AIDotNet/CodexSwitch.git
cd CodexSwitch
dotnet restore CodexSwitch.Tests/CodexSwitch.Tests.csproj
dotnet build CodexSwitch.Tests/CodexSwitch.Tests.csproj -c Release --no-restore
dotnet test CodexSwitch.Tests/CodexSwitch.Tests.csproj -c Release --no-build--no-restore
发布 Native AOT 自包含构建:
dotnet publish CodexSwitch/CodexSwitch.csproj -c Release -r win-x64--self-contained true -p:PublishAot=true
发布前验证 changelog:
./build/Validate-Changelog.ps1
仓库地址
https://github.com/AIDotNet/CodexSwitch
安装包可从 GitHub Releases 页面下载。当前仓库尚未声明许可证,正式以开源项目分发或接受外部贡献前,建议先添加 LICENSE 文件。