# agent_token_router **Repository Path**: Macro1995/agent_token_router ## Basic Information - **Project Name**: agent_token_router - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-02 - **Last Updated**: 2026-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Agent Token Router > 快速切换 Claude Code 与 Codex 的环境变量配置,支持多个 API 提供商 一款专为 Claude Code 与 Codex 用户设计的 VSCode 插件,让你轻松在不同 AI 服务商之间切换,无需手动修改配置文件。 ## 功能特性 - 🔄 **快速切换** - 一键同时切换 Claude Code 与 Codex 的环境配置 - 📝 **可视化面板** - 直观的配置面板,同时查看 Claude 与 Codex 预设 - 🛠️ **一键编辑** - 快速打开配置文件进行修改 - 🌐 **状态栏提示** - 实时显示当前使用的配置 - 🔧 **自定义预设** - 支持添加任意数量的环境预设 ## 支持的服务商 - **DeepSeek**(Codex 默认预设) - **小米 MiMo**(Codex 默认预设) - 任何兼容 Anthropic API 的服务(Claude Code) - 任何兼容 OpenAI API 的服务(Codex,如智谱 GLM、Kimi、MiniMax 等) 默认内置 DeepSeek 与 MiMo 两个 Codex 预设,可通过编辑 `~/.codex/envs.json` 添加任意服务商。 ## 安装 ### 方式一:从 VSIX 安装(推荐) 1. 从 `release/` 目录下载最新的 `.vsix` 文件 2. 在 VSCode 中按 `Ctrl+Shift+P`,输入 `Install from VSIX` 3. 选择下载的 `.vsix` 文件 ### 方式二:从命令行安装 ```bash code --install-extension ``` ## 使用方法 ### 快速开始 1. 安装插件后,重启 VSCode 2. 状态栏右侧会显示当前配置图标(如 `🌐 默认配置`) 3. 点击图标,选择操作: - 🔄 切换环境配置(Claude / Codex) - ✏️ 编辑 Claude 预设 (envs.json) / Codex 预设 (envs.json) - ⚙️ 编辑 Claude Code 设置 (settings.json) - ⚙️ 编辑 Codex 配置 (config.toml) / 模型目录 (agr_model_catalog.json) ### 配置面板(双 Tab) 打开配置面板后,通过顶部的 Tab 切换查看: - **Claude Code 面板**:当前 Claude 环境变量、Claude 预设列表,以及「编辑 Claude settings.json」「编辑预设配置」按钮 - **Codex 面板**:当前 Codex 配置(`model_provider` / `base_url` / `model` / `experimental_bearer_token`)、Codex 预设列表,以及「编辑 Codex config.toml」「编辑模型目录 (agr_model_catalog.json)」「编辑预设配置」按钮 - **预设管理**:每个预设卡片带「修改 / 删除」按钮;「编辑预设配置」会打开对话框表单,Claude 表单编辑 `id` / `label` / `description` 与 env 环境变量(可增删行),Codex 表单编辑 `id` / `label` / `apiKey` / `baseUrl` / `model` 等提供商字段,保存后直接写入对应的 `envs.json`。**Codex 预设的 `models` 模型列表不再通过面板编辑**,直接在 `envs.json` 中维护 两个面板的预设相互独立:Claude 预设存放在 `~/.claude/envs.json`,Codex 预设存放在 `~/.codex/envs.json`,分别编辑互不影响。 ### 命令面板 按 `Ctrl+Shift+P`,搜索以下命令: | 命令 | 功能 | |------|------| | `切换环境配置(Claude / Codex)` | 快速选择并切换环境 | | `打开环境配置面板` | 查看所有预设和当前配置 | | `编辑 Claude Code 设置 (settings.json)` | 直接编辑 Claude Code 配置 | | `编辑 Codex 配置 (config.toml)` | 直接编辑 Codex 模型提供商配置 | | `编辑 Codex 模型目录 (agr_model_catalog.json)` | 直接编辑 Codex 模型目录文件 | | `编辑 Claude 预设配置 (envs.json)` | 编辑 Claude 环境预设文件 | | `编辑 Codex 预设配置 (envs.json)` | 编辑 Codex 环境预设文件 | ## 配置说明 ### envs.json 模板 项目根目录下的 [`envs.json`](envs.json) 是 Claude 预设模板、[`codex-envs.json`](codex-envs.json) 是 Codex 预设模板。首次运行插件时,会自动生成: - `~/.claude/envs.json`(Claude 预设) - `~/.codex/envs.json`(Codex 预设) **重要提示**:请勿将包含敏感信息的 `envs.json` 提交到代码仓库! ### Claude 预设格式(~/.claude/envs.json) ```json { "presets": [ { "id": "zhipu", "label": "智谱 GLM", "description": "智谱 AI GLM 模型", "env": { "ANTHROPIC_AUTH_TOKEN": "your-token-here", "ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic", "API_TIMEOUT_MS": "300000", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.7", "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5", "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5" } } ] } ``` ### 环境变量说明 | 变量 | 说明 | |------|------| | `ANTHROPIC_AUTH_TOKEN` | API 认证令牌 | | `ANTHROPIC_BASE_URL` | API 基础 URL | | `API_TIMEOUT_MS` | 请求超时时间(毫秒) | | `ANTHROPIC_DEFAULT_*_MODEL` | 默认使用的模型 | ## Codex 配置说明 Codex 预设存放在 `~/.codex/envs.json`,每个预设包含一个 `codex` 字段,用于配置 Codex CLI: ```json { "presets": [ { "id": "zhipu", "label": "智谱 GLM", "description": "智谱 AI GLM 模型", "codex": { "apiKey": "your-openai-compatible-token", "baseUrl": "https://open.bigmodel.cn/api/paas/v4", "model": "glm-5", "name": "智谱 GLM" } } ] } ``` | 字段 | 说明 | 写入位置 | |------|------|----------| | `apiKey` | API Key | `~/.codex/config.toml` 的 `[model_providers.].experimental_bearer_token` | | `baseUrl` | API 基础 URL | `~/.codex/config.toml` 的 `[model_providers.custom].base_url` | | `model` | 默认模型 | `~/.codex/config.toml` 的顶层 `model` | | `name` | 提供商显示名称 | `[model_providers.custom].name` | | `providerId` | 自定义 provider id(默认 `custom`) | `model_provider` | | `reasoningEffort` | 推理强度(如 `high`) | 顶层 `model_reasoning_effort` | | `modelCatalogJson` | 模型目录 JSON 文件路径(cc-switch 模板项) | `~/.codex/config.toml` 顶层 `model_catalog_json` | | `webSearch` | 网页搜索开关(取值为 `disabled` / `enabled`,可选,仅预设中存在时写入;也可直接在预设中写 `web_search` 键) | `~/.codex/config.toml` 顶层 `web_search` | | `models` | 该提供商下的模型列表(每个模型直接携带官方 `models.json` 字段:上下文窗口、推理档位、工具格式等,按 snake_case 直写,不做字段转换) | 同步到 `~/.codex/agr_model_catalog.json` | 一个提供商下可以配置多个模型,每个模型通过 `models` 数组定义完整元数据(字段直接使用 Codex 官方 `models.json` / `ModelInfo` 的 snake_case 字段,插件原样直写模型目录,不再做 camelCase 转换)。以 DeepSeek 为例: ```json { "id": "deepseek", "label": "DeepSeek", "description": "DeepSeek API", "codex": { "apiKey": "your-token", "baseUrl": "https://api.deepseek.com/v1", "model": "deepseek-v4-pro", "name": "DeepSeek", "providerId": "deepseek", "reasoningEffort": "high", "models": [ { "slug": "deepseek-v4-flash", "display_name": "DeepSeek-V4-Flash", "description": "Latest frontier agentic coding model.", "context_window": 1048576, "max_context_window": 1048576, "default_reasoning_level": "high", "supported_reasoning_levels": [ { "effort": "low", "description": "Fast responses with lighter reasoning" }, { "effort": "high", "description": "Extra high reasoning depth for complex problems" }, { "effort": "max", "description": "Maximum reasoning depth for the hardest problems" } ], "apply_patch_tool_type": "freeform", "truncation_policy": { "mode": "tokens", "limit": 10000 }, "supports_parallel_tool_calls": true, "input_modalities": ["text"] } ] } } ``` `supported_reasoning_levels` 也支持完整对象形式:`{ "effort": "high", "description": "Extra high reasoning depth for complex problems" }`。 切换后生成的 `~/.codex/config.toml` 大致如下(按四个模块组织并带注释): ```toml # ===== 模型配置 ===== model = "deepseek-v4-flash" model_provider = "deepseek" model_reasoning_effort = "high" model_supports_reasoning_summaries = true model_reasoning_summary = "none" model_context_window = 1048576 model_catalog_json = "C:/Users/{user}/.codex/agr_model_catalog.json" # ===== 基础配置 ===== preferred_auth_method = "apikey" forced_login_method = "api" web_search = "enabled" # ===== 供应商配置 ===== [model_providers.deepseek] name = "DeepSeek" base_url = "https://api.deepseek.com/v1" wire_api = "responses" experimental_bearer_token = "your-token-here" # ===== 其他配置 ===== # [windows] / [projects] / [mcp_servers] 等已有配置原样保留 ``` **说明**: - API Key 通过 Codex 官方字段 `experimental_bearer_token` 写入 `[model_providers.]`,请求时以 `Authorization: Bearer ` 发送,不再写入 `auth.json`(`auth.json` 仅保留 ChatGPT 登录态)。 - 切换预设时基于 `preset.codex.providerId` **无条件创建** `[model_providers.]` 配置段(`name` 取 `preset.codex.name`、`base_url` 取 `preset.codex.baseUrl`、`wire_api` 固定为 `"responses"`、`experimental_bearer_token` 取 `preset.codex.apiKey`),并固定写入顶层 `preferred_auth_method = "apikey"` 与 `forced_login_method = "api"`;当预设中存在 `webSearch` 时额外写入顶层 `web_search`(`disabled` / `enabled`)。 - 预设 `codex` 对象中除上述字段外的其余顶层配置键(如 `model_supports_reasoning_summaries`、`model_reasoning_summary`、`model_context_window`)会**自适应透传**写入 config.toml 顶层(键名需为合法 TOML 裸键,字符串加引号、数字/布尔原样输出);所有 `model_*` 顶层键由插件全权管理,切换预设时自动清除旧值。 - 自定义提供商需兼容 OpenAI Responses API(`wire_api = "responses"`)。如果切换后 Codex 报错,请检查服务商是否支持 `/v1/responses` 接口,或调整预设中的 `baseUrl`/`model`。 - 插件安装时会在 Codex 配置目录(`~/.codex` 或 `$CODEX_HOME`)自动生成 `agr_model_catalog.json`,内容为内置默认模型配置(DeepSeek V4 Flash / Pro 与 MiMo v2.5 Pro / v2.5)。该文件遵循 Codex 官方 `models.json` 结构,让 Codex 能像内置模型一样识别第三方模型的上下文窗口、推理强度档位与工具调用格式。 - 每次切换 Codex 预设时,插件会**清空并重建** `agr_model_catalog.json`,只写入当前预设 `models` 里的模型(预设条目按官方 snake_case 字段原样直写,仅补齐缺省字段,避免上一个预设的模型残留);无 `models` 的预设会得到空目录。有模型时自动把 `config.toml` 的 `model_catalog_json` 指向该文件的绝对路径,无需手动维护。 - 内置默认预设的 `models` 从随扩展打包的 `models/deepseek-models.json`、`models/mimo-models.json` 加载,默认预设仅 DeepSeek 与 MiMo 两个。 - 如果设置了 `CODEX_HOME` 环境变量,插件会优先读写 `$CODEX_HOME` 下的 `config.toml`、`auth.json`、`envs.json` 与 `agr_model_catalog.json`。 - Claude 面板只切换 Claude 配置,Codex 面板只切换 Codex 配置,互不影响。 - 每次切换会完全重建 `config.toml` 中的托管配置(`model`、`model_provider`、`preferred_auth_method`、`forced_login_method`、`model_reasoning_effort`、`model_catalog_json`、`web_search`、所有 `model_*` 顶层键以及所有 `[model_providers.*]` 块),**并清除上一次生成的模块注释**(`# ===== 模型配置 =====` 等,不会累积重复);同时保留其他配置(如 `[windows]`、`[projects]`、`[mcp_servers]`),生成块置于文件开头以保证 TOML 合法。 ## 开发 ```bash # 安装依赖 npm install # 编译 npm run compile # 监听模式编译 npm run watch # 按 F5 启动调试 ``` ## 许可证 MIT ## 链接 - [Claude Code](https://claude.ai/code) - [VSCode 扩展开发文档](https://code.visualstudio.com/api)