2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

AI Agent 的 Skill 系统设计

发布日期:2026-07-01 17:46:12 浏览次数: 1520
作者:大淘宝技术

微信搜一搜,关注“大淘宝技术”

推荐语

结构化设计让 AI Agent 行为更可控,本文系统讲解 Skill 系统的核心设计原则与工程实践。

核心内容:
1. Skill 系统的设计理念与结构化方法
2. 在有限上下文下的高效加载与执行策略
3. 确保行为合规的测试方法与演进方向

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

本文系统阐述了 AI Agent Skill 系统的设计理念与工程实践,核心观点是将 Skill 视为“行为编程”而非文档,旨在通过结构化设计(YAML+Markdown、DOT 流程图、检查表)和严格的约束机制(门控、合理化防御、说服原则)来规范 AI 代理的行为。文章详细探讨了在有限上下文窗口下的 Token 经济策略,包括基于触发条件的发现机制、两阶段加载及声明式引用;提出了单向管道工作流编排、子代理上下文隔离及分级模型选择方案;强调了基于 TDD 理念的 Skill 测试方法,即通过压力场景观测并封堵代理的违规行为;最后总结了跨平台适配策略及从“建议”走向“强制”、从“手动”走向“自动”的演进教训,旨在构建高合规性、低成本且可维护的 AI 代理技能体系。


Skill 的价值是把期望行为转化成 Agent 能稳定执行的工作流。一个好的 Skill 要同时解决四件事: 

  1. 让 Agent 在正确场景发现它

  2. 用最少上下文加载必要信息

  3. 按任务风险设置合适的自由度

  4. 并通过真实任务验证它是否改变了行为。

本文的重点是如何写好能被 Agent 正确触发、正确执行、可持续维护的 Skill。



图片

先定义目标:Skill 是能力包,不是知识库


Skill 可以被理解为一个自包含的能力包。它通过 SKILL.md、脚本、引用资料和资产,把一个通用 Agent 转化为在特定任务上更可靠的专用 Agent。


它通常提供四类能力:


能力
说明
示例

专用工作流

多步骤、可复用的任务流程

写技术方案、处理 PR 评论、生成报告

工具集成

使用特定文件格式、API 或 CLI 的方法

处理 PDF、调用 GitHub、操作表格

领域知识

业务规则、数据口径、组织约定

公司指标口径、内部权限边界

捆绑资源

脚本、模板、参考资料、素材

scripts/references/assets/


Skill 面向的是 Agent,它会在上下文不足、任务复杂、目标冲突或执行压力下走捷径。因此,Skill 必须预设这些失败模式,并把正确路径写成更容易被执行的行为结构。

因此,Skill 不是把人类已经知道的背景知识完整搬进去,而是补充 Agent 完成任务时缺少的程序性知识、资源边界和验证方式。换句话说,写 Skill 不是“把说明写清楚”,而是“让 Agent 在复杂环境中更难走错”。


一个有效的 Skill 要影响 Agent 的完整行为链路:

  • 什么时候发现这个 Skill

  • 什么时候加载完整正文

  • 哪些信息继续按需读取

  • 哪些动作必须先做

  • 哪些行为绝对不能发生

  • 如何证明任务真的完成

  • 什么时候需要停下来请求人类判断


如果一个 Skill 只在模型状态好、上下文充足、任务简单时生效,它更像提示词模板。高质量 Skill 应该能在任务复杂、信息不完整、执行压力和合理化冲动下,把 Agent 拉回正确路径。


按上下文预算组织内容:
元数据、正文、资源三层加载


Skill 设计的第一条工程原则是:上下文窗口是公共资源。

Agent 执行任务时,上下文窗口要同时容纳系统提示、用户请求、对话历史、已触发 Skill、工具结果、代码片段和中间推理。Skill 多占一个 token,其他上下文就少一个 token。所以写 Skill 时要默认 Agent 已经很聪明,只补充它不知道、但完成任务必须知道的内容。


每一段内容都应该经受两个问题的挑战:

  • Agent 真的需要这段解释吗?

  • 这段内容值得它占用的 token 成本吗?


这也是为什么 Skill 应该采用渐进披露,而不是把所有信息塞进一个长文件。


一个标准 Skill 目录通常长这样:


skill-name/SKILL.mdagents/openai.yamlscripts/references/assets/


其中只有 SKILL.md 是必需的,其余资源按需要添加。




SKILL.md 的 frontmatter 和正文要承担不同职责:


---name: create-skilldescription: 用于创建或更新包含工作流、工具集成、领域知识、脚本、参考资料或资产的 Agent Skill。---# 创建 Skill流程:1. 理解具体示例。2. 规划可复用资源。3. 初始化 Skill。4. 编辑 SKILL.md 和相关资源。5. 验证。6. 结合真实使用持续迭代。


name 和 description 是发现层。正文是执行层。这两层不要混在一起。

description 应该包含“这个 Skill 做什么”和“什么时候使用它”,因为 Agent 只有在触发后才会读取正文。如果把触发条件放在正文里的 When to Use,Agent 在决定是否触发时根本看不到。但 description 也不能变成完整工作流摘要。它的职责是让 Agent 正确加载正文,而不是让 Agent 读完描述就开始凭印象执行。


命名同样属于发现机制的一部分。一个好的 Skill 名称应该短、可触发、动词优先:



这些细节看起来像命名规范,本质上是路由质量。Agent 在一个不断增长的技能库里找能力,name 和 description 就是它的第一层索引。


把可复用部分外化:
脚本、引用和资产各司其职


创建 Skill 时,不应该一开始就写长篇 SKILL.md。更好的路径是先看具体例子,然后判断哪些东西值得变成可复用资源。



当同一段代码会被反复重写,或者任务需要确定性时,放进 scripts/


pdf-editor/SKILL.mdscripts/rotate_pdf.py


脚本的价值不是“让目录更丰富”,而是减少上下文消耗和行为漂移。让 Agent 每次临时生成 PDF 旋转代码,和让它调用一个已经验证过的脚本,是完全不同的可靠性水平。


当信息是任务执行时需要查阅的知识,而不是每次都必须读的流程,就放进 references/


big-query/ SKILL.md references/ schema.md finance.md product.md


如果用户问销售指标,Agent 只需要读 sales.md 或对应领域文件,不应该同时加载财务、产品、市场的所有规则。这就是渐进披露在真实 Skill 中的价值:信息可发现,但不抢占上下文。


当文件不会被读入上下文,而是作为输出材料被复制、修改或引用时,放进 assets/


frontend-webapp-builder/ SKILL.md assets/ hello-world/



例如模板工程、字体、图片、PPT 模板、品牌素材都属于资产。它们不是给 Agent 阅读的长文本,而是给最终产物使用的材料。

资源组织还有一个容易被忽略的原则:信息只放一个地方。不要在 SKILL.md 和 references/ 中重复同一段规则。重复会带来漂移,漂移会让 Agent 在两个版本之间自行解释,最后把维护成本转化成执行风险。


按任务风险设置自由度:
文本、模板、脚本和门控


Skill 不是越详细越好,也不是越开放越好。关键是让自由度匹配任务的脆弱度和变化空间。

可以把 Skill 的控制方式分成三档:



例如: 

  • 写技术文章:适合高自由度,用结构原则、语气规则和示例引导。

  • 查询内部指标:适合中自由度,用 SQL 模板和字段说明控制口径。

  • 旋转 PDF、转换格式、生成固定报告:适合低自由度,用脚本保证确定性。


一个常见错误是把脆弱操作写成开放建议,导致 Agent 每次重写一遍容易出错的逻辑。另一个错误是把本该依赖判断的任务写成死流程,导致 Skill 在真实场景里僵硬、不可迁移。

在低自由度任务里,门控尤其重要。Skill 如果只写“建议先做 A”,Agent 很可能直接进入 B。门控的作用是:在条件满足前,明确禁止后续动作。


HARD-GATE>在理解具体使用示例并规划好可复用资源之前,不要创建或编辑该 Skill。HARD-GATE>


常见门控包括:



门控不是语气问题,而是执行边界。它能减少 Agent 的解释空间,让 Skill 在关键路径上更像程序,而不是建议。


把流程写成可执行路径:

从例子到 Skill 的创建循环


一个稳妥的 Skill 创建流程可以拆成六步:

  1. 理解具体使用例子

  2. 规划可复用资源

  3. 初始化 Skill

  4. 编辑 SKILL.md 和资源

  5. 验证 Skill

  6. 基于真实使用迭代

这条流程的重点不是“先写一个漂亮的说明”,而是先建立使用边界。

不要从抽象能力开始写 Skill。先问:

  • 用户会怎么触发它?

  • 哪些请求应该触发?

  • 哪些请求不应该触发?

  • 任务输入是什么?

  • 成功输出是什么?

  • 哪些步骤最容易出错?


例如做一个 pdf-editor Skill,应该先收集“旋转 PDF”“合并 PDF”“提取页面”等具体请求,再决定是否需要脚本。没有具体例子,很容易写出宽泛但不可执行的 Skill。

对每个例子,从零执行一遍,识别可复用部分:



当 Skill 包含非线性判断、循环、回退或容易提前终止的步骤时,流程图比纯文本更稳定。GraphViz DOT 是一个适合嵌入 Markdown 的轻量格式:


digraph {"是否有具体使用例子?" [shape=diamond];"收集或生成例子" [shape=box];"规划 scripts/references/assets" [shape=box];"编写 SKILL.md" [shape=box];"运行 quick_validate.py" [shape=box];"完成" [shape=doublecircle];"是否有具体使用例子?" -> "规划 scripts/references/assets" [label="yes"];"是否有具体使用例子?" -> "收集或生成例子" [label="no"];"收集或生成例子" -> "规划 scripts/references/assets";"规划 scripts/references/assets" -> "编写 SKILL.md";"编写 SKILL.md" -> "运行 quick_validate.py";"运行 quick_validate.py" -> "完成";}



复杂流程还需要编号检查表,并要求 Agent 外化进度。否则,Agent 很容易执行前几步后忘记后面的验证和迭代。


初始化 Skill 时,应使用初始化脚本,而不是手写目录结构:


scripts/init_skill.py my-skill --path"${CODEX_HOME:-$HOME/.codex}/skills"


如果需要资源目录:


scripts/init_skill.py my-skill --path"${CODEX_HOME:-$HOME/.codex}/skills" --resources scripts,references


初始化脚本的意义是减少结构错误,并生成符合规范的模板。之后再替换占位内容,删除不需要的示例文件。


验证不是收尾动作:
保护测试完整性,防止合理化


Skill 不应该一次写完就冻结。它的质量来自真实行为反馈,而不是作者对流程的想象。


完成后首先运行基础验证:


scripts/quick_validate.py


基础验证至少应覆盖:

  • YAML frontmatter 是否合法

  • name 和 description 是否存在

  • 命名是否符合规则

  • 资源目录是否合理

  • 脚本是否能运行

  • UI 元数据是否与 SKILL.md 同步

格式验证不能证明 Skill 一定好用,但可以先排除低级错误。复杂 Skill 还需要前向测试。可以用子代理模拟真实用户任务,但要把它当成评估面,而不是审稿人。


正确做法:


使用位于 /path/to/skill-x 的 @skill-x 来解决问题 y。


不好的做法:


审查这个 Skill。我认为它存在问题 A,预期的修复方案是 B。


后者会泄露诊断和预期答案,测试结果会被污染。前向测试应该给子代理原始任务、原始材料和最少必要上下文,让它像真实使用者一样执行。

验证时应优先使用原始证据:

  • 示例 prompt

  • 输出文件

  • diff

  • 日志

  • 行为轨迹

  • 失败截图

  • 测试结果


如果子代理只有在看到你的结论后才能成功,说明 Skill 本身还不够清楚,或者测试设置已经泄露答案。

这里还要处理一个 Agent 特有的问题:合理化。AI Agent 在压力下会给跳过规则找到听起来合理的理由。Skill 需要提前写出这些借口,并给出反驳。




审查循环也应该围绕真实失败风险,而不是措辞偏好:


写或修改 Skill-> 运行格式验证-> 用真实任务前向测试-> 是否存在会导致任务失败的问题?-> 是:修复并重测-> 否:交付


应该阻塞的问题包括触发条件模糊、资源引用缺失、脚本不可运行、验证流程缺失、自由度设置错误、关键信息重复且容易漂移。不应该阻塞的问题包括纯粹风格偏好、不影响执行的标题顺序、可以由 Agent 自行判断的轻微表达差异。


处理生态边界:发现、依赖和平台适配


当技能库变大后,发现机制会成为第一瓶颈。description 是路由器,不是教程。


它应该覆盖:

  • Skill 做什么

  • 何时使用

  • 典型触发词

  • 相关症状

  • 输入或任务类型

但不要写完整执行流程。


错误写法:


description: "创建 Skill 时先收集例子,再规划 scripts/references/assets,然后运行 init_skill.py,最后 quick_validate.py。"


更好的写法:


description: "用于创建或更新包含专用工作流、工具集成、领域知识、捆绑脚本、参考资料、资产、验证或迭代机制的 Agent Skill。"


前者让 Agent 可能只凭描述执行,跳过正文。后者让 Agent 知道应该触发,但仍需要加载正文获取完整流程。


Skill 之间也可以互相引用,但应该声明关系,而不是硬编码路径或强制加载大文件:


**必需子 Skill:** 创建新 Skill 前,先使用 skill-x。**推荐:** 如果要将其发布为开发者文章,使用 skill-y。**另见:** openai_yaml.md,了解 UI 元数据字段。


引⽤可以分为三层:



不要用一次性强制加载大量内容的方式组合 Skill。那会破坏渐进披露,也会让组合 Skill 的成本失控。

最后是平台适配。不同平台的工具名、hook、插件机制和子代理能力可能不同。Skill 应该尽量写行为规则,再用平台层适配具体工具。


例如:


- TodoWrite -> todowrite- Task tool -> @mention subagent system- Skill tool -> native skill tool


平台能⼒不⾜时,应优雅降级:



这能让 Skill 更可迁移,也更容易维护。真正应该稳定的是行为规则,而不是某个平台的私有工具名。


交付前自查:反模式和检查表


很多 Skill 失败,不是因为作者不知道领域知识,而是因为它把人类文档的写法带到了 Agent 执行系统里。

常见反模式如下:



交付前可以⽤这张表⾃查:



如果这张表里有多项答不上来,Skill 还不是能力包,只是一份草稿。


结论:好 Skill 是小而准的行为系统


写 Skill 不是把最佳实践整理成 Markdown。真正的 Skill 设计要回答三个问题:

  1. Agent 在什么情况下应该发现并加载它?

  2. Agent 应该获得多少⾃由度,哪些部分必须被脚本或⻔控固定?

  3. 我们如何⽤真实任务证明它确实改变了⾏为?


核⼼的提醒是:Skill 要简洁、分层、可验证、可迭代。上下⽂窗⼝是公共资源, SKILL.md 只放核⼼流程;脚本承接确定性,引⽤承接领域知识,资产承接输出材料;复杂 Skill 要通过真实任务前向测试,⽽不是靠作者⾃信。


因此,Skill 是 Agent ⾏为设计的⼀种⼯程⽅法。它把触发、加载、执⾏、约束、验证和迭代组织在⼀起,让通⽤ Agent 在特定任务上获得更稳定的专业⾏为。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅