用 AGENTS.md 约束 Agent,减少无效编码
用极简工程规则约束编码 Agent,减少重复实现与 Token 浪费,并提醒生产环境谨慎使用。
原始内容
简直就是省Token焚决!!! Vercel Next.js团队的老哥,烧了大约60B tokens,总结出一份AGENTS.md,核心就8条规则。 60B tokens什么概念?大概六位数美元。 这8条规则的本质就一句话:让你的AI编程Agent别像个实习生什么都想自己造,要像个干了十年的老油条一样写代码。 直接上规则: 1. 不保留向后兼容。过时的直接删,别加兼容层、别写migration、别留fallback。 2. 选能满足当前需求的最简单实现。不要预防性抽象,不要多此一举的配置层。 3. 系统分层长。先跑通一个最小的端到端版本,再往上加东西。绝不为了未完成的复杂度拆掉能跑的东西。 4. 组件保持模块化,关注点分离。 5. 优先用成熟的、有人维护的库。没有明确理由别自己重写。 6. 先翻项目里已有的依赖能做什么,再考虑加新包或自己写。别上来就假设库里没有。 7. 架构决策往长了做。不接受"先这样以后再换"的临时方案。 8. 先看成熟产品怎么解决同一个问题,用已验证的模式,别从零发明。 就这8条,丢进你项目根目录的AGENTS.md里,Cursor、Claude Code、Codex、Windsurf全会自动读。 为什么这能省token?因为AI写代码最大的浪费其实不是写错,是重复写多。 它给你引三个依赖写五个抽象层来解决一个标准库十行就能搞定的事,你让它改,它再给你写两百行。 这8条规则就是在它动笔之前先把它摁住:能不写的不写,能复用的复用,能简单的别复杂。 代码短了,返工少了,token自然就省了。 之前推荐过的Ponytail那个插件,干的是同一件事,只不过它是在运行时强制检查,这个是在AGENTS.md里从源头约束,两个一起用,简直效果拔群。 但作者自己加了个非常重要的警告: 这玩意儿只适合side projects,生产环境慎用。 他亲口说的,"不保留向后兼容"那条曾经让Agent差点删了生产数据库的表,差点丢了2000美元的数据。生产环境你得自己改,至少把第一条删了或者改温和点。 所以如果你在做side project、做内部工具、做原型,把这8条抄进AGENTS.md,你会发现AI写出来的代码突然像个人了。 如果你在生产环境用,把第一条和第七条之间的度自己把握好,别让AI把你库表删了。 省token的方法有很多种,换便宜模型是一种,写好prompt是一种,但最有效的,是在你项目根目录放一个文件,告诉AI: 别给我整花活,写最少的能跑的代码。
After doing ~60B tokens, this is my full AGENTS.md https://t.co/VVXIwtSAcO
中文译文
机器翻译,保留原文供核对。
在完成约 60B tokens 之后,这是我完整的 AGENTS.md https://t.co/VVXIwtSAcO
深度解析
是什么 这是一条纯观点型推文,将一份据称源自 Vercel/Next.js 团队实践的 AGENTS.md 规则,概括为约束 AI 编程 Agent 的工程方法。其核心不是某个软件功能,而是把“少写、复用、先跑通、长期设计”等原则固化到项目级上下文中。
核心论点 推文认为,Agent 的主要浪费往往来自重复造轮子、堆叠抽象、盲目增加依赖以及由此产生的返工,而不只是单次生成错误。规则链条因此从编码前置约束开始:删除过时路径,选择最简单实现,先完成端到端闭环,再通过模块化和依赖复用逐层扩展,同时避免注定要替换的临时架构。
关键洞察 AGENTS.md 的价值在于形成持久、可复用的团队规范,减少每次对话重新解释工程偏好的成本。它与运行时检查型工具的思路相近,但更偏向源头治理。
边界与风险 “60B tokens”及节省金额属于推文自述,不能视为已验证事实;不同 Agent 是否自动读取该文件也取决于工具支持。尤其“不保留向后兼容”不适合直接用于生产数据库、公开 API 或关键数据迁移,必须结合备份、测试、审查和回滚机制。规则更适合 side project、内部工具和原型,而非无条件复制到所有系统。
精选追评与案例
原作者补充该文件可跨 Cursor、Claude Code、Windsurf、Codex 通用,说明一次配置可多处生效。
补充一个最实用的点,这个文件是所有主流AI编程工具通用的,你写一次,Cursor、Claude Code、Windsurf、Codex全部生效,相当于一次配置给所有Agent定规矩了
给出可直接复用的完整 AGENTS.md 提示词,并逐条覆盖核心工程约束。
Prompt Cowboy has you covered 🤠 yeee haaww Copy prompt below 🫡 We're experts at prompting --- # AGENTS.md - Do not preserve backward compatibility. Remove obsolete paths instead of adding compatibility layers, fallbacks, or migrations. - Choose the simplest implementation that fully meets the current requirements. Avoid speculative abstractions, configuration, and indirection. - Grow the system in layers. Start from the smallest version that works end to end, and add each new capability on top of a product that already works. Never trade a working product for unfinished complexity. - Keep components modular and concerns clearly separated. - Prefer established, well-maintained libraries when they reduce overall complexity or improve reliability. Do not reimplement common functionality without a clear reason. - Lean on the dependencies already in the project before writing your own implementation or adding packages. Do not assume a library lacks a capability without checking its documentation and types. - Make architectural decisions for the long term. Do not accept a stopgap that only works for now and is meant to be replaced later.
中文译文 · 机器翻译
Prompt Cowboy 已经帮你搞定了 🤠 yeee haaww 复制下面的提示词 🫡 我们是提示词专家 --- # AGENTS.md - 不要保留向后兼容性。删除过时的路径,而不是添加兼容层、回退方案或迁移。 - 选择能完全满足当前需求的最简单实现。避免推测性的抽象、配置和间接层。 - 按层扩展系统。从能端到端运行的最小版本开始,并在已经可用的产品之上逐个添加新能力。绝不要用一个能正常工作的产品去换取未完成的复杂性。 - 保持组件模块化,并清晰分离关注点。 - 当成熟、维护良好的库能降低整体复杂性或提升可靠性时,优先使用它们。没有明确理由,不要重新实现常见功能。 - 在编写自己的实现或添加软件包之前,先依靠项目中已有的依赖。不要在未检查文档和类型的情况下假设某个库缺少某项能力。 - 做长期性的架构决策。不要接受只适用于当下、以后还要替换的临时方案。
提供另一版更精炼的八条中文行为准则,可直接替换或补充 AGENTS.md。
你这 AGENTS.md 太费 Token, 下面八条就够了 以瞎猜接口为耻,以认真查询为荣。 以模糊执行为耻,以寻求确认为荣。 以臆想业务为耻,以人类确认为荣。 以创造接口为耻,以复用现有为荣。 以跳过验证为耻,以主动测试为荣。 以破坏架构为耻,以遵循规范为荣。 以假装理解为耻,以诚实无知为荣。 以盲目修改为耻,以谨慎重构为荣。
结合 Freqtrade 实操说明第 6 条收益,并提醒第 1 条在生产数据场景的风险。
@AYi_AInotes 这8条我昨天也照着改了一版自己的项目规则文件。 最有感触的是第6条,先看现有依赖能干嘛,很多时候不是库不行,是我懒得翻文档直接让它重写。 我自己跑 Freqtrade 处理行情数据,第1条这种不留后备路径的狠劲我是真不敢直接抄,删错一张表我这边就直接对不上账了。
指出第 2 条与第 7 条的冲突,并给出按不可逆性和迁移成本裁决的边界。
@AYi_AInotes 这 8 条里最容易让 Agent 摇摆的是第 2 条和第 7 条:一边要求当前最简单,一边拒绝临时方案。最好再加一个裁决标准——不可逆、迁移成本高的决策按长期做;其余先选最小实现。没有这个边界,Agent 只是在两条都正确的规则之间随机解释。
