AIHero
    8 min read · Updated Jan 18, 2026

    AGENTS.md 完整指南

    学习如何优化 AGENTS.md 文件以服务 AI 编码智能体。掌握渐进式披露,聚焦指令,并最大化智能体性能。

    Matt Pocock
    Matt Pocock
    本页目录

    你是否曾担心自己的 AGENTS.md 文件太大?

    也许你确实应该担心。糟糕的 AGENTS.md 文件会让 Agent 困惑,演变成维护噩梦,还会在每次请求中消耗你的 tokens。

    因此,你最好了解如何修复它。

    什么是 AGENTS.md?

    一个 AGENTS.md 文件是提交到 Git 的 markdown 文件,用于定制 AI 编码 Agent 在仓库中的行为。它位于会话历史顶部,紧跟在 系统提示词.

    可以把它看作 Agent 基础指令与实际代码库之间的一层配置。文件中可以包含两类指导:

    • 个人范围:你的提交风格偏好、偏爱的编码模式
    • 项目范围:项目用途、使用的包管理器、架构决策

    这个 AGENTS.md 文件是一项开放标准,受到许多工具支持,但并非所有工具都支持。

    CLAUDE.md

    需要注意的是,Claude Code 不使用 AGENTS.md ,而是使用 CLAUDE.md 。你可以在两者之间创建符号链接,让所有工具以相同方式工作:

    # Create a symlink from AGENTS.md to CLAUDE.md
    ln -s AGENTS.md CLAUDE.md

    为什么超大型 AGENTS.md 文件会成为问题

    存在一种自然的反馈循环,会让 AGENTS.md 文件膨胀到危险的程度:

    1. Agent 做了你不喜欢的事情
    2. 你添加一条规则来阻止它
    3. 几个月内重复数百次
    4. 文件变成一团“泥球”

    不同开发者加入彼此冲突的意见,却没有人进行完整的风格梳理。结果是什么?一个无法维护的烂摊子,而且它会真正损害 Agent 的表现。

    另一个罪魁祸首是自动生成的 AGENTS.md 文件。绝不要使用初始化脚本自动生成你的 AGENTS.md。它们会向文件中塞入大量“对多数场景都有用”的内容,而这些内容本应通过渐进式披露按需提供。生成式文件追求面面俱到,却缺乏克制。

    指令预算

    Humanlayer 的 Kyle 在 文章 中提到了“指令预算”这个概念:

    前沿推理 LLM 大约能以合理的一致性遵循 150–200 条指令。小模型能够关注的指令少于大模型,非推理模型能够关注的指令也少于推理模型。

    你的 AGENTS.md 文件中的每个 token 都会在 每一次请求中加载,无论它是否相关。这就形成了一个硬性的预算问题:

    场景影响
    小而聚焦的 AGENTS.md可为任务专用指令留下更多 tokens
    庞大臃肿的 AGENTS.md实际工作可用的 tokens 更少;Agent 也会困惑
    不相关的指令浪费 token + 分散 Agent 注意力 = 表现更差

    综合来看,这意味着 理想的 AGENTS.md 文件应该尽可能小。

    陈旧文档会污染上下文

    大型 AGENTS.md 文件的另一个问题是内容容易过时。

    文档很快就会过时。对人类开发者而言,陈旧文档虽然令人厌烦,但人通常拥有足够的既有记忆,会对糟糕文档保持怀疑。可对每次请求都会阅读文档的 AI Agent 而言,过时信息会主动 污染 上下文。

    记录文件系统结构时,这个问题尤其危险。文件路径不断变化。如果你的 AGENTS.md 写着“身份验证逻辑位于 src/auth/handlers.ts”,而该文件后来被重命名或移动,Agent 就会信心满满地去错误位置查找。

    不要记录结构,而要描述能力。可以提示相关内容 可能 位于何处,并说明项目的整体形态。让 Agent 在规划期间自行生成即时文档。

    领域概念(例如“organization”“group”和“workspace”的区别)比文件路径更稳定,因此记录起来更安全。但在快速演进的 AI 辅助代码库中,即使这些概念也可能漂移,所以仍要保持克制。

    精简过大的 AGENTS.md 文件

    必须严格筛选放入其中的内容。可以把下面几项视为绝对最低要求:

    • 一句话项目描述 (作用类似基于角色的 Prompt)
    • 包管理器 (如果不是 npm;也可以使用 corepack 提供警告)
    • 构建/typecheck 命令 (如果不是标准命令)

    说真的,只需要这些。其他所有内容都应该放到别处。

    一句话项目描述

    这一句话会告诉 Agent 为什么 要在这个仓库中工作的原因,并为它作出的每项决策提供锚点。

    示例:

    This is a React component library for accessible data visualization.

    这就是基础。现在 Agent 已经理解了自己的工作范围。

    指定包管理器

    如果这是一个 JavaScript 项目,而你使用的不是 npm,请明确告诉 Agent:

    This project uses pnpm workspaces.

    如果不说明,Agent 可能会默认使用 npm ,并生成错误命令。

    Corepack 也很好用 你也可以使用 corepack 让系统自动处理警告,从而节省宝贵的指令预算。

    使用渐进式披露

    不要把所有内容都塞进 AGENTS.md,而要使用 渐进式披露:只向 Agent 提供当前所需内容,并在必要时将它指向其他资源。

    Agent 很擅长快速浏览文档层级,也能充分理解上下文,找到自己需要的内容。

    把语言专用规则移到独立文件

    如果你的 AGENTS.md 目前写着:

    Always use const instead of let.
    Never use var.
    Use interface instead of type when possible.
    Use strict null checks.
    ...

    请把这些内容移到独立文件中。然后在根目录的 AGENTS.md:

    For TypeScript conventions, see docs/TYPESCRIPT.md

    注意这里语气很轻:没有“始终”,没有全大写的强制命令,只有一句对话式引用。

    这样做的好处包括:

    • 只有当 Agent 编写 TypeScript 时,才加载 TypeScript 规则
    • 其他任务(CSS 调试、依赖管理)不会浪费 tokens
    • 文件保持聚焦,并能适应模型更替

    嵌套渐进式披露

    还可以继续深入。你的 docs/TYPESCRIPT.md 可以引用 docs/TESTING.md。由此创建一棵易于发现的资源树:

    docs/
    ├── TYPESCRIPT.md
    │ └── references TESTING.md
    ├── TESTING.md
    │ └── references specific test runners
    └── BUILD.md
    └── references esbuild configuration

    你甚至可以链接到外部资源,例如 Prisma 文档、Next.js 文档等。Agent 能够高效浏览这些层级。

    使用 Agent Skills

    许多工具支持“Agent Skills”——Agent 可以调用的命令或工作流,用来学习如何完成某项具体工作。这也是另一种 渐进式披露:Agent 只在需要时才拉取相关知识。

    我们会在另一篇文章中深入介绍 Agent Skills。

    AI Hero · 技能系统

    优秀的 AGENTS.md 只是第一步

    看看我在自己的 AGENTS.md 之上运行哪些 Skills,把文件中的指导转化为真正交付的成果。

    查看技能集

    AGENTS.md 在 Monorepo 中的用法

    你不必局限于根目录中的单个 AGENTS.md 。你可以在子目录中放置 AGENTS.md 文件,它们会 与根目录级别的文件合并.

    这对 Monorepo 非常有用:

    各层应该放什么

    级别内容
    根目录Monorepo 用途、如何浏览各个包、共享工具(pnpm workspaces)
    包目录包的用途、特定技术栈、包专用约定

    根目录 AGENTS.md:

    This is a monorepo containing web services and CLI tools.
    Use pnpm workspaces to manage dependencies.
    See each package's AGENTS.md for specific guidelines.

    包级 AGENTS.md (位于 packages/api/AGENTS.md):

    This package is a Node.js GraphQL API using Prisma.
    Follow docs/API_CONVENTIONS.md for API design patterns.

    不要让任何一层承载过多内容。 Agent 会在上下文中看到所有已经合并的 AGENTS.md 文件。每一层都只应聚焦与该层范围相关的内容。

    修复失控的 AGENTS.md :使用这个 Prompt

    如果你开始担心 repo 中的 AGENTS.md 文件,并希望使用渐进式披露原则重构它,可以尝试把下面这段 Prompt 复制到编码 Agent 中:

    I want you to refactor my AGENTS.md file to follow progressive disclosure principles.
    Follow these steps:
    1. **Find contradictions**: Identify any instructions that conflict with each other. For each contradiction, ask me which version I want to keep.
    2. **Identify the essentials**: Extract only what belongs in the root AGENTS.md:
    - One-sentence project description
    - Package manager (if not npm)
    - Non-standard build/typecheck commands
    - Anything truly relevant to every single task
    3. **Group the rest**: Organize remaining instructions into logical categories (e.g., TypeScript conventions, testing patterns, API design, Git workflow). For each group, create a separate markdown file.
    4. **Create the file structure**: Output:
    - A minimal root AGENTS.md with markdown links to the separate files
    - Each separate file with its relevant instructions
    - A suggested docs/ folder structure
    5. **Flag for deletion**: Identify any instructions that are:
    - Redundant (the agent already knows this)
    - Too vague to be actionable
    - Overly obvious (like "write clean code")

    不要堆出一团泥球

    准备向 AGENTS.md添加内容时,先问问自己它应该放在哪里:

    位置适用情况
    根目录 AGENTS.md与 repo 中的每一项任务都相关
    独立文件只与某个领域相关(TypeScript、测试等)
    嵌套文档树内容可以按层级组织

    理想的 AGENTS.md 应该小而聚焦,并指向其他资源。它只向 Agent 提供足以开始工作的上下文,同时留下通往更详细指南的线索。

    其他所有内容都放在渐进式披露体系中:独立文件、嵌套的 AGENTS.md 文件或 Skills。

    这样可以高效利用指令预算,让 Agent 保持专注,并使整套配置能够适应工具与最佳实践的持续演进。