mcpField
C
codex-huge-context

codex-huge-context

github.com/steipeteAgent 工作流7.4k81 次安装1 周前更新
代码仓库

关于 codex-huge-context

用于配置和审计 Codex 大上下文设置的技能,通过 OpenAI API 直接进行推理。它将 API 密钥推理与连接器所用的 ChatGPT 登录分开,并要求启动 Codex 前完成验证。

主要功能

  1. 01配置 API 直接推理
  2. 02上下文与压缩安全限制
  3. 03验证模型目录
  4. 04通过 Keychain 提供凭据
  5. 05安全预检且不泄露密钥

适用场景

  1. 01配置 Codex 大上下文配置
  2. 02审计提供方与上下文设置
  3. 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-astra
  • gpt-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上下文
astragpt-6-astra基础值 500k
sol61gpt-6.1-sol基础值 500k
astra-1mgpt-6-astra窗口 922000,压缩 700000,范围 total
sol61-1mgpt-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 会保留启动时加载的配置,因此,修改磁盘上的文件不会更新连接到旧服务端的会话。更改上下文或身份验证配置后:

  1. 等待活动轮次结束;
  2. 重启 Codex 桌面应用和所有共享的 CLI app server;
  3. 启动新会话以进行最终验证;
  4. 仅当有意保留旧会话中记录的模型/提供商时,才恢复旧会话。

类似 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 表格。

评论

支持 Markdown