关于 codex-huge-context
用于配置和审计 Codex 大上下文设置的技能,通过 OpenAI API 直接进行推理。它将 API 密钥推理与连接器所用的 ChatGPT 登录分开,并要求启动 Codex 前完成验证。
主要功能
- 01配置 API 直接推理
- 02上下文与压缩安全限制
- 03验证模型目录
- 04通过 Keychain 提供凭据
- 05安全预检且不泄露密钥
适用场景
- 01配置 Codex 大上下文配置
- 02审计提供方与上下文设置
- 03启动前检查 API 凭据传递
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ steipete/ agent-scripts --skill codex-huge-context安装后在 Claude Code 中输入/codex-huge-context确认已加载。
附带文件scripts/preflight.rbscripts/preflight.test.rb
详细介绍
Codex 超大上下文
配置、修复或审计 Codex 的百万令牌上下文设置时,请使用此技能。预期拓扑是直接 API 推理路由,同时保留常规 ChatGPT 登录,以用于 Gmail、Calendar 和其他连接器的 OAuth:
Codex inference -> Keychain auth helper -> https://api.openai.com/v1/responses
Codex connectors -> normal ChatGPT login in auth.json
这不是 HTTP 代理。API 仍是访问权限、实际模型限制和计费的权威来源。
提供方与上下文的原子性不变量
应将提供方选择器、上下文窗口、压缩阈值和自定义模型目录视为一项不可分割的配置。在 Peter 常规的 ChatGPT 身份验证设置中,model_provider = "openai" 会选择由 ChatGPT 支持的路由;切勿将此技能的直接 API 922000 上下文窗口和 700000 压缩阈值附加到该路由。提供方标识符本身不能决定传输方式:使用 API 密钥身份验证的内置 openai 也可以使用 API。此技能及其预检要求使用下方指定的 openai_api_direct 提供方,以便推理使用专用 Keychain 助手,同时将连接器登录保持为独立流程。
这种拆分配置可能会让 700,000 令牌的压缩阈值对应到上下文较小的提供方或模型元数据限制。Codex 也可能会将请求的窗口缩小,因此仅凭根配置中的数值无法证明实际可用的上下文。以浏览器或 Computer Use 为主的线程可能会在压缩前超过提供方的真实限制,收到 context_length_exceeded,并因压缩请求本身不再适配而无法压缩。请同时核实新会话报告的有效窗口以及磁盘上的文件。
必要的预检会将这种不匹配视为致命问题。任何配置写入器、应用设置变更、模型变更或机群同步完成后,在预检通过之前,切勿启动或恢复 Codex。如果预检报告配置拆分不安全,请将 model_provider = "openai_api_direct" 恢复原状,重启所有 Codex 桌面/共享应用服务器,并启动或分叉一个新线程。恢复失败线程会保留其记录的提供方。
安全输入窗口
GPT-6 Astra 提供 1,050,000 令牌的总上下文窗口,最多可生成 128,000 个输出令牌。Codex 在常规 Responses API 轮次中不会设置更小的输出预算,因此模型目录必须描述安全输入额度,而非原始总量:
1,050,000 total - 128,000 maximum output = 922,000 safe input
两个直接提供方目录模型均使用相同的安全输入策略(GPT-6.1 Sol 也有 1,050,000 令牌的窗口和 128,000 令牌的输出限制):
gpt-6-astragpt-6.1-sol
配置上下文时,请保留操作员所选的受支持模型。以下示例使用 Astra;启用大上下文并不意味着可以替换其他已选模型。
Codex 会在 922,000 令牌的输入额度上应用其常规 95% 有效窗口预留,因此报告并保护约 875,900 个可用令牌。请将自动压缩设为总活动令牌数 700,000。这样可在 Codex 的有效限制内留出约 175,900 个令牌,并在达到提供方的安全输入上限前留出 222,000 个令牌,以供下一个提示词、工具架构和结果、指令、序列化开销及压缩本身使用。较大的余量是有意设置的:Codex 0.144.6 会在添加下一条用户消息和上下文更新前检查已记录的上下文,而超过阈值的最终响应可能要到下一轮才会触发压缩。观察到的大上下文工作负载曾在一轮中增长约 144,000 个令牌,因此此前的 820,000 阈值过于激进。
输入令牌超过 272,000 的长上下文请求会采用提供方更高的长上下文定价。对于无法从该路由获益的工作负载,切勿意外启用此路由。
必需文件
~/.codex/models-api-1m.json 必须为全部五个模型 slug 包含以下值,同时保留每个模型条目的其余内容:
{
"context_window": 922000,
"max_context_window": 922000,
"auto_compact_token_limit": 700000
}
将 effective_context_window_percent 留空,以使用 Codex 的默认值 95%;或者将其显式设置为整数 95。Null、浮点数或其他值均无效。
从已安装 Codex 版本的完整原生目录开始,其中包括审查模型:自定义目录会替换内置目录,而不是叠加选定条目。使用每个模型的真实元数据,并确保客户端满足其最低版本要求。保留指令、工具能力和所有安全字段,包括必需的审查行为;仅覆盖上述上下文和压缩字段。切勿编造 Astra 元数据,也不要将 Sol 条目重新标记为 Astra。上述 API 上下文约定支持直接提供商覆盖;它不会扩大 ChatGPT 权限,也不会放宽客户端安全要求。预检会验证上下文和凭据传递,而不验证目录其余元数据的来源。
目录描述每个模型的安全上限。会话默认使用 500,000 个 token 的窗口
(Peter,2026-10-12):上下文从 100k 增至 300k 时,单步延迟大约翻倍,因此除非确有需要,否则各工作通道会使用更小的窗口。~/.codex/config.toml 的根部分需要:
model = "gpt-6.1-sol"
model_provider = "openai_api_direct"
model_context_window = 500000
model_auto_compact_token_limit = 400000
model_auto_compact_token_limit_scope = "total"
model_catalog_json = "/Users/steipete/.codex/models-api-1m.json"
[model_providers.openai_api_direct]
name = "OpenAI API direct"
base_url = "https://api.openai.com/v1"
wire_api = "responses"
requires_openai_auth = false
supports_websockets = true
[model_providers.openai_api_direct.auth]
command = "/Users/steipete/.codex/bin/fetch-openai-inference-key.zsh"
timeout_ms = 5000
refresh_interval_ms = 300000
必须设置 supports_websockets = true:自定义提供商默认使用 HTTP,每一步都会重新上传完整提示词(2026-10-12 在约 22 Mbps 上行带宽、150k 上下文下测得:HTTP 每步耗时 26-59 秒,而 WebSocket 每步耗时 0.8-3.7 秒;WebSocket 的后续请求只会发送新增内容)。
在根级别替换 model_context_window = 1050000 或 922000 等旧值;不要留下重复的根级键。将范围保留为 total,因为安全预算适用于完整的活动请求,而不仅仅是压缩前缀之后添加的内容。
配置档案
Codex 0.162 的配置档案是文件:codex -p <name> 会在基础配置上叠加 ~/.codex/<name>.config.toml(名称只能包含字母、数字、_ 和 -)。每台主机都包含以下四个配置档案:
| 配置档案 | model | 上下文 |
|---|---|---|
astra | gpt-6-astra | 基础值 500k |
sol61 | gpt-6.1-sol | 基础值 500k |
astra-1m | gpt-6-astra | 窗口 922000,压缩 700000,范围 total |
sol61-1m | gpt-6.1-sol | 窗口 922000,压缩 700000,范围 total |
每个配置档案还会设置 model_provider = "openai_api_direct"。任何设置上下文键的配置档案都必须固定使用该提供商,并使用 500000/400000 或 922000/700000;预检会对每个 *.config.toml 执行此检查。仅在工作需要整个代码仓库的上下文时才使用 -1m 配置档案。
修改主机之前,请先将两个配置文件备份为带日期戳的同目录文件。不要替换无关的项目、插件、MCP、通知、审批、模型选择或推理设置。
API 凭据交付
auth 命令读取专用的 Keychain 交付副本,绝不读取 TOML 中的值或环境变量:
#!/bin/zsh
set -euo pipefail
exec /usr/bin/security find-generic-password \
-a Codex \
-s "Codex OpenAI inference API" \
-w /Users/steipete/Library/Keychains/login.keychain-db
在安装时解析并验证主机实际使用的 Keychain 路径;此处示例因主机而异。将该绝对路径(不含密钥)保存在外部可执行文件中,不要使用 $HOME/~、提供商覆盖项或非空的 auth.args。托管式 autoreview 会替换客户端的 HOME/USERPROFILE 以及 XDG config/data/state/cache 目录。此时,隐式选择 Keychain 可能返回退出码 44(找不到 SecKeychainSearchCopyNext 项),即使父会话中的交付成功。应修复包装程序的 Keychain 选择方式,而不是审阅者的 HOME、文件系统授权或凭据访问权限。修改现有辅助程序前先检查它;它可能已经采用了显式选择。
处理 API 密钥前,先使用 $one-password。规范值是 Molty 的 AI API Key - OpenAI - OPENAI_API_KEY - Serviceable Access 项中的 OPENAI_API_KEY 字段。通过共享的 op-work tmux 会话中的服务账户工作流读取该值,并且仅存储或更新 Keychain 副本。绝不打印、通过 SSH 复制、放入配置文件或写入临时文件。
Keychain 项应允许 /usr/bin/security 访问。读取 Keychain 通常不会弹出提示。重启后锁定的登录 Keychain,或通过非交互式 SSH 启动的命令,可能会因错误 36(不允许用户交互)而失败。不要使用明文文件或长期运行的密钥守护进程绕过此问题:应从主机的本地图形界面会话解锁主机,在那里安装该项,然后从该本地会话使用 Codex。
在已配置的机器上首次启动全新或恢复的 Codex 会话之前,先运行安全的预检。该检查会验证直接提供商配置、安全的输入和压缩值、全部五个目录条目、辅助程序是否可执行,以及辅助程序交付的值是否非空;不会打印凭据或辅助程序的 stderr:
ruby ~/.codex/skills/agent-scripts/codex-huge-context/scripts/preflight.rb
如果检查失败,不要将部署标记为完成,也不要启动 Codex。设置 requires_openai_auth = false 时,缺少 Keychain 交付副本不能回退到常规的 Codex 登录:直接提供商可能会在不带 bearer 标头的情况下访问 api.openai.com/v1/responses,并返回含义不明的 HTTP 401。预检会更早失败,并指出所需的引导操作。未设置 GITHUB_PAT_TOKEN 的警告与推理无关,也不会阻止推理;它说明 GitHub MCP 同时启动失败,但不得将其与 OpenAI API 身份验证问题混为一谈。
预检中的提供商检查并非表面检查。即使所有数值都正确,若机器上存在直接提供商表和百万令牌目录,但根级 model_provider = "openai",配置仍然有问题。
托管式 autoreview 交付
使用此命名路由进行隔离审阅前,还应在私有 HOME 目录下检查外部辅助程序:
ruby ~/.codex/skills/agent-scripts/codex-huge-context/scripts/preflight.rb --private-home
此可选诊断会先验证父上下文,然后在全新的 HOME/USERPROFILE 和 XDG config/data/state/cache 目录下调用同一个受信任的辅助程序。它会在内存中捕获并丢弃辅助程序输出;绝不会将凭据复制到文件或环境变量中。其他环境和工作目录设置仍会继承。此操作并非完整的审阅者隔离环境、沙箱测试或推理能力证明。
最后,在预期的冻结 Git 目标上实际运行 $autoreview,使用 --codex-config 'model_provider="openai_api_direct"',并保持预期模型不变。保留源代码扫描、身份验证投影、沙箱隔离以及对所有工具的凭据拒绝策略。只有客户端侧的身份验证命令可以读取现有的 Keychain 交付项;绝不要通过要求审阅者工具检索真实凭据来进行测试。如果显式选择仍然失败,应报告精确且不含密钥的状态并停止——不得回退到其他提供商、传递真实 HOME、通过密钥文件或环境变量交接、使用凭据代理,或添加沙箱例外。
ChatGPT 连接器登录
requires_openai_auth = false 仅适用于自定义推理提供商。要使 ChatGPT 连接的插件正常工作,根目录的 Codex 登录必须保持通过 ChatGPT 进行身份验证:
codex login status
如果显示通过 API 密钥登录,而主机需要 Gmail、Calendar 或类似连接器,请在本地用户会话中先运行 codex logout,再运行 codex login。不要在 Mac 之间复制 auth.json 或 OAuth 令牌。
新建、恢复和共享服务端会话
-m gpt-6-astra 用于选择模型,而不是提供商。新会话会读取根目录的 model_provider;随后,会话元数据会记录所选提供商。恢复会话时,会保留记录的提供商。
Codex TUI 会话可以复用 ~/.codex/app-server-control/app-server-control.sock。共享的 app server 会保留启动时加载的配置,因此,修改磁盘上的文件不会更新连接到旧服务端的会话。更改上下文或身份验证配置后:
- 等待活动轮次结束;
- 重启 Codex 桌面应用和所有共享的 CLI app server;
- 启动新会话以进行最终验证;
- 仅当有意保留旧会话中记录的模型/提供商时,才恢复旧会话。
类似 codex -c 'model_provider="openai_api_direct"' 的同值 CLI 覆盖会强制使用每次调用时内嵌的 app server,便于诊断,且不会更改提供商或服务层级,但这不是全机群部署的永久修复方案。
全机群部署
首先使用 $fleet-maintenance 和 $remote-mac。读取 ~/Projects/manager/computers.yaml,使用实时 Tailscale 状态,按硬件 UUID 去重,并排除已移交的主机。修改前先审计所有可访问的主机;每次只修改一台主机。
Peter 当前个人 Mac 的范围包括 MacBook Pro、伦敦和旧金山的两台 Mac Studio、单独持有的旧金山 Mac Mini(mac-mini-sf / steipete-mini-sf)、ClawMac、FoundationClaw、MegaClaw 和 MiniClaw。已验证 FoundationClaw 的提供商账户和 Mac14,12 硬件身份,但其先前正常工作的凭据需要在继续 Tailscale 注册、规范检出和剩余工作节点初始化之前重置;旧金山 Mac Mini 的可信 SSH/账户路径尚待确认;MiniClaw 的规范 Tailscale 身份为 miniclaw。更改任何远程文件前,请验证每台主机的身份以及 agent-scripts 检出状态。每台主机都要记录以下结果:
- 配置和目录备份;
- 根配置中的安全输入、压缩阈值和范围;
- 全部五个目录条目及其上下文值;
- 预期本地用户会话中的预检结果;
codex login status,不得显示任何凭据;- 直接 API 探测结果;
- 共享 app server 的版本,以及是否仍待重启。
agent-scripts 技能检出通常通过 ~/.codex/skills/agent-scripts 提供。推送此技能后,仅对符合条件的 ~/Projects/agent-scripts 检出执行快进。绝不要重置、暂存或覆盖活动检出或有未提交更改的检出,也不要仅为重新加载配置而中断活动的 Codex 轮次;应将此类事项报告为待处理。
验证
在预期的本地用户会话中运行以下命令:
ruby ~/.codex/skills/agent-scripts/codex-huge-context/scripts/preflight.rb
codex login status
jq -r '.models[] | select(.slug == "gpt-6-astra" or .slug == "gpt-6.1-sol") | [.slug, .context_window, .max_context_window, .auto_compact_token_limit] | @tsv' ~/.codex/models-api-1m.json
codex exec --skip-git-repo-check 'Reply with exactly: direct-api-safe-context-ok' </dev/null
然后探测每个配置(codex exec --skip-git-repo-check -p <name> ...),并从新部署的 task_started 事件中读取
model_context_window:基础配置、astra 和 sol61 为 475000;astra-1m 和 sol61-1m 为 875900。
预期结果为:预检成功;每个目录模型的值依次为 922000、922000 和 700000;支持连接器的主机已通过 ChatGPT 登录;并且探测响应完全一致。直接 API 探测成功并不能证明连接器 OAuth 正常;请另行确认 codex login status。
进行最终 TUI 验证时,应将提示词文本和 Enter 分成两个独立的终端操作。不要把回显的输入当作模型的响应。
故障处理策略
- 预检报告存在不安全的拆分配置:恢复此技能的
openai_api_direct提供方契约;不要降低直连路由阈值,也不要让 922K/700K 覆盖项继续附加在 Peter 的 ChatGPT 支持的openai路由上。重启所有应用服务器,并使用新线程或分叉线程,因为现有会话元数据会保留旧提供方。 - API 响应仍然限制或拒绝请求:记录服务器响应;不要声称客户端目录覆盖项更改了服务器授权。
- 活跃令牌数低于 700,000 时发生上下文溢出:保留会话文件,并在进一步降低阈值之前检查最近的令牌计数事件。
- 未进行压缩且活跃令牌数超过 700,000 时发生上下文溢出:确认正在运行的应用服务器版本和已加载配置;旧服务器可能仍保留先前的阈值。
- HTTP 401
Missing bearer or basic authentication in header:重新运行预检并修复 Keychain 凭据传递;不要切换提供方或使用常规 Codex 身份验证。 - 远程出现 Keychain 错误 36:保留已暂存的安全配置,并要求用户在本地通过图形界面解锁。绝不要降低密钥存储的安全性。
- 已使用根 API 密钥登录,但需要连接器:请本地用户完成 ChatGPT 登录;推理仍可使用直连提供方。
- 现有
openai_api_direct提供方与此契约不同:更改前先检查;不要追加重复的 TOML 表格。