以为命令行更省?两个 CLI 的 16 个开关,账单差 8 倍
第五篇写完了 Cursor 里 8 个开关之后,就一直有人问:那 Claude Code 和 OpenAI Codex 这两个命令行工具呢?它们没有图形界面、黑框里跑命令,很多人以为“CLI 天生就省”,但实际用起来账单比 GUI 更吓人——因为一启动就是全量上下文、一跑 Agent 就是多轮循环、一切发生在终端里你连“它读了什么”都不容易看见。
这一篇把两个 CLI 放一起讲,各给 8 个可直接落地的开关,全部按官方命令与公开实测整理。读完你会明白:为什么同一个模型、同一个任务,Claude Code 默认配置会比 Cursor 贵 13 倍(第十三篇结论),以及 Codex CLI 切换成 Token 计费之后(2026-04)哪些新坑在等着你。
系列导航:这是 Token 系列第 6 篇,是第二篇**开关 11「Claude Code 的三个命令」**的完整展开,并与第 5 篇《在 Cursor 里省 Token:8 个开关》构成姊妹篇。前面讲过的通用原则(Diff 改码、输出减脂、Session 生命周期等)本篇不再重复,只讲两个 CLI特有的机制。
一、先算清:CLI 为什么比 GUI 更容易烧钱
CLI 类 Agent(Claude Code / Codex CLI)有三个和 GUI 不同的特点,这也是它们烧 Token 的根因:
- 默认激进自主性:一给任务就自动读文件、跑命令、反复试错,每一步都是完整 LLM 调用;
- 系统提示 + 工具定义特别重:Claude Code 每次启动就带上 bash、文件读写、Agent 委派等十多个工具 schema,光“底费”就比 Cursor 厚;
- 上下文膨胀你看不见:GUI 有侧边栏能看到加载了哪些文件,CLI 默认只滚动日志,上下文什么时候到 80% 很多人都不知道。
典型 3 文件改码场景(含 2 个 MCP 工具调用)实测基准(Claude Sonnet 4,基于 CSDN/知乎多篇实测综合):
| 工具 | 默认配置单任务 Token | 8 个开关全开 | 节省比例 |
|---|---|---|---|
| Claude Code | ~18,000 tok | ~2,400 tok | -87% |
| Codex CLI | ~22,000 tok | ~2,700 tok | -88% |
下面是两者开关全开前后的对比:
省下来的不是什么“玄学优化”,都是把官方已经提供但很多人没开的开关用对。
二、Claude Code 的 8 个开关
Claude Code 有四大定制机制:CLAUDE.md / Rules / Skills / Subagents(2026-06 Anthropic 官方博客已明确划分),再加 Hooks、命令时机、模型分工、思考预算——一共 8 个开关。
开关 1:分层写 CLAUDE.md,不要塞 300 行
CLAUDE.md 是每次会话启动就全量加载的持久指令。很多人把它当项目百科全书,写了 300 行构建命令、架构历史、贡献指南——结果每一轮无论做什么都要先付这 4000+ token 的固定税。
正确写法:三级分层
| 层级 | 位置 | 加载时机 | 建议长度 | 写什么 |
|---|---|---|---|---|
| 项目根 CLAUDE.md | ./CLAUDE.md | 每次启动常驻 | ≤ 50 行 | 构建/测试命令、核心约定、关键架构决策 |
| 子目录 CLAUDE.md | src/api/CLAUDE.md | 读该目录文件时才加载 | 20~50 行 | 该模块专属约定 |
| 本地覆盖 | ./CLAUDE.local.md | 每次启动(加进 .gitignore) | 任意 | 你个人偏好,不进团队仓库 |
另外官方建议 CLAUDE.md控制在 200 行以内,超过这个长度 Claude 对指令的遵守度反而下降(知乎 .claude 完整指南,2026-05)。下面是三种写法的固定 Token 开销对比:
精简根 CLAUDE.md 模板(可直接抄):
# Project: my-service ## Build / Test - dev: `npm run dev` build: `npm run build` test: `npm test` - lint: `npm run lint` (run before commit) ## Conventions - TypeScript strict mode, no `any` without comment - Errors: use `logger.error` never `console.log` - API handlers validate input with Zod - Tests: Vitest + AAA pattern ## Structure - src/api/ - HTTP handlers (see src/api/CLAUDE.md) - src/services/ - Business logic - src/db/ - Database layer ## Gotchas - `.env.local` required; copy from `.env.example` - Migration files in src/db/migrations/ are immutable once merged这 15~20 行,比 300 行的百科全书版每轮省3,500+ token。
开关 2:把长规则拆进.claude/rules/,用 path-scoped
随着团队成长,CLAUDE.md 必然拥挤。解决方法不是继续往上加,而是把规则拆成文件放到.claude/rules/,并在 frontmatter 里加paths字段——只有 Claude 在处理匹配的文件时才加载这条规则。
--- description: API handler conventions paths: ["src/api/**", "src/handlers/**"] --- - All handlers must validate input with Zod schema - Return 400 for validation errors, 500 for unexpected - Never throw raw errors to client“所有 API handler 必须用 Zod”这种规则,写在 CLAUDE.md 里每次对话都要付;写成 path-scoped rule,只有当你让它改 API 文件时才加载,平时完全免费。
开关 3:把多步流程封装成 Skill,而不是写进 CLAUDE.md
部署流程、代码审查清单、发版前检查——这种“多步可复用流程”不要常驻进 CLAUDE.md,做成 Skill:
- 位置:
.claude/skills/<name>/SKILL.md - 加载机制:名字+描述在启动时出现(~100 tok/skill),正文只有被调用时才加载
- 压缩后行为:已调用的 Skill 在预算内保留,最旧的优先淘汰
官方博客明确把 Skills 定位为“按需加载的可复用流程”。把“部署”做成 Skill 而不是塞进 CLAUDE.md,每轮直接省 1500+ tok(详见第十篇《把重复的 MCP 用法封装成 Skill》)。
开关 4:探索类任务交给 Subagent,不污染主上下文
“先帮我扫一遍整个 src/utils 找所有用了旧 API 的地方”——这种探索型任务如果让主 Claude 去做,读 50 个文件回来的内容全部灌进主对话,后面每轮都要背着跑。
正确做法是派一个 Subagent:
- 位置:
.claude/agents/<name>.md(可限定工具、模型) - 加载:名字+工具列表启动时出现,正文调用时加载
- 关键:Subagent 在独立上下文里运行,只把最终摘要返回主会话
--- name: code-explorer description: Explore codebase to answer structural questions tools: Read, Glob, Grep model: sonnet --- You are a code exploration specialist. Only return a concise summary of what you found, with file paths. Do NOT paste full file contents.“会污染主上下文的探索”交给 Subagent,主会话只收到一份约 200 tok 的摘要,而不是 50 个文件的全文。这是 Claude Code 里被低估最多的一个开关。
开关 5:把 /context、/compact、/clear、/btw 用对时机
这四个斜杠命令几乎所有人都知道,但时机用错了等于没用。
| 命令 | 做什么 | 正确时机 | 错误用法 |
|---|---|---|---|
/context | 彩色网格展示上下文占用 | 随时看,接近 80% 时动手 | 从不看,等自动压缩 |
/compact [说明] | 把历史压成摘要,保留关键信息 | /context显示>80%时主动压,可加“重点保留 XX” | 等到 95% 自动压缩(会丢失关键细节) |
/clear | 清空历史,开新对话 | 切换任务时(做完这个 Bug 改下一个功能) | 上下文长了就清(同任务里应该/compact) |
/btw | “顺便问一句”,开临时侧边对话,不污染主对话 | 临时问题、工具版本查询、不相关追问 | 把所有问题都塞主对话 |
下图演示了三种策略在 25 轮对话里的上下文累积曲线——失控 vs 主动 compact vs 及时 clear,第 20 轮差 10 倍以上:
可直接照抄的节奏:
- 开始新任务 →
/clear(或开新终端会话) - 每做完一个阶段(修完一个 Bug、写完一个功能)→
/compact 重点保留 XX 的设计决策 - 临时想起来问个不相关的事(比如“axios 最新版是多少”)→
/btw ...,问完关掉 /context超过 80% 时再压一次,不要等自动触发
开关 6:用 /plan 先讨论再动手,避免方向错重跑
跨多个文件的大改,直接让它动手是最贵的——跑了 10 轮发现方向错了,前面所有上下文全部作废。
正确节奏:输入/plan(或直接说“先讨论方案不要改代码”),让 Claude 列出:受影响文件、改动顺序、潜在风险;你确认方案后再让它执行。
/plan 我想给所有 API handler 加请求限流,请先列出方案和受影响文件,不要直接改代码。讨论阶段几千 token 的花费,避免了执行阶段几万 token 的返工。
开关 7:权限模式按阶段切换:plan → default → auto-accept
Claude Code 有三种权限模式(Shift+Tab循环切换):
- Plan 模式:只读规划,不执行任何修改
- Default(普通):每步危险操作要你确认
- Auto-accept(yolo):自动同意所有操作
很多人要么全程 Default(每个 rm/mv 都要手动确认浪费注意力),要么全程 Auto-accept(yolo)(跑飞了才发现)。正确做法是按阶段切换:
- 规划阶段 → Plan 模式
- 改码阶段 → Default 模式
- 跑测试/lint 等信任命令 → Auto-accept 模式(让它自己跑测试、修错、再跑,循环几十轮不需要你在场)
阶段切换本身不省 Token,但避免了“默认拒绝 → 重试 → 再失败”的多轮浪费,也避免了“Auto-accept(yolo)模式乱删文件后用 /rewind 回滚”的大开销。
开关 8:关闭“扩展思考”给简单任务、用 Hooks 拦截浪费
- 扩展思考(Extended Thinking):
Shift+T切换。简单任务关掉。Opus/Sonnet 的扩展思考预算是 1024~N tok,开着做格式化、批量重命名完全是白烧。复杂推理、诡异 Bug 再开。 - Hooks 拦截:在
settings.json的 hooks 里加 PreToolUse 钩子,拦截不该自动跑的命令(比如不要让它每次都跑npm install、不要让它读超过 500 行的日志):
{"hooks":{"PreToolUse":[{"matcher":"Bash","command":"if echo \"$CLAUDE_TOOL_INPUT\" | grep -q 'npm install'; then echo 'Block auto npm install'; exit 2; fi; exit 0"}]}}Hooks 是硬约束(命令强制执行),比“在 CLAUDE.md 里写不要 npm install”可靠得多。
三、Codex CLI 的 8 个开关
OpenAI 的 Codex CLI 在 2026 年 4 月彻底切换到按 Token 计费(输入/缓存读/输出三档分离),并新增了/side、/goal、/review等命令。它的省 Token 逻辑和 Claude Code 有相通之处,但命令体系不同。
开关 1:先 /status 心里有数,再动手
省 Token 第一步是知道花在哪。Codex 输入/status会弹出一个状态面板:会话 ID、上下文用量、7 天限额剩余。
养成习惯:跑长任务之前和之后各看一次/status,上下文用量涨得快,多半是对话被塞太满(闲聊追问、重复粘贴资料、解释性内容堆在主线里)。
开关 2:临时问题用 /side,别往主线塞
这是 Codex 版的/btw——Codex 正在干活时你想问一句“为什么跑这个脚本”,直接发主对话等于给正在执行的任务上下文倒垃圾,后面每轮都背着它。
输入/side发起一个独立侧边聊天:主任务继续跑,你在侧边随便问,问完关掉主线干干净净。侧边回答里看到有价值的结论,选中点“添加到 Codex”,只搬一句话结论、不搬整屏解释。
Codex 五个命令的额外 Token 开销如下:
直接在主线追问 → 每轮多 3200 tok 的额外上下文;用 /side → 额外 0(独立运行),差4 倍。
开关 3:大改之前用 /plan,先讨论不写文件
和 Claude Code 的 /plan 同理,Codex 的/plan让它先给出对比方案(按主题/按时间怎么组织、风险、注意点),你选定方案后它才输出“实施计划”卡片,再回复“是的,实施此计划”才开跑。
关键提示词(直接抄):
请比较两种方案并给出具体步骤。先讨论,不写文件。讨论在动手前完成,比跑错了重跑便宜得多。
开关 4:多阶段任务用 /goal,一次说清持续推进
如果每完成一步就停下来等你说“继续”“下一步”,来回的往返指令都是在花 Token。/goal让你一次把目标 + 验收标准写全:
/goal 完成两份访谈整理:先核对原文,分别按具体问题整理,再建立跨访谈主题索引; 逐条核对引语来源和时间码。持续推进至文件完成并核对,不需我追加继续指令。Codex 会围绕这个目标自己推进。真实案例中 6 分 24 秒完成 4 份文件,全程不需要“继续”指令,少了 20+ 轮往返(CSDN 松马科实测,2026-10)。
开关 5:改完用 /review,独立只读审查
代码改完不要在主对话里贴 diff 反复问“这么改对吗”——输入/review,让 Codex 做一次独立、聚焦、只读的审查,输出带优先级的问题清单。
/review覆盖 staged/unstaged/untracked 三类改动,会精确给出文件行号、影响面,比在开发对话里追问省 70%+ 来回。
开关 6:模型分工:杂活交给小模型
Codex CLI 支持启动时指定模型档位,或会话中切换。像格式化代码、生成常规单元测试、写简单正则、批量重命名这种体力活,用便宜模型跑完全没问题,单价能差好几倍。
但注意:如果任务本身要读大量文件、处理复杂依赖,直接用强模型反而更省——切换本身也会丢缓存、触发额外处理。
经验值:
- 体力活(格式化/重命名/简单测试)→ 小模型
- 跨模块重构/Bug 排查 → 强模型
开关 7:关 IDE 实时补全的隐形扣费
如果你用 VS Code/JetBrains 的 Codex 插件,实时代码联想是隐性消耗重灾区:每输入字符都会触发请求,日积月累消耗惊人。
- 打开插件设置,关闭“自动补全”“实时监听”“悬浮提示”
- 改为手动快捷键触发补全
- 离开工位时禁用插件或关闭编辑器进程
这一条看起来和 CLI 无关——但 CLI 用户往往同时开着 IDE 插件,多端共享同一套额度(网页端/IDE/CLI/移动端),一边省另一边漏是常见漏洞。
开关 8:善用缓存,固定任务不要频繁新开会话
Codex 的缓存输入 Token 价格极低(和 Claude 类似,约为输入价的 10%)。同一个项目、同一类任务,不要频繁新开会话——固定 1~2 个会话窗口持续交互,项目基础代码与规则会被自动缓存,二次调用只收低价缓存 Token。
但这里有个坑:会话中途贴入无关闲聊、贴大块新资料、切换模型都会破坏前缀缓存(第十一篇《谁在偷偷让你的提示缓存失效?》讲过完整清单)。想吃到缓存红利,就要保持前缀稳定。
另外需要提醒:Codex CLI 2026 年 4 月切换计费后,报错/重试也计费——指令模糊导致反复生成、接口报错重发都会消耗 Token,这一点和 ChatGPT 网页版“失败不扣费”不同。
四、60 秒落地清单
两个 CLI 各 8 个开关,落地顺序不是从 1 到 16,而是按 ROI:
今天就能做(5 分钟):
- 打开你的
./CLAUDE.md,数一下行数——超过 200 行就按开关 1 拆成三级(根/子目录/local) - 在 Codex 里跑一次
/status、在 Claude Code 里跑一次/context,先建立基线 - 检查 IDE 插件,关掉 Codex/Claude 的实时自动补全
本周内做(1 小时):
4. 把“部署/审查/发版”这类多步流程从 CLAUDE.md 搬到.claude/skills/
5. 建一个.claude/agents/code-explorer.md处理探索任务
6. 加一条 PreToolUse Hook,拦截npm install/pip install等重命令的自动执行
长期养成习惯:
7. 新任务/clear、超过 80%/compact、临时问题/btw或/side
8. 大改前/plan,多阶段任务用/goal,改完用/review
五、一句话收尾
CLI 比 GUI 省还是费,不取决于工具本身,取决于你知不知道这几个开关。默认配置下单任务约 2 万 Token,8 个开关全开后约 2500——同样的模型、同样的活,账单差 8 倍。Claude Code 的四大机制(CLAUDE.md/Rules/Skills/Subagents)、Codex 的五个命令(/status/side/plan/goal/review),都是官方已经为你准备好的省钱能力,差的只是你把它们用对。
下一篇预告
客户端开关讲完之后,第一幕也走到了收束点。下一篇是一份工具,而不是一篇文章:我们会把前 6 篇里的所有速查结论压成四张速查卡、一张诊断决策树,再附上一个可直接运行的 Python 成本计算器——内置 13 个主流模型定价、5 个场景预设,输入 Token 构成就能算出每次任务成本,还能反推“哪个开关对你这个场景最划算”。
下一篇:《省 Token 速查手册 + 成本计算器》——看完这一篇就可以把前面的内容忘得差不多,因为你真正会用到的,都在这里。