AGENT.md:在LLM开口之前,它已经做了这些事
你有没有遇到过这种情况——
同一个 AI 助手,在 A 项目里像个老手:熟悉技术栈、遵守规范、说话有分寸。换到 B 项目,却像个刚入职的新人,什么都不知道,什么都要从头解释。
为什么?
因为 LLM 本身没有记忆。
每次对话,它都从零开始。它不知道你的项目用什么语言,不知道你的团队有什么规范,不知道你上次说了什么。它只是一个极其强大的”推理引擎”——给它什么上下文,它就基于什么上下文思考。
这就是问题所在,也是 AGENT.md 存在的原因。
LLM 是大脑,但大脑需要被”装配”
想象你雇了一个能力极强的顾问。
但每次见面,他都完全不记得你是谁、你的公司做什么、你们上次谈了什么。你每次都要从头介绍,每次都要重新建立信任,每次都要重新解释规则。
这就是没有 AGENT.md 时,你和 LLM 的关系。
LLM 是大脑,但大脑需要被装配。
AGENT.md(或 CLAUDE.md、CODEBUDDY.md)就是那份”装配说明书”。
第一个 token 之前,发生了什么?
你以为对话是从你按下回车键开始的。
其实不是。
在你的第一句话到达 LLM 之前,Agent 已经悄悄完成了这些事:
1 | 用户按下回车 |
LLM 收到的,不是你的一句话,而是一个完整的上下文包:
内置规则 + AGENT.md 的内容 + 你的消息
其中,AGENT.md 的内容具有最高优先级。它在 LLM 开口之前,就已经完成了”岗前培训”。
AGENT.md 里写什么?
本质上,它是你给 LLM 的项目专属说明书。
典型内容包括:
① 项目背景
“这是一个用 Go 语言编写的微服务项目,使用 gRPC 通信,部署在 Kubernetes 上。”
② 行为约束
“回答必须简洁,代码必须加中文注释,不要主动创建文档文件。”
③ 技术规范
“错误处理统一使用 errors.Wrap,禁止使用 panic。”
④ 角色定义
“你是这个项目的资深后端工程师,熟悉所有模块的设计决策。”
这些内容,在每次对话开始时自动生效。你不需要每次重复说,LLM 已经”记住”了。
Skills 和 MCP:另外两种”装配”方式
AGENT.md 是持久化的项目级装配。但 Agent 还有两种动态装配方式。
Skills —— 临时换上专业知识
Skills 是一组预定义的指令和资源,在特定任务前动态注入上下文。
比如触发”写作模式”时,Agent 会加载写作相关的 Skill,LLM 就临时拥有了”按照学习→规划→润色→成稿流程写作”的专项能力。任务结束,这份能力随即卸载。
AGENT.md vs Skills:AGENT.md 是永久生效的项目背景,Skills 是按需加载的专项能力。
MCP —— 伸向外部世界的手
MCP(Model Context Protocol)是工具调用协议。
LLM 推理过程中,如果需要查数据库、调 API、读文件,它会通过 Agent 发出 MCP 调用,拿到结果,再继续推理。
Skills vs MCP:Skills 在推理之前注入上下文,MCP 在推理过程中按需调用。
一句话说清楚
| 角色 | 定位 | 生效时机 |
|---|---|---|
| LLM | 大脑,负责推理 | 全程 |
| Agent | 身体,负责协调 | 全程 |
| AGENT.md | 岗前培训书 | 第一个 token 之前 |
| Skills | 临时专业知识包 | 特定任务前加载 |
| MCP | 手脚,连接外部工具 | 推理过程中按需调用 |
回到开头
为什么同一个 AI,在不同项目里表现差异巨大?
因为 LLM 本身是无状态的。它的表现,完全取决于它收到的上下文。
AGENT.md 就是那个让 LLM 在开口之前,就已经”认识你”的机制。
它不是一个可选的配置文件。它是 Agent 与 LLM 之间的契约——在第一个 token 生成之前,已经悄悄签好了。