# codex-patches **Repository Path**: kobe_6902/codex-patches ## Basic Information - **Project Name**: codex-patches - **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-01-25 - **Last Updated**: 2026-01-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Codex 自定义补丁 这个仓库包含了对 Codex 的自定义修复,主要解决以下问题: ## 修复内容 ### 1. Chat Completions API 的 Token Usage 解析 **问题**: Codex 的 Chat Completions SSE 解析器没有解析 `usage` 字段,导致: - Token 使用率显示一直卡在 100% - Auto compact 功能无法触发(因为 `total_token_usage` 永远为 0) **修复**: 在 `codex-api/src/sse/chat.rs` 中添加了 `usage` 字段的解析和传递逻辑。 ### 2. Profile 配置支持 **问题**: `model_context_window` 和 `model_auto_compact_token_limit` 无法在 config profile 中配置。 **修复**: - `core/src/config/profile.rs`: 添加了这两个字段 - `core/src/config/mod.rs`: 实现了 profile 层级的配置合并 ### 3. 调试日志 添加了 auto-compact 检查和 token usage 更新的调试日志,方便排查问题。 ## 使用方法 ### 首次安装或升级后 ```bash # 1. 升级 codex (如果需要) npm install -g @openai/codex # 2. 运行部署脚本 ./deploy.sh ``` ### 手动部署 如果自动脚本失败,可以手动执行: ```bash # 1. 备份原始二进制 cp /opt/homebrew/lib/node_modules/@openai/codex/vendor/aarch64-apple-darwin/codex/codex \ /opt/homebrew/lib/node_modules/@openai/codex/vendor/aarch64-apple-darwin/codex/codex.backup-$(date +%Y%m%d-%H%M%S) # 2. 复制修复后的二进制 cp ./binaries/codex-aarch64-darwin \ /opt/homebrew/lib/node_modules/@openai/codex/vendor/aarch64-apple-darwin/codex/codex # 3. 验证 codex --version ``` ### 回滚 如果出现问题,恢复备份: ```bash # 查找最新备份 ls -lt /opt/homebrew/lib/node_modules/@openai/codex/vendor/aarch64-apple-darwin/codex/codex.backup-* | head -1 # 恢复 (替换时间戳) cp /opt/homebrew/lib/node_modules/@openai/codex/vendor/aarch64-apple-darwin/codex/codex.backup-YYYYMMDD-HHMMSS \ /opt/homebrew/lib/node_modules/@openai/codex/vendor/aarch64-apple-darwin/codex/codex ``` ## 目录结构 ``` codex-patches/ ├── README.md # 本文件 ├── deploy.sh # 自动部署脚本 ├── build.sh # 编译脚本 (从源码编译) ├── binaries/ # 预编译的二进制文件 │ └── codex-aarch64-darwin ├── patches/ # 源代码补丁 │ ├── chat-usage.patch │ ├── profile-config.patch │ └── debug-logs.patch └── src/ # 修改后的源文件 (供参考) └── ... ``` ## 配置建议 在 `~/.codex/config.toml` 中添加: ```toml model = "gpt-5.2" model_provider = "copilot" model_context_window = 272000 model_auto_compact_token_limit = 244800 # 根据需要调整 [model_providers.copilot] name = "Copilot API" base_url = "http://localhost:4142/v1" wire_api = "chat" experimental_bearer_token = "dummy" requires_openai_auth = false ``` ## 系统要求 - macOS (Apple Silicon / aarch64) - Homebrew - Node.js / npm - Rust toolchain (如果需要重新编译) ## 技术细节 ### 修改的文件 1. `codex-rs/codex-api/src/sse/chat.rs` - 添加 `token_usage` 状态变量 - 解析 SSE chunk 中的 `usage` 字段 - 在所有 Completed 事件中传递 usage 2. `codex-rs/core/src/config/profile.rs` - 添加 `model_context_window` 字段 - 添加 `model_auto_compact_token_limit` 字段 3. `codex-rs/core/src/config/mod.rs` - 实现 profile 配置的合并逻辑 4. `codex-rs/core/src/codex.rs` - 添加 auto-compact 检查日志 - 添加 token usage 更新日志 ### 为什么需要这些修复? 使用第三方 OpenAI 兼容 API (如 copilot-api) 时: 1. Chat Completions API 的流式响应中,`usage` 通常在最后一个 chunk 2. 原始 codex 没有解析这个字段,导致无法追踪 token 使用 3. 没有 token 追踪,auto-compact 无法工作 这些修复让 codex 能正确使用任何 OpenAI 兼容的 Chat Completions API。 ## 许可 这些补丁基于 Codex 源码,遵循原项目的许可证。