# Codex Token 与订阅额度优化报告 ## 结论 Codex 订阅额度不是简单按 DSH 显示的 Token 一比一扣减。OpenAI 的 Codex 额度会受到模型、任务复杂度、请求位置和执行方式影响;DSH 的 provider usage 适合定位“哪次请求变大、是否命中缓存、是否发生重试”,但不能替代 ChatGPT/Codex 服务端的额度窗口。 本轮确认的主要放大器是: 1. 瞬时错误后的整请求自动重试; 2. 长会话中的未缓存输入与压缩摘要请求; 3. 子代理递归分派导致的请求树扩张; 4. 高推理强度、长输出预算和不必要的工具循环; 5. 只看总输入而不区分缓存读取与未缓存输入,导致无法定位真实增量。 ## Plus 插件优化 ### 模型重试默认改为 0 Alpha.2 继承 DSH 普通 retry policy:首次请求失败后,符合条件的瞬时错误最多再请求两次。因此一次用户操作最坏会产生三次完整模型请求。 Alpha.3 默认: ```yaml modelMaxRetries: 0 ``` 用户可在插件配置中显式选择 0、1 或 2。默认从最多三次尝试降为一次,在完整失败链上最多减少 66.7% 的模型请求。该百分比是请求次数上限变化,不是承诺节省同等比例的服务端额度。 图片生成和编辑继续保持零自动重试。超时或连接中断不代表上游未处理;自动重试可能生成重复图片并再次消耗额度。 ### Prompt Cache 路径 Plus 通过稳定的 DSH session id 给 Codex 请求提供 `prompt_cache_key`。DSH 保持系统提示与工具目录前缀顺序稳定;动态时间信息作为尾部消息进入,不会改变长系统前缀。 OpenAI 的 Prompt Caching 文档指出,缓存依赖相同前缀,工具定义也属于可缓存前缀。优化重点因此是保持前缀稳定并观察 `cacheReadTokens`,而不是随意删除必要系统指令。 ## DSH 优化 ### 会话统计可见性 DSH 的会话统计新增: - 自动重试次数; - 总输入中的未缓存输入; - Cache hit 百分比; - 压缩摘要请求的 provider usage。 压缩前,`compaction/summary` 已保存 usage,但没有进入会话 `tokenUsage` 总计;长会话因此会低估实际调用量。现在摘要请求会作为独立 provider 请求累计,同时不会错误覆盖主模型的上下文占用读数。 ### 子代理递归上限 内置 `standard`、`code`、`cordis` preset 及 base bundle 将进程内子代理最大深度从默认 3 收紧为 2: ```text root → child → grandchild ``` 仍允许有价值的二级分工,但阻止第三层继续扩张完整上下文请求树。 如果每个代理平均继续分派 `b` 个代理,理论最大后代数从: ```text b + b² + b³ ``` 降到: ```text b + b² ``` 示例: - `b=2`:14 → 6,后代请求上限减少 57.1%; - `b=3`:39 → 12,后代请求上限减少 69.2%。 这是递归上界,不代表普通会话一定达到该数量。显式 Workflow/Ralph 仍由各自的并发和轮数策略管理。 ### 压缩策略 DSH 当前自动压缩默认在上下文窗口约 80% 触发,压缩后保留约 16% 的逐字尾部。没有证据表明盲目提前压缩一定省额度:压缩本身也是一次模型请求,过于频繁会增加摘要调用并可能降低缓存复用。 因此本轮不修改默认压缩阈值,先完整计入摘要 usage,再根据真实长会话数据决定是否需要按 provider/model 覆盖阈值。 ## 订阅额度与 Token 的正确读法 同时观察两类数据: 1. ChatGPT/Codex usage 窗口:回答账户还剩多少额度; 2. DSH 会话统计:回答消耗来自未缓存输入、缓存读取、输出、压缩还是重试。 不要用 DSH Token 数直接推算订阅余额。服务端额度可能按任务复杂度和模型折算;相同 Token 数的两次任务不保证扣减一致。 ## 推荐配置 ```yaml modelMaxRetries: 0 enableSearch: false enableImageTool: false enableImageGeneration: true ``` 使用建议: - 普通任务保持零重试;确认是瞬时网络不稳定时再手动重试; - 长任务优先继续同一会话以保留缓存前缀,但上下文接近上限时使用一次有效压缩或新会话; - 不让子代理再递归发起大规模审计;需要大量独立任务时使用有明确数量和结构化返回的 Workflow; - 不向每个子代理复制无关日志、完整历史或大文件; - 先看“未缓存输入”和“自动重试”,再判断是否需要缩短上下文; - 图片超时后先检查输出与额度,不自动重复生成。 ## 验证证据 - Plus 全量检查:19 个测试文件、78 个测试通过;构建、类型检查、Client frozen-module-table 检查和 pack 检查通过。 - DSH Token/会话统计:Token Meter、Session Stats、Connection Fixture、Conversation UI 回归通过。 - Windows ACL 沙箱:14 个测试文件、162 个测试通过,包括真实受限进程写入/拒绝、子进程和 PowerShell 模式。 - PM2 后台窗口探针:持续监测 12 秒,Windows Terminal 可见窗口数始终为 2,受限 PowerShell 命令退出码为 0,未新增窗口。 ## 参考资料 - [OpenAI Codex rate card](https://help.openai.com/en/articles/20001106-codex-rate-card) - [OpenAI Prompt Caching](https://developers.openai.com/api/docs/guides/prompt-caching) - [OpenAI Reasoning models](https://developers.openai.com/api/docs/guides/reasoning) - [Windows process creation flags](https://learn.microsoft.com/windows/win32/procthread/process-creation-flags) - [Windows Terminal default-host popup issue #11627](https://github.com/microsoft/terminal/issues/11627) - [Windows Terminal Show/Hide propagation #12570](https://github.com/microsoft/terminal/issues/12570)