小白程序员必看:收藏这篇,轻松让单一智能体拥有多种能力(Agent Skills 框架实战)
本文介绍了 Agent Skills 框架的设计技巧与实战经验,通过将大任务拆分为标准化的小技能,并使用编排器按序调度,实现单一智能体的多能力扩展。文章详细阐述了 Skills 框架的 Pipeline 设计、Skill 的定义与执行模式、上下文设计、数据流动方式以及规则引擎与 LLM 的结合等关键点,帮助读者理解如何构建高效、可维护的智能体系统。
一、从一个问题场景说起
程序员老张今年 45 岁,拿到体检报告后一脸懵——空腹血糖 7.2、甘油三酯 2.8、尿酸 520、谷丙转氨酶 52……十几项指标密密麻麻,红色箭头此起彼伏。他想知道三件事:
- 这些数字到底什么意思?(数据解析)
- 我有哪些健康风险?(风险评估)
- 接下来该怎么办?(建议生成)
如果你是 AI 工程师,接到这个需求会怎么设计?
最直觉的做法:写一个超长 Prompt,让 LLM 一口气从解析到建议全搞定。Demo 能跑,但到了生产环境——Prompt 越来越长,token 爆炸;某一步算错,整个输出全废;想换个风险评估策略,得改整条 Prompt,牵一发动全身。
那上 Multi-Agent?三个 Agent 各管一摊、互相通信?也不是不行,但你会发现:三步是严格串行的,后一步依赖前一步的输出,压根不需要"协商"和"并行"——Multi-Agent 引入的通信协议、独立 Memory、A2A协调开销,在这个场景下全是多余的复杂度。

我们真正需要的是:把大任务拆成标准化的小技能,用一个编排器按序调度,共享同一份上下文。 这就是 Agent Skills 要解决的事——用 Anthropic 的话说,真正的突破不是造更多的智能体,而是将能力以模块化方式沉淀,让单一智能体成为可复用能力的执行引擎。
一个简单的类比:如果 Multi-Agent 是多进程——各自独立内存、靠 IPC 通信、隔离性好但开销大;那 Agent Skills 就是同一进程下的多线程——共享内存、轻量调度、按需执行不同功能。不是说谁更好,而是看你的问题需要隔离还是共享。
Agent Skills 可以理解为 通用 Agent 的扩展包,Agent 可以通过加载不同的 Skills 包,来具备不同专业知识、工具使用能力,稳定的完成特定的任务

二、自研架构:Skills 框架的 Pipeline 设计
目前社区 Google ADK、Deep Agent 等框架已经集成了 Skill 设计,如果你期望自己动手开发一个 Agent Skills 框架时,那么整个框架的设计思路可以用一句话概括:一个协调器统一调度,多个 Skills 各司其职,三层上下文贯穿始终

五个核心角色的职责很清楚:
| 角色 | 职责 |
|---|---|
| AgentContext | 三层结构化上下文,贯穿整个流程的"信息中枢" |
| Planner | 理解用户意图,把大任务拆成小步骤 |
| Executor | 逐步执行每个 Skill,管理多种执行模式 |
| Synthesizer | 把多步结果综合为连贯的自然语言回答 |
| Coordinator | 串联以上所有角色的调度中心 |
Pipeline 本身不复杂。但框架真正的设计功力,藏在几个关键问题的解法里。
三、Skill = 一个文件夹,而非一个 Agent
在讨论编排之前,先回答一个根本性的问题:一个 Skill 到底长什么样?
一个 Skill 就是一个目录。放进 skills/ 文件夹,框架自动发现、自动注册——零配置,即插即用:
skills/parse_report/├── SKILL.md # 必需:元数据 + 使用文档(YAML front matter)├── prompt.template # 可选:Prompt 模板└── executor.py # 可选:自定义执行逻辑
SKILL.md 的 YAML front matter 定义了 Skill 的身份——名字、描述、触发词、标签。Planner 正是读这些描述来决定选哪个 Skill:
name: parse_report_skilldescription: 解析体检报告原始数据,提取并分类各项检验指标triggers: - 体检报告 - 体检数据 - 化验单tags: - 健康 - 体检
Skill 的执行有三种模式,Executor 按优先级依次检测:
- 有
executor.py→ 走自定义执行器(可以混合规则引擎 + LLM,后面详述) - 有
prompt.template→ 填充模板后调用 LLM - 都没有 → 把 SKILL.md 的文档部分作为 system prompt,直接调用 LLM
这个设计的关键在于:Skill 是被动的。 它不是一个有自主意识的 Agent——不需要自己的 Memory、自己的规划能力、自己的通信协议。它只需要满足一个简单的契约:给我输入,我返回输出。
Everything is a Tool 原则
现实中一个 Skill 可能需要调用 API、检索知识库、执行计算脚本。这些异构能力如何统一管理?框架遵循 Everything is a Tool 原则——无论是 API 调用、知识 Source 检索还是代码 Script 执行,都可以抽象为 Tool,在 SKILL.md 中声明绑定:
# Available Tools## 1. check_reference_range工具名称: Calculation Tool工具用途: 检查指标是否在参考范围内工具输入: indicator_name, value工具返回: status, deviation_percent
这让 Skill 的能力描述和执行逻辑彻底解耦——框架不关心你调的是 API 还是本地函数,它只看到"Tool"这一层统一抽象。
四、上下文设计—— Skills 框架的「大脑结构」
这是整个框架最精巧的部分,也是区别于"把所有信息塞进一个 dict"的核心设计。
问题:多步执行中,信息传递会变成一锅粥
在链式执行中,信息的种类很杂:用户说了什么、Planner 规划了什么、第 1 步输出了什么、第 2 步又输出了什么、系统有哪些 Skill 可用、token 预算还剩多少……如果全部扁平地扔进一个字典,很快会失控——谁写的、谁能读、什么时候写的,全部混在一起,调试时根本无从下手。
解法:把上下文切成三层,每层职责分明

每个组件只操作自己需要的层:
- Planner 读 用户输入层(用户要什么)+ Skill配置信息层(有哪些 Skill),写回 用户输入层(拆解后的意图 + Skill 的步骤计划)
- Executor 逐步 读/写 工作记忆层(这里存的是每一个Skill执行的输入和输出)
- Synthesizer 读 用户输入层 + 工作记忆层 的累积结果,用于生成最终回答
这种分层带来三个好处:
- 职责边界清晰——每层存什么、谁能写,一目了然,杜绝组件间的数据越权
- 增量更新——每个 Skill 执行完只写自己那一小块,不需要拼全量上下文
- 全链路可审计——每次读写操作自动记入审计日志:
def _audit(self, layer, op, key, source, detail=""): entry = AuditEntry( timestamp=datetime.now().isoformat(), layer=layer, # user_input | scratchpad | environment op=op, # read | write | delete | compress key=key, source=source, # planner / skill:parse_report / coordinator ) self._audit_log.append(entry)
出了 bug?看一眼审计日志:谁在什么时间读了什么、写了什么,一目了然。当用户问"为什么建议我少吃海鲜?"你能追溯到完整因果链:parse_report_skill 发现尿酸 520 偏高 → assess_risk_skill 判定代谢风险中等 → generate_advice_skill 生成了限嘌呤饮食建议。
五、渐进式上下文披露—— Skills 框架的灵魂
这是我认为整个框架最核心的设计,也是踩坑最多之后才想清楚的。
问题:全量灌入 = 精度下降 + Token 爆炸
最初的做法很朴素:第一步给原始 user_input,后续步骤把整个 Scratchpad 拼成字符串传入。结果——
- 第一步精度下降:用户说"帮我解析报告并评估风险再给建议",如果把这整句话原封不动传给
parse_report_skill,它不知道自己只需要做"解析"这一件事,容易跑偏 - Token 爆炸式增长:步骤越多拼接越长,第三步可能收到几千字符的前置信息,LLM 在海量上下文中迷路
解法:每一步只看到最小必要上下文
核心理念:不区分"第一步"和"后续步骤",统一通过同一个方法构建输入。每个步骤收到的输入由三部分组成:

用一个例子说清楚。用户说:“帮我解析体检报告并评估风险再给出建议。” 如果步骤 3(generate_advice_skill)收到的主指令还是这整句话,它不知道该做解析、评估还是建议。但如果收到的是 Planner 分解出的 sub_task——“基于解析数据和风险评估,生成个性化健康建议”——职责就非常清晰了
压缩策略 遵循一个直觉——越新的步骤输出越重要:
- 始终保留:原始请求(LLM 不能忘记用户到底要什么)
- 完整保留:最新一步的输出(当前步骤通常直接依赖它)
- 可截断:较早的步骤输出(加"…已压缩"标记)
- 可丢弃:已被后续步骤消化吸收的最早步骤
结果是:Token 消耗线性增长而非指数增长,永远不会因为上下文过长导致 API 报错。
六、Skills 之间的数据如何流动
当多个 Skill 形成链式执行时,前一步的输出如何稳定、可控地传给下一步?这个问题看似简单,细想起来有两个难点。
双通道传递:结构化字典 + 文本回退
框架设计了两条并行的数据通道:

- **通道 1(文本通道)😗*自动将前置步骤的文本输出拼入参考信息——这是渐进式上下文机制自然产生的
- 通道 2(字典通道):通过共享字典传递结构化数据
context["parsed_report_skill"]、context["assess_risk_skill"]
通道 2 是首选——结构化 JSON 完整、无歧义,executor 可以直接 context["parsed_report_skill"]["result"] 取值,不需要从文本里正则提取。但并非所有 Skill 都产出结构化数据(比如纯 LLM 对话型 Skill),这时通道 1 兜底,保证链路不断。
历史 Session 只传一次
另一个关键决策:只有第一步传历史对话 Session,后续步骤不传。
原因:第一步已经基于历史生成了结构化结果,后续步骤通过渐进式上下文拿到这些结果——它们已经是对历史的"提炼版本"。每个 Skill 再塞一遍原始历史,是纯粹的 token 浪费。
七、规则引擎 + LLM:双执行引擎的设计
这个设计值得单独讲,因为它体现了一个重要理念——能确定的事情绝不让 LLM 猜。
以 parse_report_skill 为例,它的 executor 不是简单地把数据丢给 LLM:
def execute(llm, user_input, context): raw = context.get("raw_report") # ---- 规则引擎:确定性计算 ---- bmi = calculate_bmi(height, weight) bmi_category = classify_bmi(bmi) bp_category = classify_blood_pressure(sbp, dbp) for item in raw["lab_items"]: status, deviation = check_indicator(value, ref_low, ref_high) # ---- LLM:自然语言生成 ---- summary = llm.invoke("请用 2-3 句话概括体检结果...") return {规则计算结果 + LLM 摘要}
“空腹血糖 7.2 超出参考范围 3.9-6.1,偏高 18.0%”——查表就能 100% 准确。让 LLM 来算?它可能说 15%,也可能说 20%——你敢把这种不确定性放进健康建议吗?
但"受检者血糖控制欠佳,需注意糖尿病前期风险"这样的表述,LLM 写得比规则引擎好得多。
规则引擎负责「准」,LLM 负责「智」,各取所长:
| Skill | 规则引擎做什么 – 执行确定性代码 | LLM 做什么 – 调用模型生成 |
|---|---|---|
parse_report | BMI 计算、血压分级、15 项指标逐一比对参考范围 | 生成 2-3 句体检概况摘要 |
assess_risk | 按心血管/代谢/肝脏/肾脏四维度加权评分 | 生成 3-5 句风险推理说明 |
generate_advice | 基于风险分和异常指标生成建议框架 | 生成总结摘要、复查计划、注意事项 |
八、Planner Skills的规划与容错
Planner 是整条链路的入口,如果它出了问题,后面全白做。框架在这里设计了两层保护。
Plan 模式:一次性生成完整计划
把所有可用 Skill 的描述传给 LLM,让它一次性输出步骤序列。每个步骤包含 Skill 名称、子任务描述和置信度——低于 0.5 的步骤自动过滤,避免 LLM 硬凑不靠谱的步骤。
RePlan 模式:执行中动态重规划
当某一步失败时,不是直接报错崩溃,而是启动 ReAct 风格的重规划——LLM 看到"原始请求 + 当前执行状态 + 失败原因",做出三选一决策:

重试时也通过重新构建输入——Scratchpad 里已经记录了失败信息,重构后的输入会自动包含错误上下文,帮助 LLM 避开同样的坑。
演示:一次完整的链式执行过程
用户说:「帮我分析体检报告并给出建议。」
Phase 0 — 初始化上下文、加载 Skills
| __main__ — Skills 目录: /xxx/agent-design-sample/AgentSkills/skills| utils.skill_loader — 已加载 Skill: <Skill 'assess_risk' triggers=['风险评估', '健康风险', '疾病风险', '风险分析', '健康评分'] modes=0>| utils.skill_loader — 已加载 Skill: <Skill 'generate_advice' triggers=['健康建议', '调理建议', '怎么改善', '注意事项', '保健方案', '体检建议'] modes=0>| utils.skill_loader — 已加载 Skill: <Skill 'parse_report' triggers=['体检报告', '体检数据', '解析报告', '检验结果', '化验单', '体检解读'] modes=0>| utils.skill_loader — 共发现 3 个 Skill: ['assess_risk', 'generate_advice', 'parse_report']| __main__ — 已加载 3 个 Skill: ['assess_risk', 'generate_advice', 'parse_report']
Phase 1 — Planner 规划 Skills
Planner 收到用户输入 + 可用 Skill 列表,调用 LLM 生成计划:
{ "intent": "体检报告全流程分析", "steps": [ {"skill": "parse_report","sub_task": "解析体检报告数据","confidence": 0.95}, {"skill": "assess_risk","sub_task": "评估健康风险","confidence": 0.92}, {"skill": "generate_advice", "sub_task": "生成个性化健康建议","confidence": 0.90} ]}
Phase 2 — 链式执行 Skill

-
步骤 1 parse_report_skill 是链的起点——规则引擎完成 BMI、血压、指标比对等确定性计算,LLM 负责生成摘要,结果通过字典通道(context[“parse_report_skill”])和文本通道(Layer2.step_1)同时输出
-
步骤 2 assess_risk_skill 优先从字典通道读取步骤 1 的结构化数据,规则引擎按心血管/代谢/肝脏/肾脏四维度加权评分,LLM 生成风险推理说明
-
步骤 3 generate_advice_skill 同时消费前两步的结构化输出,规则引擎生成具体建议条目,LLM 包装为自然语言摘要和复查计划
Phase 3 — 最终返回

- Synthesizer 综合输出 读取 Layer1 原始请求 + Layer2 三步结果,不是机械拼接,而是像医生一样生成连贯的自然语言回答:「根据您的体检报告,总体来看……需要重点关注的是……建议您……」
Agent Skills 与 Multi-Agent 的对比
最后简要做一个对比,帮助读者在实际工程中做出选择。
| 对比维度 | Agent Skills | Multi-Agent |
|---|---|---|
| 核心范式 | 单体智能体 + 可扩展能力模块 | 多智能体系统 + 任务分发与协作 |
| 上下文 | 共享,渐进式披露,精准裁剪 | 隔离,各 Agent 独立上下文,通过消息传递 |
| 通信成本 | 低——所有"思考"在单次模型调用内部完成 | 高——每次 Agent 间调用都是独立模型调用 |
| 调试 | 审计日志 + 结构化追踪,因果链一目了然 | 需翻消息日志,跨 Agent 问题定位困难 |
| 典型 token 消耗 | 6,000 - 10,000 | 15,000 - 25,000 |
| 适合场景 | 线性串行、依赖链清晰、单模型可覆盖 | 需要并行/对抗/异构模型/信息隔离 |
两者不是非黑即白。选择取决于你的任务需要"强化个人"还是"建设团队":
- 任务是线性流程、各步依赖前步输出 → Skills
- 需要多角色对抗/辩论/并行 → Multi-Agent
- 需要调用不同特性的模型 → Multi-Agent
- 涉及隐私/信息隔离 → Multi-Agent
- 技能数量极大(50-100+)→ 考虑分层 Skills 或转向 Multi-Agent
十二、设计原则提炼
回头看这个框架,五条原则值得带走:
1. Skill 上下文隔离 — 用户输入、工作记忆、环境信息各自独立,每个组件只操作自己需要的层。这不只是代码整洁,更是防止多步执行中信息混乱的根本手段;
2. Skill 渐进式披露 — 每一步只看到最小必要上下文:自己的 sub_task + 累积的前置结果。Token 消耗线性增长而非指数增长。这是控制成本和保证精度的关键;
3. Skill 结构化契约 — Skills 之间用 TypedDict schema 定义数据格式,不是自由文本传话。字典通道优先、文本通道兜底,兼顾精度和灵活性;
4. Skill 执行引擎 — 确定性计算交给代码,自然语言生成交给 LLM。各取所长,杜绝"让 LLM 做计算"的不确定性风险;
5. Skill 全链路可审计 — 每次 read / write / compress 操作自动记录。不是锦上添花,是生产环境的刚需——你必须能解释 AI 为什么给出这个建议;
写在最后
Agent 框架的设计,本质上是在选择正确的抽象层次:
- 太低(纯 LLM 调用):所有逻辑塞在一个 Prompt 里,不可维护
- 太高(Multi-Agent):引入了通信、协商、一致性等你可能不需要的复杂度
- 刚好(Coordinator + Skills):有结构化的编排,但没有过度的抽象
Claude 的 Artifacts、Cursor 的 Agent 模式,本质上都是这个思路——一个核心循环,按需调用不同的能力模块。
Multi-Agent 是手段,不是目的。 当你的任务是确定性的线性流程时,一个好的编排器 + 一组设计良好的 Skills,就是最优解。
就像程序员老张的体检报告——不需要三个医生会诊,一个主治医生按流程做就好。关键是流程清晰、数据准确、每一步可追溯。这就是 Agent 设计的手艺。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包:
- ✅ 从零到一的 AI 学习路径图
- ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
- ✅ 百度/阿里专家闭门录播课
- ✅ 大模型当下最新行业报告
- ✅ 真实大厂面试真题
- ✅ 2026 最新岗位需求图谱
所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》,下方扫码获取~

① 全套AI大模型应用开发视频教程
(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)

② 大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

③ 大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

④ AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

⑤ 大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

⑥ 大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

以上资料如何领取?

为什么大家都在学大模型?
最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

不出1年,“有AI项目经验”将成为投递简历的门槛。
风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!


这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


以上全套大模型资料如何领取?

更多推荐



所有评论(0)