AGENT.md:在LLM开口之前,它已经做了这些事

你有没有遇到过这种情况——

同一个 AI 助手,在 A 项目里像个老手:熟悉技术栈、遵守规范、说话有分寸。换到 B 项目,却像个刚入职的新人,什么都不知道,什么都要从头解释。

为什么?

因为 LLM 本身没有记忆。

每次对话,它都从零开始。它不知道你的项目用什么语言,不知道你的团队有什么规范,不知道你上次说了什么。它只是一个极其强大的”推理引擎”——给它什么上下文,它就基于什么上下文思考。

这就是问题所在,也是 AGENT.md 存在的原因。


LLM 是大脑,但大脑需要被”装配”

想象你雇了一个能力极强的顾问。

但每次见面,他都完全不记得你是谁、你的公司做什么、你们上次谈了什么。你每次都要从头介绍,每次都要重新建立信任,每次都要重新解释规则。

这就是没有 AGENT.md 时,你和 LLM 的关系。

LLM 是大脑,但大脑需要被装配。

AGENT.md(或 CLAUDE.mdCODEBUDDY.md)就是那份”装配说明书”。


第一个 token 之前,发生了什么?

你以为对话是从你按下回车键开始的。

其实不是。

在你的第一句话到达 LLM 之前,Agent 已经悄悄完成了这些事:

1
2
3
4
5
6
7
8
9
10
11
12
13
用户按下回车

Agent 扫描项目目录

发现 AGENT.md / CLAUDE.md / CODEBUDDY.md

读取文件内容

注入 System Prompt(排在用户消息之前)

LLM 基于完整上下文开始推理

你看到的第一个回复

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 生成之前,已经悄悄签好了。