AI Agent 浪费 token 怎么省:六条可执行的省钱规矩
改一个按钮颜色烧掉十几刀 API 并不罕见。本文归纳手术式上下文、栈声明、禁全量重写、先静态后逻辑、固定设计词典,以及强制读 package.json 的预检协议。

有人用 Agent 改一个 Tailwind 颜色类,最后账单超过十美元:上下文塞整页、模型猜栈、整文件重写、再为幻觉配置返工。Joshua Pchumba 把教训收成六条——核心不是「换更便宜模型」,而是别把 Agent 当读心术同事。
1. 上下文做手术,别做尸检
只附相关文件,点名行号。把 500 行组件整份塞进去只为改一行,等于让实习生通读整本教材找一个错字——你按页付钱。
在 Dashboard.jsx 第 42 行主按钮:bg-blue-500 → bg-emerald-500。只改这一处。
Cursor 用 @file / 精确选区;Claude Code 用 @path 或粘贴 ±5 行片段。能钉上下文就钉。
| 任务规模 | 推荐上下文 | 避免 |
|---|---|---|
| 改一行样式 | 单文件 + 行号 | 整仓 @ |
| 修一个 hook | 该 hook + 调用方 1 个文件 | 整个 src/ |
| 跨模块重构 | 接口定义 + 2–3 实现文件 | README + 全组件库 |
上下文预算纪律也适用于 Claude Code,见 上下文窗口管理。会话超过约 20 轮且主题已漂移,新开 chat 往往比续聊便宜。
2. 第一句锁死技术栈
「做个登录表单」=「做个交通工具」。模型会猜 Formik/RHF/Zod,你每纠正一次就付一次重写费。会话顶贴 Stack Header:
Stack: React 19, Tailwind, React Hook Form + Zod, TanStack Query, Zustand, React Router v7.
Stack Header 还应包含:包管理器(pnpm/yarn)、测试框架(Vitest/Jest)、是否 App Router。国内 monorepo 常见 pnpm workspace,不写清楚模型会按 npm 幻觉生成 install 命令。
把 Stack Header 存进项目 AGENTS.md 或 Cursor User Rules,每次粘贴省 30 秒,长期省大量纠正轮次。
3. 禁止整文件重写
默认生成整文件对模型更省事,对你更贵。明确要求 search-replace / 仅输出变更块:
不要重写整个文件。只给 search-replace 或变更行±2 行上下文。
Claude Code 可要求用 Edit 工具而非整文件覆盖;Cursor 可强调「Apply 模式只改 diff」。若模型仍输出全文件,直接打断:「停止,只给 unified diff」。
整文件重写的隐藏成本:你 merge 时看不清改了什么,漏审一行就可能引入密钥或删测试——后续返工又是 token。
4. 先静态骨架,再接大脑
一句话同时要 UI + API + loading,模型会把 fetch 缠进 JSX,你再花四轮拆。拆成两枪:
- 硬编码数据把 UI 做对
- 再把数组换成
useQuery
第二步单独会话往往更干净:「上一步 UI 已 OK,现在只接 API,endpoint 是 /api/users,用已有 TanStack Query 模式」。
非 UI 任务同理:先写纯函数与类型,再接 CLI/HTTP 壳。每层验收通过再叠,比一次要「完整功能」少 50% 返工。
5. 固定设计词典(如强制 Tailwind)
允许模型自创 .super-cool-wrapper,它会花 token 解释类名,再在你否决后重写。限定「只用 Tailwind 工具类、禁止自定义 CSS」能砍掉创作型废话。
可追加约束:
- 颜色只允许
slate/emerald/blue色板 - 间距只用
4的倍数 - 图标只用
lucide-react已有组件
设计词典写进 Stack Header 或 .cursor/rules,团队统一,模型不会每个会话发明新 CSS 架构。
6. 幻觉要预检,别事后哭
模型会自信地谎报工具能力与依赖版本。开干前强制 Pre-flight:
Pre-flight:先读 package.json 与 tailwind.config。向我复述 React/Query/调色板版本。未确认前禁止写代码。
把 read_file 从可选变成门禁。Pre-flight 失败时的典型信号:模型说「项目用 Next 14 App Router」而你是 Pages Router;说「已安装 shadcn」而 package.json 里没有。
这和「收尾阶段信任但核实」同一逻辑,见 Claude Code 最后 30% 怎么收尾。
会话级省钱清单
| 动作 | 省在哪 |
|---|---|
| 小改动用小模型/Cost 路由 | 单价不用前线价 |
| 同一功能不换模型中途 | 吃 prompt cache |
| 主题漂了就新开会话 | 少带脏上下文 |
| 团队开智能路由 | 见 Cursor Router 如何省成本 |
| BYOK 设月度预算告警 | 账单直出,无缓冲 |
| 批量相似改动合并一条 prompt | 少重复 Stack Header |
国内开发者:Relay 与订阅场景
- CodePass / 中转按量:Pre-flight + 手术式上下文 ROI 最高;整仓扫描一次可能抵几十次小改。
- Max 周限额:把「探索读代码」交给小模型或
grep自己先定位,再让强模型只写 patch。 - 网络重试:超时后别在同会话说「继续」——常触发全量重发;新开短会话只带结论。
踩坑对照
| 现象 | 可能原因 | 立刻可做 |
|---|---|---|
| 改一行扣很多额度 | 上下文含大文件/图片 | 缩小 @ 范围 |
| 同一 Bug 修五遍 | 栈未声明,每次换库 | 补 Stack Header |
| diff 巨大难 review | 未禁整文件重写 | 打断并要求 patch |
| 配置类报错 | 未 Pre-flight | 先读 lockfile |
常见问题
已经 BYOK 了还用管这些吗?
更要管。BYOK 账单按量直出,浪费立刻反映在卡上;配置见 Cursor BYOK 设置。国内信用卡付 OpenAI 仍可能失败,BYOK 失败时别用「更大上下文」赌运气。
和「开最强模型省返工」矛盾吗?
不矛盾:难题用强模型,改颜色用手术式上下文 + 小模型。浪费来自任务与上下文不匹配,不来自「从不买强模型」。架构选型、安全审计值得 Opus;改 className 不值得。
有没有一键模板?
把 Stack Header + Pre-flight +「只输出 diff」存成 User Rules / 项目 skill,新会话粘贴即用。Claude Code 可放 CLAUDE.md;Cursor 放 .cursor/rules。
Agent 自动读了不该读的文件怎么办?
与 Codex/Cursor ignore 策略相关,见 Codex 排除敏感文件。省 token 的同时也在省「误读密钥后进上下文」的风险。
团队怎么统一规矩?
Code review 检查 Agent 产出时,过大 diff 直接打回;CI 不替 Agent 兜底「整文件替换」的漏网之鱼。
一周对照实验(可自测)
选同一小任务(例如改按钮色 + 补一条测试),分两次做:
| 轮次 | 做法 | 记录 |
|---|---|---|
| A | 整文件 @、无 Stack Header |
轮数、额度/美元 |
| B | 六条规矩全开 | 轮数、额度/美元 |
多数人会看到 B 轮对话更短、总 token 更低。把 B 的 prompt 模板固化,比「记住要省」有效。
和订阅/quota 的关系
Claude Max、Cursor Pro、按量 Relay 的计费单位不同,但浪费结构相同:大上下文进、大上下文出。省 token 不等于永远用小模型——而等于「每次请求只带完成任务的最小信息」。配额快见底时,优先关 Autopilot 全仓扫描,改用手动 @ 三个文件,往往比降模型档位更能撑到月底。
改样式、改文案、补 import 这类任务,单独开「轻量会话」:只贴 Stack Header + 10 行代码片段,通常一轮结束。别在讨论架构的同一会话末尾顺手改 CSS——上下文里已有上万 token 架构讨论,改一行也按全量计价。