Jw
首页
技术
英语
首页
技术
英语
  • AI

    • 指令文件:copilot-instructions.md 与 AGENTS.md

VS Code 指令文件:copilot-instructions.md 与 AGENTS.md

两者都是自动注入会话的 Markdown 指令文件,VS Code 均原生支持;差别在生态范围(Copilot 专属 vs 跨 Agent 通用)与加载开关 / 激活方式,而不是「一个能用、一个不能用」。

一、一句话对比

维度.github/copilot-instructions.mdAGENTS.md
归属生态GitHub Copilot 专属跨 Agent 开放格式(Copilot / Codex / Claude / Cursor 等)
位置仓库根 .github/ 目录下仓库根(子目录嵌套为实验特性)
VS Code 支持原生自动读取原生自动读取,受 chat.useAgentsMdFile 开关控制
激活方式工作区全局生效(隐式注入,无 frontmatter)同左
典型用途约定 Copilot 在本仓库的回答风格与代码规范多人 / 多工具协作,共享同一份项目说明书

关键:两者是叠加(additive)关系而非覆盖关系——同时存在时会一起注入,内容重复只会白占上下文,内容矛盾则行为不可预期。

二、VS Code 指令文件家族(先分清谁是谁)

文件 / 位置作用域激活方式生态
.github/copilot-instructions.md工作区全局自动附加,纯 MarkdownCopilot
AGENTS.md(仓库根)工作区全局自动附加,纯 Markdown跨 Agent
.github/instructions/**/*.instructions.md按文件匹配YAML frontmatter:applyTo / descriptionCopilot
CLAUDE.md工作区全局自动附加Claude
~/.copilot/copilot-instructions.md用户级(跨项目)自动附加Copilot
GitHub 组织级指令组织级组织设置中开启Copilot
  • 只有 *.instructions.md 需要 YAML frontmatter(可带 name / description / applyTo);copilot-instructions.md 与 AGENTS.md 都是纯 Markdown,没有强制字段。
  • 常见误区:认为「AGENTS.md 不被 VS Code 识别,必须靠 copilot-instructions.md 桥接」——该说法已过时。现版本两者都是官方支持的指令格式,桥接的价值退化为「单一事实来源」,而不是「能不能读到」。

三、格式要求

3.1 通用规范(两者一致)

  • 标准 Markdown,无强制 frontmatter;
  • 指令短、单句、可执行,一条只讲一件事;
  • 优先用 - 无序列表 + 加粗关键词,便于注意力定位;
  • 条件判断写成 当…时,执行…;
  • 禁止项要显式写「禁止」「必须」并加粗(LLM 对否定句注意力较弱);
  • 需要 AI「参考而非照抄」的输出格式示例,用代码块隔离;
  • 控制长度(200 行内):文件内容计入上下文窗口,过长会导致后段规则被忽略(会话越长越明显)。

3.2 copilot-instructions.md:精炼指令式

它会被静默注入到 system prompt,写法应像命令而不是文档,典型四段:

  1. 角色与回复风格——语言、语气、禁止的客套话;
  2. 规则路由——当…时 → 去读哪份规则;
  3. 分支判别——按输入类型走不同模板;
  4. 硬性红线速记——只列禁止项,不展开。

3.3 AGENTS.md:结构完备的说明书

给 Agent 与协作者共读,建议四模块:

模块内容
Project Overview仓库做什么、技术栈与版本、常用命令表
Context Map目录树 + 各目录职责 + 关键文件标注
Workflow & Protocols各类任务的执行流程与约定(命名、模板、收尾清单)
Constraints & Guardrails绝对禁止的事项,用 ✅ / ❌ 列表

四、协同方案:单一事实来源 + 入口引用

AGENTS.md                        ← 规则正本(唯一需要维护的地方)
   ▲
   │ 引用
.github/copilot-instructions.md  ← 只写「角色 / 风格 / 路由」+ 指向 AGENTS.md
  • 全部核心规则写在根目录 AGENTS.md;
  • copilot-instructions.md 只保留角色、风格、路由,加一句「严格遵循 AGENTS.md」;
  • 收益:规则只维护一份;入口文件保持短小,不挤占上下文。

注意:桥接的目的是单一事实来源,不是因为 VS Code 读不到 AGENTS.md。

五、易错点

现象原因 / 处理
规则完全不生效先确认当前会话选的 agent / harness;AGENTS.md 受 chat.useAgentsMdFile 控制
规则记不住、越聊越跑偏指令文件过长或过于发散,改写为单句指令并精简
两条规则互相冲突各来源是叠加的,没有可靠的优先级,必须在源头删重、消解矛盾
子目录 AGENTS.md 无反应嵌套 AGENTS.md 属实验特性,默认关闭(chat.useNestedAgentsMdFiles)
编辑器内联补全不带规则自定义指令不作用于内联建议,只作用于 Chat / Agent 会话
想确认加载了哪份命令面板 Chat: Open Customizations;加载日志用 Developer: Open Agent Debug Logs

六、写作技巧速记

  • 写为什么:如「用 pnpm,因为仓库已锁定 pnpm-lock.yaml」,AI 在边界情况更会自行判断;
  • 给正例 / 反例代码片段,比抽象描述有效;
  • 跳过 linter / formatter 已能强制的规则;
  • 任务或语言专属的规则拆成多个 *.instructions.md,用 applyTo(如 **/*.py、**/*.md)精准挂载;
  • 团队 / 组织级要求保持一致,不要在多个文件里写互相矛盾的副本。

相关

  • 技术笔记总览:本站其他技术笔记入口
最近更新: 2026/10/1 10:54
Contributors: liujw