200 万 token 还是不够用?Codex 上下文浪费的根源和解法
发布日期2026-06-25 | 话题AI 编程工具 | 适用人群开发者、大型项目负责人、Codex 用户Codex 底层使用 gpt-5.5 模型官方上下文窗口为200 万 token单次对话理论上可装入约 150 万汉字或 5 万行代码——上下文太短的问题在大多数场景下并非窗口绝对不够而是窗口被低效使用了Codex 每次启动会扫描当前目录的全部文件遇到没有 AGENTS.md 的大型项目时光读文件就能消耗几十万 token真正留给推理和代码生成的空间大幅压缩。根治方案有五类AGENTS.md 精准引导告诉 Codex 只读什么、不读什么、任务拆分一次只做边界清晰的一件事、Subagent Worktree 并行多线程独立上下文互不污染、模型切换轻量任务用 gpt-5.4-mini省上下文消耗给复杂任务、.codexignore文件排除从根源减少扫描量。OpenAI 内部团队用88 个 AGENTS.md 文件、7 人 5 个月完成 100 万行代码、合并 1500 个 PR核心在于把上下文管理变成一种工程纪律而不是依赖更大的窗口。先诊断你的上下文是真不够还是被浪费了在着手优化前区分两种不同的根因症状根因对应方案Codex 频繁说已超过上下文限制窗口绝对不足任务拆分 Subagent 并行回答质量下降、忘记前面说的内容上下文被低效填满读了太多无关文件AGENTS.md .codexignore每次都要重新说项目背景没有持久化项目知识AGENTS.md 全局配置大型重构中途失去一致性单线程上下文不足以覆盖全局Subagent Worktree 架构简单任务也消耗大量额度用旗舰模型做简单任务模型分层mini 处理简单任务快速自查命令——看当前会话的 token 消耗情况codex /status# 查看当前窗口剩余额度和 token 使用量方法一AGENTS.md——最高性价比的上下文管理工具AGENTS.md 是 Codex 的项目级指令文件放在项目根目录每次 Codex 启动时优先读取。它的核心价值是用几百 token 的精准说明替代 Codex 自行探索项目结构消耗的几万 token。基础结构# AGENTS.md ## 项目概述 这是一个 Next.js 14 Prisma PostgreSQL 的 SaaS 管理后台。 主要业务模块用户管理、权限控制、数据报表、消息通知。 ## 目录结构只需了解这些 - src/app/ → Next.js App Router 路由和页面 - src/components/ → 可复用 React 组件 - src/lib/ → 工具函数和 API 封装 - prisma/ → 数据库 Schema 和迁移文件 - tests/ → Vitest 测试文件 ## 不要读取的目录 - node_modules/、.next/、dist/、coverage/构建产物 - prisma/migrations/已有迁移不要修改 ## 技术约定 - 样式Tailwind CSS不引入其他 CSS 框架 - 状态管理Zustand不使用 Redux - 测试Vitest测试文件放 tests/ 目录命名 *.test.ts ## 每次任务前 1. 先读本文件确认范围 2. 只修改任务明确指定的文件 3. 完成后运行 npm test 验证多层级 AGENTS.mdCodex 支持全局、项目根目录、子目录三级 AGENTS.md越靠近文件的指令优先级越高~/.codex/AGENTS.md → 全局规则所有项目通用 项目根目录/AGENTS.md → 项目规则覆盖全局 src/components/AGENTS.md → 子模块规则覆盖项目级子目录 AGENTS.md 的典型用法——限定 Codex 在特定模块内的行为# src/components/AGENTS.md ## 组件模块说明 这里只放展示型 React 组件不包含业务逻辑。 修改组件时不要引入新依赖不要修改 API 调用逻辑。 样式只用 Tailwind不写 CSS-in-JS。OpenAI 内部的 AGENTS.md 实践腾讯云开发者社区报道2026-06-19OpenAI 内部一个 7 人团队5 个月用 Codex 写了 100 万行代码合并了 1500 个 PR人工 review 比例接近零。他们的核心差异不是模型是写了88 个 AGENTS.md 文件——每个模块一份精确控制 Codex 在每个上下文中能看到和能做的事。方法二.codexignore——从源头减少扫描量类似.gitignore在项目根目录创建.codexignore文件列出不需要 Codex 读取的目录和文件# .codexignore # 构建产物通常最大 node_modules/ .next/ dist/ build/ coverage/ *.min.js *.min.css # 自动生成文件 prisma/migrations/ *.lock package-lock.json yarn.lock pnpm-lock.yaml # 资源文件Codex 不需要读图片和字体 public/images/ public/fonts/ assets/ # 测试快照频繁变化上下文噪音 **/__snapshots__/实际效果一个中型 Next.js 项目排除node_modules和.next后Codex 需要扫描的文件从 5 万 降到几百个上下文消耗减少 90% 。方法三任务拆分——一次只做一件事上下文不够的最常见原因不是项目太大而是一次给了太多任务。问题写法帮我把整个项目的 axios 调用统一封装成 fetchClient 顺便把所有组件的 TypeScript 类型补全 再把单测覆盖率提升到 80%→ Codex 需要读取整个项目三类任务互相干扰上下文很快爆满。正确写法——按边界拆分为三个独立任务分别新开对话任务 1新对话 只修改 src/lib/api/ 目录下的文件把所有 axios 直接调用 封装成 fetchClient不修改调用方组件文件。 任务 2新对话 只处理 src/components/UserTable.tsx 这一个文件 补全所有 TypeScript 类型不修改其他文件。 任务 3新对话 为 src/lib/auth.ts 补充单测测试文件放 tests/lib/auth.test.ts 只覆盖 login、logout、refreshToken 三个函数。任务拆分原则每个任务明确指定文件范围最好具体到目录或文件名每个任务有清晰的完成标准改什么、不改什么任务之间无依赖任务 A 的输出不是任务 B 的输入方法四Subagent Worktree 并行——多线程独立上下文当项目确实需要同时推进多个模块时Codex 桌面版支持Subagent Worktree架构每个子任务运行在独立的 Git Worktree 分支上拥有完全独立的上下文窗口互不污染。主 Codex 实例Orchestrator │ ├── Subagent 1 → Worktree branch: feature/auth-refactor │ └── 上下文只加载 src/lib/auth/ 相关文件 │ ├── Subagent 2 → Worktree branch: feature/api-types │ └── 上下文只加载 src/types/ 相关文件 │ └── Subagent 3 → Worktree branch: feature/unit-tests └── 上下文只加载 tests/ 相关文件关键优势每个 Subagent 的上下文互相隔离不会因为一个任务的文件读取污染其他任务各分支并行推进不用等待串行完成主实例随时可以查看各 Subagent 的进度汇总后合并Worktree 模式适合的场景前后端同时重构文件不重叠多个功能模块并行开发大型重构 同步补测试方法五模型分层——轻量任务用 mini 保留旗舰额度gpt-5.5 和 gpt-5.4-mini 面对同样的项目时加载上下文的 token 消耗是相同的但mini 的额度是 gpt-5.5 的 4-8 倍同一套餐下。用旗舰模型做修改注释或格式化这类简单任务是典型的资源浪费。# ~/.codex/mini.config.toml轻量任务专用 model gpt-5.4-mini model_reasoning_effort low approval_policy on-request# 日常简单任务注释、格式化、写单测codex--profilemini为 src/utils/format.ts 的所有函数补上 JSDoc 注释# 复杂任务架构重构、多文件理解codex重构 src/lib/auth/ 目录把 JWT 验证逻辑提取成独立模块任务与模型对应关系任务类型推荐模型理由补注释、格式化、修 lintgpt-5.4-mini不需要深度推理写单测已有实现gpt-5.4-mini模式固定mini 够用单文件重构 500 行gpt-5.4中等理解力多文件重构、架构分析gpt-5.5需要全局理解理解陌生大型项目gpt-5.5需要强推理能力进阶/goal 拆解长期任务Codex CLI 的/goal命令支持输入高层目标由 Codex 自动拆解成多个子任务并逐步执行——每个子任务在独立上下文中运行总任务不受单次上下文限制codex/goal 把 src/api/ 目录下所有的直接 fetch 调用统一封装成 apiClient 完成后运行npmtest确认所有测试通过 每个文件改完后提交一个独立的gitcommit# Codex 会自动拆解为# 1. 扫描 src/api/ 找出所有 fetch 调用# 2. 创建 apiClient 封装层# 3. 逐文件替换每文件一个 commit# 4. 运行 npm test 验证/goal适合的场景明确的最终状态“所有文件都完成 X”任务可以被分解为重复的子步骤允许 Codex 自主规划执行路径最佳实践组合针对不同项目规模推荐的组合策略小型项目 1 万行代码基础 AGENTS.md项目根目录一份任务拆分按功能模块分对话模型gpt-5.4 日常 gpt-5.5 复杂重构中型项目1-10 万行代码AGENTS.md根目录 2-3 个主要模块子目录.codexignore排除构建产物和依赖任务拆分 每个大功能新开对话Worktree 并行处理前后端大型项目 10 万行代码AGENTS.md 分模块参考 OpenAI 内部的 88 文件实践.codexignore 精细化Subagent Worktree 架构主实例只做协调子实例做具体工作/goal 拆解跨模块任务模型路由模块复杂度决定用哪层模型常见问题 FAQQ1gpt-5.5 的 200 万 token 上下文窗口够用吗200 万 token 约等于 150 万汉字或 4-5 万行代码对绝大多数单次任务来说绰绰有余。真正的问题是 Codex 在没有引导的情况下会贪婪读取——遇到大型项目会扫描全部文件轻松把窗口填满。AGENTS.md 和 .codexignore 的作用不是扩大窗口而是把有限的窗口用在刀刃上。Q2AGENTS.md 写太长会不会反而浪费上下文会。AGENTS.md 本身也会占用 token建议控制在 200-500 字以内重点写目录结构只列关键目录、不要读的文件、技术约定、每次任务的前置步骤。不需要写完整的项目介绍或所有文件的作用。Q3Subagent 和直接开多个 Codex 窗口有什么区别手动多窗口是完全独立的进程没有协调机制也没有文件冲突保护。Subagent Worktree 是有托管的并行主实例知道每个子实例在做什么每个子实例工作在独立的 Git 分支上不会互相改同一个文件完成后可以有序合并。手动多窗口适合任务完全独立的场景Subagent 适合有内在关联、需要最终合并的并行工作。Q4.codexignore 和 .gitignore 可以复用同一份吗大部分可以复用但有区别.gitignore 排除的是不追踪到 git 的文件.codexignore 排除的是不需要 Codex 读取的文件。两者内容高度重叠node_modules、dist、.next 等但 .codexignore 通常还需要额外排除一些 git 追踪但 Codex 不需要读的文件比如 pnpm-lock.yaml、生成的 API 类型文件。建议以 .gitignore 为基础根据项目情况额外添加几行。Q5/goal 和普通任务提示词有什么实质区别普通提示词是告诉 Codex 做什么Codex 用单次上下文完成任务。/goal是告诉 Codex 要达到什么目标Codex 自主规划步骤每步在独立的上下文中执行步骤之间传递的只是结构化的中间结果而非完整对话历史。本质上是把长上下文任务拆成多个短上下文任务的自动化手段适合有明确终止条件的重复性工作。小结Codex 上下文管理的核心原则是不要依赖更大的窗口而是告诉 Codex 用最小的上下文完成最精准的任务。五种方法的优先级排序AGENTS.md每个项目必备10 分钟配置→ .codexignore中大型项目必备→ 任务拆分最直接的提升→ 模型分层节省额度→ Subagent Worktree大型项目并行架构。OpenAI 内部团队 88 个 AGENTS.md 的实践说明上下文管理是一种工程能力不是临时应对措施。本文数据来源腾讯云开发者社区《Prompt Engineering 已死》2026-06-19、知乎《AGENTS.md 全流程落地实操》2026-06-18、OpenAI Codex 官方文档developers.openai.com/codex。参考来源OpenAI Codex 官方文档developers.openai.com/codexFenno 官网AI 编程