简介:智能体 Skill 设计模式,是把领域知识、输出结构、校验规则与流程约束封装成"可检索、可渐进加载"的技能单元的标准化工程范式。本文系统解释它的定义、上下文与 Token 优化原理,逐一拆解工具包装器、生成器、校验器、路由器、编排器五类模式的构造方式与选型方法,并厘清它与工具调用、提示词模板、检索增强等概念的边界,帮助开发者写出高质量、可治理的 Agent Skill。
Skill(技能) 指的是一种以声明式文件形式封装的能力包。它通常由四部分构成:一组元数据(名称、描述、触发条件)、一段面向智能体的指令正文、若干按需引用的参考资料,以及可选的脚本或模板资产。技能本身不是一个函数,也不必然携带可执行代码;它的本质是把”某类任务该怎么做”这件事,写成智能体在运行时能够读取、判断并遵循的说明。
Skill 设计模式 则是对技能组织方式的抽象。它规定三件具体的事情:技能目录如何分层、职责边界如何切分、知识在什么时候被加载进上下文。换句话说,它解决的不再是”写什么内容”,而是”用什么结构承载内容”,从而让技能在触发准确率、Token 消耗和可维护性上获得稳定表现。
这个定义可以从三个视角理解:
智能体在实践中最典型的成本浪费,来自两个方向。
第一是意图猜测成本。 当技能描述含糊、缺少业务关键词时,模型无法判断当前请求是否该激活这项能力,于是选择反复澄清、试探性执行、或者干脆给出通用回答。每一轮试探都会在上下文中累积,最终把大量 Token 花在”搞清楚用户到底要什么”上,而不是花在解决问题上。
第二是表达冗余成本。 很多团队把编码规范、命名约定、输出格式要求一股脑写进系统提示词,甚至让同一份规范在多个会话中被重复注入。这些内容与当次任务无关时属于纯开销;更糟的是,长篇规范会稀释关键指令的注意力权重,反而降低遵循率。
结构化技能设计针对的正是这两点,其价值可以归纳为四条:
理解设计模式,关键是理解知识分几层、按什么顺序进入上下文。业界实践中普遍采用四级结构:
| 层级 | 内容 | 加载时机 | 体积要求 |
|---|---|---|---|
| L0 元数据 | 名称、描述、触发/不触发条件 | 始终驻留,参与路由判断 | 极短,一行到两行 |
| L1 技能正文 | 激活规则、执行步骤、索引指向 | 技能命中后加载 | 中等,聚焦指令 |
| L2 参考资料 | 规范细节、检查清单、风格指南 | 正文指明按需读取 | 可较长,建议分片 |
| L3 资产与脚本 | 模板文件、校验脚本、样例数据 | 实际执行阶段读取或调用 | 不占文本上下文 |
一个典型的目录形态如下:
my-skill/├── skill.md # 元数据 + 激活指令 + 索引├── references/│ ├── conventions.md # 规范与约定│ └── checklist.md # 可判定的检查项├── assets/│ └── template.md # 输出结构模板└── scripts/└── validate.* # 可选的确定性校验
技能主文件通常只包含元数据与激活指令,形态类似(示意性写法,具体加载指令名依运行时而定):
---name: api-design-conventionsdescription: 用于统一接口设计规范。当需要设计或评审接口路径、字段命名、分页与错误码约定时触发;纯前端样式问题不触发。---# 接口设计规范技能## 激活规则1. 读取 `references/conventions.md`,以其约定为准2. 若涉及交付文档,读取 `assets/api-doc-template.md` 填充结构3. 交付前执行 `scripts/validate` 自检,并按 `references/checklist.md` 逐项核对## 冲突处理若用户显式要求与本规范冲突,先说明差异与影响,再按用户选择执行。
其中 description 字段的作用等同于搜索索引:它必须包含具体的业务关键词和明确的反例边界。写得过于宽泛,技能会污染其他任务的上下文;写得太窄,则永远命中不了。
核心理念:技能只封装知识,不携带脚本与模板。技能正文通过资源加载指令引入 references/ 下的规范文档,智能体读取并应用其中的约定,就在特定领域内表现出专家水准。这是一种纯知识封装形态。
结构要点:技能主文件负责触发与加载,参考文档负责全部实质内容。规范必须可判定——每条约定都应给出正反示例,而不是”应该优雅””尽量简洁”这类无法核对的表述。
适用场景:框架路由与目录约定、接口响应模型规范、基础设施即代码的资源命名与模块化边界、关系型数据库的索引与查询改写基线、组织内部的设计与提交规范。
关键注意:参考文档要按主题分片,避免单文件过大导致一次性加载又把上下文撑满;规范应与代码或配置的真实基线保持同源,防止文档漂移。
核心理念:资产模板决定”输出什么结构”,参考风格指南决定”怎么写”。前者强制骨架完整,后者保证表达质量。二者分工明确,互不替代。
结构要点:模板中应包含明确章节标题、占位符和填写约束;风格指南应写成可核对的清单(人称、时态、术语表、单位、图表规范、禁用词),而非抽象审美描述。
适用场景:需求与评审报告、变更与复盘文档、接口文档、测试用例集、交付说明、例行运营周报。
关键注意:结构约束越强,输出越容易被下游系统解析或入库,但也越容易在内容复杂时被”填模板”扭曲。建议为模板留出扩展章节,并规定模板冲突时的处理顺序。
核心理念:把审查经验从”评审者的判断”变成”可执行的判定”。技能输出不再是散文式意见,而是结构化的发现列表。
结构要点:检查清单原子化,每项包含判定条件、严重级别与修复方向;确定性问题交给脚本,语义性问题交给模型判断;输出格式固定为”位置 + 问题 + 依据 + 建议 + 级别”。区分阻断项与建议项,避免所有意见等权造成噪声。
适用场景:提交前代码规范审查、配置与安全基线检查、数据质量与口径一致性核查、文档合规检查。
关键注意:规则数量要有上限并分组,一次会话只加载当前变更范围相关的分组;对模型判断项要保留”无法确认”选项,防止为了给出结论而虚构问题。
核心理念:当技能数量增长到十几项以上,问题就从”怎么写技能”变成”如何选对技能”。路由技能本身不产生业务答案,只负责分派。
结构要点:显式维护一张分派表,列出意图类别、匹配关键词、目标技能与优先级;相邻技能的 description 应保证互斥或明确主从关系;对无法匹配的请求定义兜底策略(澄清提问或默认路径)。
适用场景:多领域支持助手、多语言多框架的代码助手、运维排障入口、跨业务线的企业内助手。
关键注意:路由层要避免上下文膨胀——它只应加载技能清单的极简摘要,而不是全部技能正文;同时要为高频误路由建立观测指标,因为路由错误会以很高的成本被放大到后续步骤。
核心理念:当任务需要多个步骤、跨多个技能与工具时,靠模型自行决定顺序会带来不可重复的失败模式。编排技能把流程固化,保留必要的人工确认与回退点。
结构要点:每个步骤声明输入、输出契约与失败处理;关键副作用前设置检查点;步骤设计尽量幂等,支持从断点续跑;明确哪些环节必须等待人工确认。
适用场景:发布与变更流程、数据分析到报表输出的链路、工单受理与闭环、批量迁移作业。
关键注意:编排技能的复杂度增长很快,应遵循”先固定主干、再放开分支”的原则。若某些步骤高度依赖临场判断,不要强行写死,而是交由下层技能处理。
五类模式的取舍,可以从三个维度衡量:上下文成本(技能本身常驻与加载的开销)、输出可控性(结构约束的强度)、失败代价(走错路径的影响范围)。
实际系统往往是组合使用:由路由器分派,命中生成器产出交付物,再由校验器自检,涉及多步骤时叠加编排器。组合的关键是保持每个技能职责单一,不要让一个技能同时承担生成与判定——否则模型会倾向于自我确认。
与工具/函数调用:工具提供的是可执行动作,技能提供的是关于”如何做”的知识与约束。技能可以声明何时调用哪个工具,但技能本身不是函数。
与提示词模板:模板是一次性填充的静态文本,用完即弃;技能是可检索、可复用、可版本管理的资产包,且支持分层加载。把技能当成模板用,等于放弃了渐进加载带来的成本优势。
与检索增强:检索增强面向开放的、体量巨大的语料,按相似度召回片段;技能面向已固化的、确定性的规范与流程,靠显式引用定位。二者互补——技能内部的参考资料本身也可以建立检索索引,用于规范条目较多的场景。
与子智能体:技能运行在当前上下文内,改变的是行为方式;子智能体拥有独立上下文,隔离的是上下文占用。规范类知识优先做成技能,只有在上下文压力确实过大时才考虑分派子智能体。
与插件/扩展:插件强调可分发、可安装的生命周期管理;技能更轻量,通常随代码仓库一起演进。企业内落地时,两者常共用同一套元数据规范以便统一治理。
description 应写清触发场景、关键业务词、以及不触发的情况。这是投入产出比最高的一处修改,值得单独做命中率测试。Skill 设计模式的定义可以收束为一句话:它是关于”能力如何被描述、如何被触发、如何按需加载、如何约束输出”的一套标准化结构约定。它不产生新的模型能力,而是通过结构化把已有能力更稳定地释放出来——减少模型对模糊意图的猜测,避免无关知识的持续注入,让团队规范从文档变成可执行资产。
五类模式各有边界:工具包装器管知识,生成器管结构,校验器管判定,路由器管选择,编排器管流程。选型的正确顺序是先明确任务的主要失败点——是选错了能力、还是输出不合规范、还是流程不可靠——再选择对应模式,而不是先挑模式再套业务。
需要明确的适用边界是:技能设计模式优化的是确定性与成本,而不是模型的推理上限。当任务本质上依赖开放域知识或长链条推理时,靠堆叠技能无法替代模型能力与架构设计。在百度智能云等平台的智能体开发实践中,把技能目录、元数据规范与评估指标一并纳入工程基线,通常比单纯增加提示词长度更能带来稳定的效果改善。