前阵子帮人排查一个 Agent 项目。打开它的 SKILL.md,三万 token,从"什么是 Bug"一路讲到"什么是回归测试",后面还附了五份 Java 编码规范。作者的逻辑很直白:知识都写全了,模型总该会用。
结果不太一样。任务一来,Agent 直接打开业务代码就开始改,改完跑不通,换个思路再猜一次。那份三万字的文档,它基本没读进去。
问题不在模型,在信息的组织方式。
这件事有个名字,叫渐进式披露(Progressive Disclosure),一句话说得清:
不要把 Agent 完成任务所需的全部知识,一次性塞进
AGENTS.md和SKILL.md。先给最小必要的信息,让它需要时自己往下取。
下面说具体怎么做。
一、先把 AGENTS.md 和 SKILL.md 拆开
这两个文件常被当成一回事,其实职责完全不同。
| 文件 | 回答的问题 | 什么时候读 |
|---|---|---|
AGENTS.md | 这个项目怎么工作 | 进入项目就要知道,常驻 |
SKILL.md | 这类任务怎么做 | 任务匹配之后再加载 |
references/*.md | 深层知识与规范 | 执行中要用到时 |
examples/* | 真实案例与模板 | 需要参考实现时 |
scripts/* | 确定性操作 | 需要执行时 |
rules/*.md | 特定场景约束 | 进入对应场景时 |
混在一起的后果很直接:项目背景被反复塞进每一次任务,任务流程又被埋在项目说明里,两件事都没做透。落地时把它拆成skills/<任务名>/一层目录,各文件归位,路由问题就解决了一半。
二、四层加载,每一层都要"上一层同意"
Agent 取信息的过程可以拆成四层:
Layer 1 元信息 / 索引 name + description,判断要不要用这个 SkillLayer 2 SKILL.md 核心流程与约束Layer 3 references/ 深度知识与规范Layer 4 examples/ scripts/ 案例、工具、模板重点是每一层都带判断条件,而不是一次性读完。
第一层只回答一个问题:有没有必要用这个 Skill?
name: bug-fixdescription: > Investigate and fix software bugs by tracing the complete execution chain before modifying code.读到这句,Agent 就能定下来:用户在修登录 token 丢失,匹配 bug-fix,加载SKILL.md。换成别的事情,这个 Skill 根本不进上下文。
三、SKILL.md 写流程,不写知识
写 Skill 最常见的偏差,是把它写成了一篇科普:
# Bug Fix SkillBug 是软件运行过程中出现的错误。常见 Bug 类型包括:空指针、数据错误、网络错误、并发问题……这种内容对 Agent 没什么用。它不需要知道 Bug 的定义,它需要知道下一步做什么。
同一件事,换一种写法:
## Workflow1. 理解上报的现象。2. 找到入口点。3. 追踪完整的执行路径。4. 定位失效机制。5. 形成修复假设。6. 用代码验证假设。7. 定义最小的安全修复。8. 实施修复。9. 跑针对性测试。10. 跑回归检查。## Constraints- 在失效机制成立之前,不要改代码。- 不要把上报的现象当成根因。- 改行为之前,先追调用方和被调用方。- 选择能修掉根因的最小改动。至于"什么叫调用链"“Spring Bean 生命周期”"数据库事务隔离级别"这类内容,全部移到references/。
判断标准就一条:
- •
SKILL.md负责 WHEN、WHAT、HOW、CONSTRAINT、OUTPUT; - •
references/负责 WHY、DETAIL、BACKGROUND、EDGE CASE。
四、目录本身就是知识路由
把 references 按领域切开,路由就自然形成了:
skills/bug-fix/├── SKILL.md├── references/│ ├── debugging-methodology.md│ ├── java.md│ ├── cpp.md│ ├── frontend.md│ └── database.md├── examples/│ ├── java-null-pointer.md│ ├── cpp-memory-corruption.md│ └── frontend-state-bug.md└── scripts/ ├── collect-stack.sh └── run-regression.shAgent 一开始只读SKILL.md。判断出这是 C++ 内存问题,再读references/cpp.md;需要参照案例,读examples/cpp-memory-corruption.md;要验证,调scripts/run-regression.sh。
流程于是从"需求 → 加载五万字 → 开工",变成"需求 → 发现 Skill → 分类任务 → 选 reference → 选 example → 执行"。差别全在上下文。
这里有个细节容易写坏。很多人会这样写:
Before starting, read:- references/a.md- references/b.md- references/c.md这等于又回到一次性加载。应该写成条件句:
Read `references/cpp.md` only when the affected component is C++.五、最容易被忽略的一条:停止条件
Agent 有一个很稳定的行为倾向,无限调查。读了一个文件,再读一个,链路越铺越宽,最后忘了要干什么。另一头也常见:不调查,直接改。
两种都要用文字约束住:
## Investigation Stop ConditionsStop investigation when:- the failure mechanism is identified- the hypothesis is supported by code evidence- the affected execution path is understood- the repair point is identified- additional investigation is unlikely to change the repair plan补上停止条件,流程才算闭环:调查 → 方案 → 实施 → 验证。
为什么有的模型读完代码直接动手,有的会先把链路走完?决定因素往往不只是模型能力,而是这五样东西的组合:Skill、Workflow、Tool policy、Stop conditions,再加一份 Output contract。
六、可以直接拿去用的模板
我们内部把 Skill 统一成这个结构:
# <Skill Name>## PurposeWhat this skill does.## When to UseWhen this skill should be activated.## When NOT to UseCases where another skill should be used.## Workflow1. ...2. ...## Decision Rules- If A -> do X- If B -> read `references/b.md`- If C -> use tool Y## Constraints- ...## VerificationBefore completing the task:- [ ] ...- [ ] ...## OutputThe final result must contain:1. ...## ReferencesLoad only when needed:- `references/a.md`## ExamplesLoad only when a concrete example is required:- `examples/a.md`结构本身就是渐进式披露:越往下越具体,也越晚加载。
七、四个我见过最多的写法问题
SKILL.md 过长。流程、规范、背景、案例、API、源码、FAQ 全塞进一个文件,三万 token 起步,Agent 抓不到重点。
要求读取所有 reference。上面提过,这会让分层直接失效。
把 Skill 写成教程。教程回答"什么是 X",Skill 回答"先做什么、后做什么、什么时候停、什么时候读资料、什么时候调工具、最后交付什么"。
规则没有优先级。同时写"优先最小改动"“必要时重构”“不要动无关代码”“有机会就改进架构”,Agent 不知道听谁的。补一段优先级就好:
## Priority1. Preserve correctness.2. Fix the root cause.3. Preserve existing behavior.4. Minimize the change scope.5. Refactor only when required for correctness.写在最后
一句话收束整套体系:
AGENTS.md建立工作环境,SKILL.md规定任务方法,references提供专业知识,examples提供经验样本,scripts承担确定性动作。Agent 只在当前任务需要时,逐层往下取。
如果落到多智能体系统上,最终会形成一个四级知识结构:项目上下文常驻,任务 Skill 匹配后加载,领域知识按需加载,工具调用真正需要时才执行。Agent 的上下文应该是动态构建的,不是静态堆进去的。
值得比的不是谁的 Prompt 写得更长,而是谁在完成同一个任务时,喂给模型的东西更少。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~