KO
|
EN
gitlite — search
Search
#typescript
#ai-agents
#ai
#dsh-plugin
#deepseek-harness
#open-source
#cli
#claude-code
#codex
#developer-tools
#react
#windows
codex-helper
★ 59
Open GitHub ↗
No description available.
Download README (.md)
Explore Similar Repositories
metacog
:
mcp tools for llm metacogntition
Loan_Prediction
:
A smart Loan Approval Prediction application using Machine Learning and Streamlit, designed with login/signup, dataset upload, graphical analytics, and real-time loan approval prediction.
ori-ui
:
No description available.
tunnel-chat
:
No description available.
vmtrace
:
🔬 Guest execution and tracing using the Windows Hypervisor Platform
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
codex-helper
?
Download (.md)
# codex-helper Codex CLI 的本地中转代理与控制台,重点解决两个问题:多中转站管理,以及在走中转时尽量保留 Codex 原生 ChatGPT 使用体验。 很多 Codex 能力不是简单转发 `/responses` 就会稳定出现。ChatGPT 登录态、OpenAI provider 身份、`/models` metadata、`/responses/compact`、hosted `image_generation` 都会影响 Codex 是否显示和调用对应能力;一些 sub2api 或其它 relay 在这些细节上返回的形态也不完全符合 Codex 预期。 codex-helper 把这些差异收在本地:Codex 连接本机代理,helper 再按 provider / routing 选择 OpenAI 官方或你的中转站,并补上模型列表翻译、client preset、能力诊断、余额观测和 fallback 策略。 当前发布版本:`v0.20.2` English: [README_EN.md](README_EN.md)  ## 支持项目开发 如果 codex-helper 对你有帮助,可以通过我当前自用的 Codex 包月服务支持项目持续开发: - AI.INPUT.IM 官网:https://ai.input.im - AI.INPUT.IM 充值商城:https://shop.input.im - 我的推广链接:https://shop.input.im/?code=4394517f 可用折扣码: - Lite 订阅套餐 9 折优惠码:`Lite9` - Air 订阅套餐 8 折优惠码:`Air8` ## 适合谁 - 你有多个 Codex/OpenAI 兼容中转站,不想反复手改 `~/.codex/config.toml`。 - 你希望“包月中转优先,用完或失败后再兜底到备用线路”。 - 你想让 Codex 保留 ChatGPT 登录态、桌面端/手机端账号能力判定,但模型请求实际走自有 relay 或包月额度。 - 你的 sub2api 或其它中转普通对话能跑,但 `/models`、`/responses/compact`、hosted `image_generation`、模型名映射这类 Codex 细节不稳定。 - 你想在 TUI 或桌面端里看到当前 provider、余额/套餐、请求 token、cache token、耗时、重试和成本估算。 - 你需要长期运行的本地代理,并希望日志、状态、session 绑定和 dashboard 刷新保持可控。 - 你想快速查看和恢复本机 Codex 会话。 不适合的场景:你只使用一个官方账号、完全不需要切换 provider,也不关心请求可观测性。 ## 核心能力 - **本地代理**:默认监听 `127.0.0.1:3211`,Codex 继续按原方式使用。 - **安全 Codex 局部修改**:只改本地代理片段,不影响 Codex 运行中写入的其他配置。 - **Codex 原生体验预设**:`chatgpt-bridge` 保留 ChatGPT 登录态,`imagegen-bridge` 暴露 hosted image generation,`official-relay` / `official-imagegen` 默认让支持官方 Responses 语义的中转走远程压缩;`compaction` 和 `responses_websocket` 分别作为独立开关控制压缩策略与 Responses WebSocket v2。 - **OpenAI Images 兼容入口**:本地代理额外暴露 `POST /v1/images/generations` 和 JSON `POST /v1/images/edits`,会转成 Responses hosted `image_generation` 请求并复用同一套 provider routing / fallback,方便本地 skill 或脚本稳定生图或带参考图生成。 - **中转能力诊断**:TUI、CLI 和 admin API 都可以检查 `/models`、`/responses`、`/responses/compact`,并给出当前 relay 更适合哪种 preset。 - **provider / routing 配置**:`version = 5` route graph 格式,新增 provider 后用 routing entry/routes 决定顺序、固定、分组或标签优先。 - **会话粘性与自动兜底**:同一 Codex 会话会尽量粘住已选 provider,请求失败、上游不可用或可信余额显示耗尽时再按策略切换候选 provider/upstream。 - **provider 信号控制循环**:限流、配额、传输错误和余额耗尽会先记录为 provider signal,再生成 helper 拥有的临时 policy action 投影到路由;手动禁用优先级更高,自动 action 不会修改 Codex auth 或第三方账号文件。 - **本地并发上限**:可为 provider 或 endpoint 配置本进程并发上限,relay 账号饱和时自动跳过并走 fallback。 - **余额/套餐**:支持 Sub2API、New API 和常见 `/user/balance` 探测;失败不计为耗尽。 - **出站代理兼容**:本地代理和出站网络代理是两层概念;当前出站请求受系统/环境代理变量影响,还没有 `config.toml` 专用代理段。 - **请求可观测**:记录 provider、model、token、cache token、缓存命中率、TTFB、总耗时、输出速度、重试链、provider signal / policy action 证据和估算成本。 - **TUI / Desktop**:TUI 内置在命令行里;旧 `codex-helper-gui`/egui 入口已移除。Tauri 桌面端代码位于 `apps/desktop`,已完成 Windows packaged smoke,但当前公开 release 仍不发布桌面安装包,等签名、发布通道和回滚流程就绪后再进入正式桌面发布。 ## 快速开始 ### 安装 推荐使用预编译安装脚本(无需本机安装 Rust): macOS / Linux: ```bash curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Latias94/codex-helper/releases/download/v0.20.2/codex-helper-installer.sh | sh ``` Windows PowerShell: ```powershell powershell -ExecutionPolicy Bypass -c "irm https://github.com/Latias94/codex-helper/releases/download/v0.20.2/codex-helper-installer.ps1 | iex" ``` 安装后会得到两个命令:`codex-helper` 和短别名 `ch`。旧 egui GUI 入口 `codex-helper-gui` 已移除;Tauri 桌面端当前仍是源码内预览路径,公开 release 暂不发布桌面安装包;需要本地验证时可从 `apps/desktop` 运行 `pnpm tauri:build`。 如果不想 pipe shell,可以到 [GitHub Releases](https://github.com/Latias94/codex-helper/releases) 下载对应平台压缩包,并使用同名 `.sha256` 文件校验。 Rust 用户也可以使用 `cargo-binstall`: ```bash cargo install cargo-binstall cargo binstall codex-helper ``` 从源码构建: ```bash cargo build --release ``` ### 启动 ```bash codex-helper # 或 ch ``` 默认行为: - 启动本地代理; - 初始化或迁移 `~/.codex-helper/config.toml`,旧文件会自动备份为 `.bak`; - 必要时把 Codex 的 `model_provider` 局部 patch 到 `codex_proxy`; - 交互终端中打开 TUI; - 退出时撤销 codex-helper 的本地代理 patch。 只启动代理、不打开 TUI: ```bash codex-helper serve --no-tui ``` 高级:常驻/附着代理(只有显式使用 `--resident`/`daemon`/`tui` 子命令时才会让代理独立于当前控制台继续运行): ```bash codex-helper serve --resident codex-helper daemon status codex-helper daemon stop codex-helper tui --codex ``` 默认 `codex-helper serve` 的内置 TUI 遵循“界面拥有代理”:退出界面会停止它自己启动的代理,并撤销本地客户端 patch。`daemon status/stop` 只用于查询或停止你显式启动的 resident proxy;`tui` 子命令只读附着到已有 resident proxy,退出这个 attached TUI 不会停止代理。需要自动拉起/崩溃重启时可用 `codex-helper daemon supervise --codex`,supervisor 会写入轻量 crash marker 到 `~/.codex-helper/run/` 便于排查。 `daemon status` 会尽量显示当前 resident proxy 的 owner marker(manual CLI、supervisor 或未来桌面/托盘 owner);marker 只用于可观测性,读取或清理失败不会阻断代理启动/退出。面向未来桌面端的 sidecar 语义已经预留为隐藏的 managed 启动模式,普通用户无需手动判断或使用。 Tauri 桌面端采用更接近 Clash 的常驻客户端语义:关闭主窗口隐藏到托盘,`Quit App` 只退出桌面进程,真正停止代理必须走显式 `Stop Proxy`。Windows NSIS packaged 路径已通过隔离生命周期 smoke,但尚未进入公开发布;macOS/Linux packaged parity、签名发布链路和回滚流程仍需单独完成。 显式开关 Codex 代理 patch: ```bash codex-helper switch on codex-helper switch on --preset chatgpt-bridge codex-helper switch on --preset official-relay codex-helper switch on --preset official-relay --responses-websocket codex-helper switch on --preset official-imagegen codex-helper switch status codex-helper switch off ``` NAS / 远端 relay target: ```bash ch relay add nas \ --proxy-url http://nas.local:3211 \ --admin-url http://nas.local:4211 \ --admin-token-env CODEX_HELPER_NAS_ADMIN_TOKEN \ --preset official-relay ch relay list ch relay status nas ch relay nas ch relay nas --no-tui ch relay nas --attach-only ch relay off ``` `ch` 仍然是本机前台启动入口;`ch relay local` 是同一行为的显式 target 写法。`ch relay <name>` 会把本机 Codex patch 到远端 proxy,并附着一个本地 TUI 去看远端 admin API;`--no-tui` 只切换客户端,`--attach-only` 只看远端 TUI 不改本机 Codex 配置。admin token 只从 `--admin-token-env` 指定的环境变量读取,值不会写进 `~/.codex-helper/config.toml`。容器/NAS 端应设置 `advertised-admin-base-url`,或在 `relay add` 时显式给 `--admin-url`。 远端 target 不等于远端拥有本机 Codex 会话文件。容器默认不会声明 host-local transcript/session 访问能力,除非你明确挂载并启用对应 server policy。 预设怎么选: | 预设 | 适合什么情况 | 效果 | | --- | --- | --- | | `default` | 只需要本地代理、多 provider 和 fallback | Codex 把模型请求发到本地 helper,helper 再选上游 | | `chatgpt-bridge` | 你已经在官方 Codex 里登录 ChatGPT,希望保留桌面端/手机端账号体验,但模型流量走 relay | 写入 ChatGPT auth 形态,真实上游凭据仍来自 helper 配置 | | `imagegen-bridge` | relay 不支持 official provider 身份,但你想让 Codex 暴露 hosted `image_generation` | 写入 `{}` auth facade;不会要求官方登录 | | `official-relay` | relay 背后能转发官方 OpenAI Responses 语义,尤其支持 `/responses/compact` | 默认让 Codex 把本地 helper 当作 OpenAI provider,从而走远程压缩路径 | | `official-imagegen` | relay 背后是官方订阅账号,并且同时支持 `/responses/compact` 和 hosted image generation | 默认同时启用 OpenAI provider 身份、远程压缩路径和 `{}` imagegen facade | `chatgpt-bridge` 启用前必须先在官方 Codex 中完成 ChatGPT 登录。如果 `~/.codex/auth.json` 没有完整 token、email 和账号信息,codex-helper 会拒绝 patch,避免 Codex TUI 因半登录状态启动失败。 `official-relay` 和 `official-imagegen` 都是实验预设。它们只负责让 Codex 使用更接近官方的客户端能力选择;中转站本身仍必须真正支持对应接口。默认情况下,`official-*` 会让 Codex 选择远程压缩路径;如果要保留 official preset 的其它行为但强制本地压缩,可额外设置 `[codex.client_patch].compaction = "local"` 或使用 `codex-helper switch on --preset official-imagegen --compaction local`。真实请求密钥来自 `~/.codex-helper/config.toml` 的 provider 配置,bridge 预设不会把 Codex 的 ChatGPT token 透传给没有 helper 侧密钥的第三方 relay。旧的 `official-relay-bridge` / `official-imagegen-bridge` 输入名已移除;新命令请使用 `official-relay` / `official-imagegen`。 为了不拖能力较强的中转后腿,codex-helper 默认会在路由前归一化压缩 HTTP 请求体(`zstd`、`gzip` / `x-gzip`、`br`、`deflate`)。对 Codex `/responses`、`/responses/compact` 和 Responses WebSocket,helper 还会从已有请求证据补齐缺失的 `session_id`、`x-session-id`、官方 `session-id` / `thread-id` 和 `prompt_cache_key`,来源包括 header session、body `session_id`、`prompt_cache_key` 和 `metadata.session_id`。`previous_response_id` 只用于 stale-response 修复,不作为 session identity 来源;helper 不会凭空生成 session id,也不会覆盖用户已经带上的 session 字段。 已选 provider endpoint 的会话 affinity 会持久化到 helper state,所以 helper 重启后不会让 Codex remote compaction 会话静默换到另一个 provider endpoint。带有 `encrypted_content`、`previous_response_id` 或 `compaction_summary` 的 v1 compact,以及带 `compaction_trigger` 的 remote compaction v2,都会按 state-bound compact 处理:使用已知 route affinity;如果没有可证明的 affinity,就返回明确的连续性错误,而不是猜一个新 provider 兜底。这个判断保持 provider-opaque:helper 不推断 relay 背后是 OpenAI、sub2api、New API 还是其它中转。这样 relay 粘性可以贯穿 `/responses`、`/responses/compact` 和 v2 compact 的 `/responses` 请求;但这不会替上游补出 compact 或 WebSocket 能力。极少数中转如果必须接收原始 Codex 压缩 body,可用 `CODEX_HELPER_REQUEST_BODY_ENCODING=passthrough` 启动 helper。 Codex 请求语义还有两个小修复:如果上游明确返回 `previous_response_id` 对应 response 不存在,helper 会移除该字段并对同一个上游重试一次;如果中转无视 `Accept-Encoding: identity` 返回 gzip JSON,helper 会先解压再转发普通 JSON。`service_tier` 只做观测和日志归因,日志会区分 requested / effective / actual,不会因为 helper 默认配置改写客户端请求里的 fast mode。 在上游能力满足的前提下,能力最完整的是 `official-imagegen`;如果再确认上游支持 Responses WebSocket v2,可以额外开启 `responses_websocket`,这就是当前最接近官方体验的组合: ```text default < chatgpt-bridge / imagegen-bridge < official-relay < official-imagegen < official-imagegen + responses_websocket ``` 不要无脑开最强组合:`official-imagegen` 要求中转同时支持 `/responses`、`/responses/compact` 和 hosted `image_generation`;`responses_websocket` 还要求 WebSocket live smoke 通过。 如果上游已确认支持 Responses WebSocket v2,再额外启用 `responses_websocket = true` 或 `--responses-websocket`;它是独立传输开关,不是新的 preset。压缩路径同样是独立开关:`compaction = "auto"` 保持 preset 默认,`local` 强制 Codex 客户端走本地压缩,`remote-v1` 强制 `/responses/compact`,`remote-v2` 强制 `remote_compaction_v2` 并继续使用 helper 的 v2 到 v1 降级兜底。 本地代理还提供 OpenAI Images 兼容的生图和参考图编辑入口,适合给 Codex skill 或脚本调用,而不是依赖 Codex 客户端是否成功暴露 hosted tool: ```bash curl 'http://127.0.0.1:3211/v1/images/generations' \ -X POST \ -H 'Content-Type: application/json' \ --data-raw '{ "model": "gpt-image-2", "prompt": "一只猫在雨夜的霓虹灯下", "size": "3840x2160", "output_format": "png", "quality": "high" }' ``` 参考图模式使用 JSON `POST /v1/images/edits`,接受 `images` 数组,数组元素可以是 `{"image_url":"..."}`、`{"file_id":"..."}`,也可以直接写图片 URL / data URL 字符串;helper 会把这些引用转成 Responses `input_image` 内容: ```bash curl 'http://127.0.0.1:3211/v1/images/edits' \ -X POST \ -H 'Content-Type: application/json' \ --data-raw '{ "model": "gpt-image-2", "prompt": "把参考图人物画成一整页凌乱角色速写", "images": [ {"image_url": "data:image/png;base64,..."} ], "size": "2160x2880", "output_format": "png", "quality": "high", "input_fidelity": "high" }' ``` 这两个入口内部仍走 `/v1/responses` + hosted `image_generation`,因此真实上游必须支持该能力;当前只支持 `n=1` 的单图结果。JSON edits 不实现 mask 解析,带 `mask` 的 JSON 和 multipart edits 会按普通代理请求直通上游。返回形态为 OpenAI Images 风格的 `data[0].b64_json`。 注意:任何对 `~/.codex/config.toml` 的修改都只会被新启动的 Codex 会话读取;修改后请完整重启 Codex App、TUI 或 `codex exec` 会话。 如果你的目标是“还能登录 ChatGPT,但实际对话流量走中转”,推荐把账号层和路由层分开: 1. 用 `chatgpt-bridge` 保留 Codex App 的 ChatGPT 登录态。 2. `codex-helper switch on --preset chatgpt-bridge` 会把 Codex 自己的 `~/.codex/config.toml` 指向本地 `codex_proxy`。 3. 在 `~/.codex-helper/config.toml` 配 `codex.providers.*` 和 `codex.routing`,让 codex-helper 最终选择你的 relay。 4. 如果 relay 需要带前缀的模型名,就给 provider 配 `model_mapping`。 这种拆法适合保留 Codex App、手机端和订阅账号能力判定,同时把日常对话、工具调用和 imagegen 等模型消耗放到自有中转或包月额度。 Codex 侧的本地代理入口通常由 `switch on` 写入,不建议手写覆盖其它 Codex 配置: ```toml # ~/.codex/config.toml model_provider = "codex_proxy" [model_providers.codex_proxy] name = "codex-helper" base_url = "http://127.0.0.1:3211" wire_api = "responses" requires_openai_auth = true supports_websockets = false ``` codex-helper 侧只负责上游和路由: ```toml # ~/.codex-helper/config.toml version = 5 [codex.client_patch] preset = "chatgpt-bridge" responses_websocket = false compaction = "auto" [codex.providers.relay] base_url = "https://relay.example/v1" auth_token_env = "RELAY_API_KEY" [codex.routing] entry = "relay_first" [codex.routing.routes.relay_first] strategy = "ordered-failover" children = ["relay"] ``` Codex App 手机远程控制走的是另一条路径,不要把它和 `chatgpt-bridge` 混在一起: ```bash codex-helper switch remote-control enable codex-helper switch remote-control status codex-helper switch remote-control check-logs ``` 这个命令会写 `~/.codex/config.toml` 的 `[features].remote_connections = true`,不会写 `remote_control = true`,然后备份并更新 `~/.codex/sqlite/codex-dev.db` 里的 `local_app_server_feature_enablement.remote_control`。执行后请完整重启 Codex App,再用 `check-logs` 验证 `experimentalFeature/enablement/set` 至少出现一次 `errorCode=null`。手机端连接时仍然需要 ChatGPT 账号完成 MFA / 多因素认证。 如果中转站要求带 provider 前缀的模型名,可以用 provider 级 `model_mapping` 改写请求体里的 `model`: ```bash codex-helper provider add relay --base-url https://relay.example/v1 --auth-token-env RELAY_API_KEY --supported-model gpt-5.5 --model-map gpt-5.5=openai/gpt-5.5 ``` ## 最小配置 最推荐用 CLI 生成和修改配置: ```bash codex-helper config init codex-helper provider add input \ --base-url https://ai.input.im/v1 \ --auth-token-env INPUT_API_KEY \ --tag billing=monthly codex-helper provider add openai \ --base-url https://api.openai.com/v1 \ --auth-token-env OPENAI_API_KEY \ --tag billing=paygo codex-helper routing order input openai codex-helper config set-retry-profile balanced ``` 对应的 `~/.codex-helper/config.toml` 很薄: ```toml version = 5 [codex.providers.input] base_url = "https://ai.input.im/v1" auth_token_env = "INPUT_API_KEY" tags = { billing = "monthly" } [codex.providers.input.limits] max_concurrent_requests = 5 limit_group = "input-account" [codex.providers.openai] base_url = "https://api.openai.com/v1" auth_token_env = "OPENAI_API_KEY" tags = { billing = "paygo" } [codex.routing] entry = "main" [codex.routing.routes.main] strategy = "ordered-failover" children = ["input", "openai"] [retry] profile = "balanced" ``` 常见 routing 策略: | 目标 | 配置方式 | 说明 | | --- | --- | --- | | 固定一个 provider | `codex-helper routing pin input` | 临时强制走某个 provider | | 按顺序兜底 | `codex-helper routing order input openai` | 最直观,适合大多数用户 | | 包月优先 | `codex-helper routing prefer-tag --tag billing=monthly --order input,openai --on-exhausted continue` | 包月都已知耗尽后继续兜底 | | 包月止损 | 同上但 `--on-exhausted stop` | 不自动切到按量 provider | | 月包池 + paygo 兜底 | 在 TOML 中用嵌套 route nodes | `monthly_pool -> paygo` 保留清晰分组 | [中文配置参考](docs/CONFIGURATION.zh.md) 和 [English configuration reference](docs/CONFIGURATION.md) 内容对齐,任选一种语言阅读即可;常用 route graph 模板在配置文档的“配置模板 / Recipes”章节。 ## 代理说明 codex-helper 有两层“代理”: - **本地代理**:Codex 连接 `127.0.0.1:3211`,请求先进入 codex-helper,再由 routing 选择 provider。只要启用了 codex-helper 的 Codex patch,即使没有配置外部网络代理,请求也会经过这个本地 proxy server。 - **出站网络代理**:codex-helper 访问 provider、relay 或 balance API 时是否经过网络代理。当前版本还没有 `config.toml` 专用配置段,但底层 HTTP client 会受 `HTTP_PROXY`、`HTTPS_PROXY`、`ALL_PROXY`、`NO_PROXY` 等系统/环境变量影响。 更详细的边界和未来配置方向见 [配置参考的本地代理和出站代理章节](docs/CONFIGURATION.zh.md#本地代理和出站代理)。 ## 常用命令 ```bash # provider / routing codex-helper provider list codex-helper provider show input codex-helper provider disable input codex-helper provider enable input codex-helper routing show codex-helper routing explain codex-helper routing explain --model gpt-5 --json # 会话 codex-helper session list codex-helper session list --truncate 120 codex-helper session search "remote_control" codex-helper session search "remote_control" --truncate 120 codex-helper session recent codex-helper session last codex-helper session transcript <SESSION_ID> --tail 40 # 请求日志与统计 codex-helper usage summary codex-helper usage tail --limit 20 codex-helper usage find --errors --limit 10 codex-helper usage chain --trace-id <TRACE_ID> --json # 价格 codex-helper pricing list codex-helper pricing sync-basellm --model gpt-5 --dry-run # 诊断 codex-helper status codex-helper doctor codex-helper codex relay-capabilities --preset official-imagegen --compaction local --model gpt-5.5 codex-helper codex relay-live-smoke --acknowledgement run-live-codex-relay-smoke --model gpt-5.5 codex-helper codex relay-live-smoke --acknowledgement run-live-codex-relay-smoke --model gpt-5.5 --provider ciii --compact-v2 codex-helper codex relay-evidence --limit 20 codex-helper --version ``` ## UI 入口 ### TUI `codex-helper` 默认在交互终端打开 TUI。 常用页面: - `Overview`:代理状态、当前会话和最近请求。 - `Routing` / `Stations`:route graph、provider 顺序、余额/套餐、tags、健康状态和 routing 预览。 - `Sessions`:session identity、effective route、route affinity、单会话覆盖。 - `Usage`:今日请求、token、估算成本、24 小时活跃度、provider/station/model/session/project 排行、日志覆盖提示和全局 retry gate 数量。 - `Requests`:请求日志、endpoint 最近样本、token、cache token、耗时、重试、request chain 和成本。 常用快捷键会显示在底部。TUI 的持久化 provider/routing 编辑优先使用 routing 页面,手动改配置后可用 `R` 重新加载运行态配置。 余额刷新和余额诊断保留在 `Routing` / `Stations` 相关页面;单个 provider 查询失败只会显示为错误/未知状态,不会打断页面刷新或其他 provider 的刷新。 ### Desktop Preview 新的 Tauri 桌面端位于 `apps/desktop`,技术栈是 React 19、Tailwind CSS 4、shadcn/ui 风格组件和 TanStack Router/Query/Table。它已经实现 Dashboard、Providers、Usage、Settings、只读 admin 数据、安全控制动作、关闭隐藏到托盘语义、单实例、开机启动设置、轻量单配置导入导出、打开配置/日志/缓存路径、Provider 常用编辑表单和 Windows NSIS packaged sidecar 构建。Windows packaged smoke 已覆盖安装包启动、托盘 Show/Hide/Quit、显式 Stop Proxy、Detach、第二次启动聚焦、开机启动注册、配置导入导出和 Provider 编辑;但当前公开 release 不发布桌面安装包,正式桌面 release 会等签名密钥、HTTPS 发布端点、artifact hosting 和回滚流程就绪后再启用。桌面端打包策略见 [docs/DESKTOP_RELEASE.md](docs/DESKTOP_RELEASE.md)。 ## 配置文件位置 - 主配置:`~/.codex-helper/config.toml` - 余额适配:`~/.codex-helper/usage_providers.json` - 价格覆盖:`~/.codex-helper/pricing_overrides.toml` - 请求过滤:`~/.codex-helper/filter.json` - 请求日志:`~/.codex-helper/logs/requests.jsonl` - Codex relay 诊断证据:`~/.codex-helper/logs/codex_relay_evidence.jsonl` Codex 自己的文件仍由 Codex 维护: - `~/.codex/auth.json` - `~/.codex/config.toml` codex-helper 只会局部修改 `~/.codex/config.toml` 里的本地代理片段。 ## 设计边界 codex-helper 刻意避免这些做法: - 每个 provider 复制一份完整 Codex 配置。 - 根据 provider 名字猜测包月/按量。 - 在没有可靠测量前做“智能速度优先”或“成本优先”幻觉策略。 - 把余额查询失败当作 provider 不可用或已耗尽。 - 让 UI 保存复杂 provider 时悄悄丢掉高级字段。 ## 更多文档 - [docs/CONFIGURATION.zh.md](docs/CONFIGURATION.zh.md):中文完整配置参考,包含 routing 模板、余额适配、代理说明和迁移。 - [docs/CONFIGURATION.md](docs/CONFIGURATION.md):English configuration reference, routing, balance adapters, pricing, migration. - [CHANGELOG.md](CHANGELOG.md):版本变更和升级注意事项。 - [docs/DESKTOP_RELEASE.md](docs/DESKTOP_RELEASE.md):Tauri 桌面端打包、sidecar 和 release gate 说明。 - [docs/workstreams/codex-routing-scheduler-observability-refactor/README.md](docs/workstreams/codex-routing-scheduler-observability-refactor/README.md):路由调度状态、限流/过载结果、并发上限和 TUI 指标的无畏重构设计。 - [docs/workstreams/codex-tui-operator-polish/README.md](docs/workstreams/codex-tui-operator-polish/README.md):TUI 用量、路由、窄终端和快捷键操作体验优化计划。 - [docs/workstreams/codex-operator-experience-refactor/GAP_MATRIX.md](docs/workstreams/codex-operator-experience-refactor/GAP_MATRIX.md):与 cc-switch、aio-coding-hub、all-api-hub 的差距分析。 - [docs/workstreams/codex-control-plane-refactor/README.md](docs/workstreams/codex-control-plane-refactor/README.md):控制平面设计记录。 ## 参考项目 codex-helper 借鉴了这些项目的成熟设计,但定位更聚焦于 Codex CLI 本地中转与控制平面: - [cc-switch](https://github.com/farion1231/cc-switch):provider 管理、余额/套餐查询模板、请求用量展示。 - [aio-coding-hub](https://github.com/dyndynjyxa/aio-coding-hub):多 CLI 网关、请求链路、成本统计和 provider 可观测性。 - [all-api-hub](https://github.com/qixing-jk/all-api-hub):Sub2API / New API 余额、用量和账号适配经验。