×

CodexSwitch:基于.NET Avalonia, 把 Codex 变成可视化、可切换、可统计的本地 AI Provider 工作台

独孤求败 独孤求败 发表于2026-05-16 16:46:16 浏览25 评论0

抢沙发发表评论

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
直接转发 Responses 请求,处理模型、service tier 和请求覆盖配置
OpenAiChat/chat/completions
将 Responses 请求转为 Chat Completions,再将响应转回 Responses 形态
AnthropicMessages/messages
将 Responses 请求转为 Anthropic Messages,处理工具调用、thinking/reasoning 映射和用量归一化

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 内置了以下供应商模板:

供应商
协议
默认模型示例
RoutinAI
OpenAI Responses
gpt-5.5
RoutinAI Plan
OpenAI Responses
gpt-5.5
OpenAI Official
OpenAI Responses
gpt-5.5
Anthropic Messages
Anthropic Messages
claude-sonnet-4-5
DeepSeek
OpenAI Chat
deepseek-v4-flash
Xiaomi MiMo
OpenAI Chat
mimo-v2.5-pro
Codex OAuth
OpenAI Responses
gpt-5.1-codex

对于其他兼容 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 代理
  • 支持 sonnetopushaiku 别名
  • 可选的 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.exe
  • Linux:CodexSwitch-vX.Y.Z-linux-x64.AppImage
  • macOS ARM64:CodexSwitch-vX.Y.Z-osx-arm64.dmg(构建 .app/.dmg,无需 Developer ID 签名)
    图片

首次使用流程:

  1. 打开 CodexSwitch
  2. 选择内置供应商模板或创建自定义供应商
  3. 填入 API Key(或使用 Codex OAuth 登录)
  4. 将供应商设置为激活状态
  5. 保持本地代理启用

代理启动时,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
供应商、路由、UI、代理、OAuth 账号元数据和本地设置
%APPDATA%\CodexSwitch\model-pricing.json
可编辑的模型价格目录
%APPDATA%\CodexSwitch\usage-logs\yyyy\MM\usage-yyyy-MM-dd.jsonl
按日期分片的本地请求用量日志
%APPDATA%\CodexSwitch\icons\
缓存的供应商和模型图标
%APPDATA%\CodexSwitch\backups\
写入 Codex 配置前的备份
%APPDATA%\CodexSwitch\codex-restore-state.json
用于恢复原始 Codex 文件的状态
%USERPROFILE%\.codex\config.toml
代理启用时的受管理 Codex 配置
%USERPROFILE%\.codex\auth.json
代理启用时的受管理 Codex auth(开启登录态保留时不覆盖)

配置文件包含 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 文件。


群贤毕至

访客