AI编程心得2:写好 AGENTS.md,AI 更会干活,也更省 token

研究 AGENTS.md 如何减少 token 并提升 AI 解决问题的能力

背景

最近这段时间一直在用 Codex 开发项目,解决了各种小毛病之后 Codex 堪称开发神器, 目前给我带来了很多开发上的帮助。
然而前几天由于一直开着 GPT5.5 High, 然后发现周额度刷新时间还没到一半额度就被我用完了,
所以我就去研究了下各种省Token的方法,这里有一些收获想分享一下。

先放结果

我先把研究成果的提示词放文章最前面,
有需要的同学复制后加入到 ~\.codex\AGENTS.md直接用就行了。
理解性内容可以后面想了解时再看。

推荐提示词:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
- 回答要保持简洁精炼。
只回答问的内容,默认不铺垫、不总结、不扩展。
能一句话说清就一句话。
除非我要求详细解释,否则不要展开背景知识。

### 文件读取规则

- 读取文件前的检查
读取任何文件正文前,必须先检查文件大小,除非文件大小已在当前上下文中明确可知。

如果文件大小 >100KB,禁止全文读取。应改用搜索、抽样、分块读取等方式,只读取与任务相关的片段。

优先使用字节数限制输出,避免大文件、长行文件、压缩文本、日志、JSON 等内容污染上下文。

Linux bash 示例:
COMMAND 2>&1 | head -c 4000
  
Windows pwsh示例:
$Output = COMMAND 2>&1 | Out-String  
$Output.Substring(0, [Math]::Min(4000, $Output.Length))

- 不要重复读取已经读取过的文件内容
除非用户明确要求重新读取,或有证据表明文件已经变化,
否则当文件此前已经进入上下文时, 优先基于已有信息推理,不要再次读取相同内容。
如需确认文件是否变化,应优先检查修改时间、大小、hash 或 git diff,而不是重新全文读取。

- 依赖锁文件限制
除非任务明确涉及依赖分析、版本冲突、构建复现相关任务,
否则默认禁止读取 lock / sum / vendor 等依赖明细文件正文,例如: package-lock.json / go.sum / uv.lock 等。

不要让AI废话。

要对模型的价格心理有数

GPT API 价格

模型输入 token缓存输入 token输出 token
GPT-5.5$5.00 / 1M$0.50 / 1M$30.00 / 1M
GPT-5.4$2.50 / 1M$0.25 / 1M$15.00 / 1M
GPT-5.4 mini$0.75 / 1M$0.075 / 1M$4.50 / 1M

来源:OpenAI 官方 API Pricing https://openai.com/api/pricing/
表中价格按 2026-05-21 页面信息整理,后续可能变化

从上表可以发现两个提示

  • 同样一段文字 Token,输出价格 = 6x输入价格
    并且输入还能命中缓存,平时会更便宜,所以结论:
    输出很贵,你要限制AI讲废话。
    大模型厂商有天然的动力让模型多吐字,可以多赚钱

  • 先进模型很贵。
    GPT-5.5 = 2x GPT-5.4 = 6x GPT-5.4 mini
    先进模型比如GPT-5.5它们的优势在于复杂问题的处理上,解题效率更高。
    但是很多时候,面对一些简单、环境单一的小任务 GPT-5.4 mini 也能做掉,此时没必要开 GPT-5.5
    平时额度紧张时,GPT-5.4也是很香的选择。

推荐提示词:

1
2
3
4
- 回答要保持简洁精炼。
只回答问的内容,默认不铺垫、不总结、不扩展。
能一句话说清就一句话。
除非我要求详细解释,否则不要展开背景知识。

优化Agent行为

我这次研究 AGENTS.md 时,发现一些提示词真的适合每个工作者都写进去
这些提示词,不仅能减少消耗的 token ,并且更小更干净的上下文会让 AI 解决问题更有效率
设想一下,当 AI 窗口有大量的无效主题不明的上下文,大模型自然抓不到问题重点,解决问题效率直线下降。

我现在推荐写进去的,主要就是下面这三类。

1. 读取文件前先看大小

这是我最推荐的一条。

这里有一个常见的误区,很多人会觉得 AI 在执行过程中调用命令时返回的结果,比如 cat 一个文件的内容,这些 output 不算输入的上下文。 实际上这些命令的 output 和你在窗口手动输入的文本一样,全算有效上下文。

所以,当很多 AI 处理问题时,加载文件一上来就读全文。看起来很全面,实际上很容易把上下文塞满,把真正关键的信息挤出去。

更合理的做法,是先判断文件大小,再决定是全文读、抽样读,还是只读相关片段。

这条规则的本质很简单:先控制信息摄入,再开始分析。
我建议这样写提示词:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
- 读取文件前的检查
读取任何文件正文前,必须先检查文件大小,除非文件大小已在当前上下文中明确可知。

如果文件大小 >100KB,禁止全文读取。应改用搜索、抽样、分块读取等方式,只读取与任务相关的片段。

优先使用字节数限制输出,避免大文件、长行文件、压缩文本、日志、JSON 等内容污染上下文。

Linux bash 示例:
COMMAND 2>&1 | head -c 4000
  
Windows pwsh 示例:
$Output = COMMAND 2>&1 | Out-String  
$Output.Substring(0, [Math]::Min(4000, $Output.Length))

这条规则的价值,不只是省 token。
它还能逼着 AI 按正确顺序工作:先判断,再读取。先筛选,再读取。

2. 不要重复读取已经读取过的内容

这条看起来普通,但很关键。

AI 很容易为了“稳妥”反复读同一份内容,结果不是更准确,而是更浪费。 真正好的工作方式,是复用已经拿到的信息,而不是每一步都重新扫描一遍。

所以我会明确加上这一条:

1
2
3
4
- 不要重复读取已经读取过的文件内容
除非用户明确要求重新读取,或有证据表明文件已经变化,
否则当文件此前已经进入上下文时,优先基于已有信息推理,不要再次读取相同内容。
如需确认文件是否变化,应优先检查修改时间、大小、hash 或 git diff,而不是重新全文读取。

这条的目标不是偷懒,而是让 AI 学会复用上下文。 会复用,才会省 token。

3. 默认不碰依赖锁文件

这条也很值得写,对开发人员很有价值

除非当前任务就是在查依赖冲突、版本锁定、构建复现,不然 go.sumpackage-lock.jsonuv.lock 这类文件通常都不该主动读。 它们信息密度高,但对大多数任务帮助不大。

我建议这样写提示词:

1
2
3
4
- 依赖锁文件限制
除非任务明确涉及依赖分析、版本冲突、构建复现相关任务,
否则默认禁止读取 lock / sum / vendor 等依赖明细文件正文,
例如: package-lock.json / go.sum / uv.lock 等。

这条的作用很直接:把 AI 从“什么都想看”拉回到“只看和当前问题有关的东西”。

最后

现在我觉得大模型在使用时现在缺的不是解决问题的能力,而是在工程上管理上下文的能力。
怎么样让大模型的上下文保持干净,才是日常使用提升大模型解决问题效率的关键之一。
AGENTS.md 的作用,就是尽量提前掐掉这些低效行为,让 AI 少犯一些低级的工作流错误。


暂时先这样了,
现在 AI 发展太快了,我感觉学习的知识和经验都在快速变,目测几个月后又变了,
大家一起慢慢学慢慢卷吧~

原创声明: 本文首发于我的个人博客 原文链接地址

使用 Hugo 构建
主题 StackJimmy 设计