Skip to content

创建和维护可复用的 Skill

在智能体开发服务平台(AgentWorks)中,Skill 是包含 SKILL.md 和相关文件的版本化工作说明包。例如,一个数据交付验收 Skill 可以同时保存验收步骤、字段检查清单、错误分类规则和报告示例;智能体只在处理相关任务时加载这些内容,不必把整套方法始终放在系统提示词中。

Skill 不是可直接执行的工具;它为智能体提供完成任务的方法和资源。需要调用 API、运行命令或执行脚本时,还要为智能体配置相应的 MCP、平台工具包、用户工具包或沙箱。

只有关联了技能组的智能体才能使用其中的 Skill。技能组提供候选 Skill;智能体真正读取 Skill 时,运行时再根据 stablelatest 标记解析版本。技能组不会在每次请求中自动激活组内全部 Skill。

判断任务是否适合使用 Skill

当一套任务方法需要复用、按需加载、随文件一起管理或保留明确版本时,使用 Skill。根据任务真正缺少的能力选择合适方式:

任务需要优先选择原因
每次请求都必须遵守的简短行为规则系统提示词规则始终进入智能体上下文,不需要按任务选择
只在特定任务中使用的步骤、方法、检查清单或模板Skill智能体可以根据任务按需加载,并按版本复用
从大量资料中检索事实或原文知识库知识库用于检索内容,Skill 用于说明怎样完成任务
调用外部 API、业务系统或服务MCP、平台工具包或用户工具包工具执行操作,Skill 可以说明何时以及怎样调用它
运行命令、脚本或处理文件沙箱沙箱提供执行环境;Skill 可以提供脚本、步骤和输入说明

一个任务可以同时使用 Skill 和其他能力。例如,Skill 可以说明如何检查 CSV 文件,沙箱负责实际运行检查脚本,MCP 负责把验收结果写回外部系统。

理解智能体如何使用 Skill

Skill 不会因为已经创建就自动进入智能体。先把 Skill 加入技能组,再把技能组实例或模板关联到智能体模板。智能体处理请求时,会根据可用 Skill 的名称和描述判断是否需要加载其中一个;确定需要后,运行时再解析并读取相应版本。

图表预览

三个分栏依次展示 Skill 的提供与选择、内容加载和操作执行。每个分栏中的判断都是可选分支:当前请求不一定需要 Skill,激活后不一定需要读取其他资源,处理任务时也不一定需要调用工具或沙箱。

创建或导入 Skill

可以在控制台中从零创建 Skill,也可以导入 ZIP 或从 Skills 广场克隆已有内容。无论从哪里取得内容,都应先完成审查,再提供给智能体使用。

  1. 打开 Skills 管理

创建一个 Skill

  1. 选择 新建 Skill,填写便于识别的名称和描述,并提供初始 SKILL.md

  2. 选择 创建,再打开新建的 Skill。

    注意

    创建 Skill 时会自动生成 v1

    AgentWorks 会同时创建 Skill 和它的第一个版本 v1。新建表单中的 SKILL.md 内容会保存到 v1;即使没有填写内容,仍会生成一个内容为空的 v1v1 会成为当时的 latest,因此不需要为了完成首次创建再选择一次 新版本

  3. 确认版本列表中已经显示 v1

  4. 需要附带其他资源时,在 文件 中上传文件,或通过 新建文件 创建文本文件。

  5. 检查 SKILL.md 中引用的相对路径能够找到 v1 中的对应文件,再把这个 Skill 加入测试技能组。

文本文件可以在线编辑和删除;二进制文件不能在线编辑。脚本文件可以作为 Skill 资源保存,但不会因为上传到 Skill 而自动执行、安装依赖或注册为工具。

创建新版本

新版本号由平台自动递增,不能手动填写。例如,当前最高版本是 v1 时,下一次创建、克隆或上传得到的版本就是 v2。新版本会成为 latest;此前的版本仍然保留,但不再带有 latest 标记。

Skill 详情中的版本选择、latest 和 stable 标记以及版本文件列表

将当前编辑的 SKILL.md 保存为新版本

  1. 打开目标 Skill,并在左侧选择要作为参考的版本。

  2. 打开 SKILL.md,确认编辑器中是新版本需要保存的完整内容。

  3. 选择 新版本

    注意

    “新版本”不会复制其他文件

    这项操作只使用当前编辑器中的 SKILL.md,不会把当前版本中的脚本、配置、图片或参考文件带入新版本。需要沿用全部文件时,请取消操作,改为选择当前版本的 克隆;平台会把 SKILL.md 和其他文件一起复制到下一个版本。

  4. 按需填写新版本信息:

    • 描述:说明本次版本修改了什么,便于以后选择和回退。
    • 分支:记录该版本对应的代码分支或维护线;这个字段只保存说明,不会连接或同步 Git 分支。
    • 创建人:记录本次版本的维护者。
    • 标记为 stable:表示团队把这个版本标记为稳定版本。只在完成内容审查和测试后选择。

    这些字段均为可选字段。版本号和 latest 状态由平台自动设置。

  5. 确认后创建版本。

  6. 打开新版本,核对版本号、SKILL.md 和文件列表,再在不会影响现有使用者的环境中验证。

上传 ZIP 作为新版本

  1. 准备 ZIP。推荐让 SKILL.md 直接位于 ZIP 根目录,并把脚本、配置和参考资料放在相对于它的子目录中:

    language-text
    skill-version.zip
    ├── SKILL.md
    ├── scripts/
    │   └── run.py
    └── references/
        └── checklist.md

    ZIP 也可以只包含一个顶层目录,并把同样的结构放在该目录中,例如 my-skill/SKILL.md。不要在一份 ZIP 中放入多个 Skill 根目录。

  2. SKILL.md 第一行开始编写 YAML frontmatter。Frontmatter 是两条 --- 之间的版本元数据;后面的 Markdown 才是智能体读取的任务说明。例如:

    language-markdown
    ---
    name: data-validation
    description: 检查交付数据的结构和内容
    ---
    
    # 数据检查方法
    字段填写要求
    nameZIP 导入时必填。使用普通字符串,只能包含 3–32 位英文、数字、连字符(-)或下划线(_)。上传新版本时,建议与当前 Skill 的名称保持一致。
    description建议填写一句清楚的用途说明。使用普通字符串;平台不要求必填。
    其他字段只有相应功能文档明确说明时再使用。字段能够保存,不代表 AgentWorks 一定会读取或执行它。

    注意

    Skill 名称不取自 ZIP 文件名

    请继续使用 .zip 后缀,方便识别和选择文件。创建新 Skill 时,平台从 SKILL.mdname 读取名称;上传新版本时,版本会加入当前打开的 Skill。ZIP 文件名和外层目录名都不会改变 Skill 名称。

  3. 上传前检查 ZIP:

    • ZIP 中只保留一个 Skill 根目录。
    • SKILL.md 的大小写完全一致。
    • SKILL.md 位于 ZIP 根目录,或唯一顶层目录的根部。
    • SKILL.md 使用 UTF-8。
    • Frontmatter 的起止 --- 完整。
    • namedescription 都使用普通字符串。
    • 引用的脚本和资料位于同一 Skill 根目录,并使用相对路径。不要在 ZIP 条目中使用绝对路径或 ..
  4. 打开目标 Skill,选择 上传新版本,再选择准备好的 ZIP。

  5. 确认平台生成了下一个版本号,并检查 SKILL.md、相关文件和 latest 标记。

    注意

    上传成功后仍要检查 Skill 内容

    平台会检查 ZIP 是否可以读取、是否包含 SKILL.md,以及 name 是否符合格式要求。平台不会替你确认 SKILL.md 引用的文件是否存在、脚本是否安全可用,或所需工具是否已经提供给智能体。请打开新版本检查文件列表,再通过测试技能组验证。

需要快速取得可用的 ZIP 结构时,可以先对一个现有版本选择 导出 zip,在导出的文件中修改内容后,再作为新版本上传。

ZIP 上传失败时检查

  • 提示找不到 SKILL.md:检查文件名大小写和所在目录。
  • 提示缺少 name:确认 frontmatter 位于文件开头,并包含非空的 name
  • 提示名称格式不正确:改用 3–32 位英文、数字、连字符(-)或下划线(_)。
  • 提示 ZIP 无效:重新压缩 Skill 目录,不要上传其他归档格式或空文件。
  • 提示目标 Skill 不存在或无法访问:确认当前账号可以管理该 Skill,并从其详情页重新选择 上传新版本

通过 ZIP 或 Skills 广场创建 Skill

以下入口会创建另一个 Skill,而不是为当前打开的 Skill 增加版本。需要增加版本时,请使用前面的 上传新版本

  • Skills 管理 中,可以通过 导入 zip(新建 Skill) 创建 Skill。

  • Skills 广场 中搜索目标 Skill,再选择 克隆

导入或克隆后,逐个检查 SKILL.md、脚本、配置和附带文件。不要把密钥、个人数据或未经审查的可执行内容加入 Skill。广场提供发现和克隆入口,不表示内容已经通过当前租户的安全或业务审批。

需要在环境间审查或迁移时,可以通过 导出 zip 保存版本文件。导出物可能包含脚本和业务内容,请按组织的软件制品要求保存和传递。

编写便于准确激活的 Skill

智能体先根据 Skill 的名称和描述判断是否需要加载它,再读取运行时解析出的版本。名称和描述应明确区分任务;多个 Skill 的适用范围高度重叠时,智能体可能无法稳定选择预期 Skill。

SKILL.md 中写明:

  • 这个 Skill 适用于什么任务,以及不适用于什么任务。
  • 开始任务前需要具备哪些输入或前提条件。
  • 应按什么步骤完成任务。
  • 完成后应得到什么结果,以及怎样判断结果正确。
  • 需要读取哪些相关文件、文件中包含什么内容,以及何时使用。
  • 如果步骤依赖工具或沙箱,应调用什么能力并检查什么执行结果。

加入技能组后,分别使用明确匹配、不匹配以及可能匹配相邻 Skill 的输入进行测试。这样可以同时检查目标 Skill 能否被激活,以及它是否会在无关任务中被误选。

让运行中的智能体使用经过验证的 Skill 版本

把经过验证的版本设为 stable,可以控制运行中的智能体何时开始读取新内容。开始更新前,先确认当前已验证的版本已设为 stable。平台会把新建版本自动标记为 latest;在不影响现有使用者的环境中验证通过后,再把新版本设为 stable,相关智能体实例后续会优先读取它。

理解版本标记怎样影响模板和实例

智能体模板不会保存 stablelatest 标记。它引用技能组,技能组让从该模板创建的智能体实例获得相应的 Skill。智能体实例真正读取 Skill 时,运行时优先选择 stable;没有 stable 时,才选择 latest。因此,更改标记不会改写智能体模板或重新创建智能体实例,但可能改变所有相关实例后续读取到的内容。

图表预览

图中两个智能体实例都来自同一个智能体模板,并通过技能组获得同一个 Skill。版本标记不改变这条配置关系;它们只影响实例在运行时读取这个 Skill 时得到哪个版本。

比较版本操作的影响

操作对智能体模板的影响对相关智能体实例后续读取 Skill 的影响
创建 v2不修改模板v2 自动成为 latest;存在 stable 时仍优先读取原 stable,否则读取 v2
v1 设为 stable不修改模板优先读取 v1,即使其他版本是 latest
v2 设为 stable不修改模板后续优先读取 v2
取消当前 stable不修改模板没有其他 stable 时,后续改为读取当前 latest

注意

stable 由维护者确认

平台不会自动判断某个版本是否已经通过测试。stable 是人工维护的标记;设置后会一直影响运行时选择,直到维护者取消它或把其他版本设为 stable。创建候选版本时,建议先保留平台自动设置的 latest,完成内容检查和运行验证后,再选择 设为 stable

将新版本投入使用

  1. 确认当前经过验证的版本已经标记为 stable,避免新建候选版本后立即影响现有实例。
  2. 选择 新版本,创建候选版本;平台会自动生成版本号并将其标记为 latest
  3. 检查候选版本的 SKILL.md 和文件列表。
  4. 在不会影响现有使用者的测试环境中验证触发条件、执行步骤和结果。如果测试环境与生产环境共用同一个 Skill,请使用独立的测试 Skill 副本,避免为了测试而提前改变生产实例所使用的 stable
  5. 验证通过后,把候选版本设为 stable
  6. 使用目标版本独有的说明或资源执行代表性任务,确认相关智能体实例读取了预期内容。
  7. 如果需要回退,把此前经过验证的版本重新设为 stable,再执行回归验证。

将 Skill 提供给智能体

准备好 Skill 内容和版本后,把它加入技能组,再让智能体模板关联相应的技能组实例或模板。Skill 内容、技能组交付方式和执行能力是三个不同层次,应分别验证。

将 Skill 加入技能组

打开使用技能组为智能体提供一组 Skill,完成以下选择和操作:

  1. 选择让多个智能体实例共享一个技能组实例,还是分别生成独立技能组。
  2. 把目标 Skill 加入相应的技能组实例或模板。
  3. 把技能组实例或模板添加到智能体模板。
  4. 创建或更新智能体实例。

让智能体按需激活 Skill

技能组让智能体获得所选 Skill 的名称和描述。处理请求时,智能体可以选择并激活匹配的 Skill;真正读取内容时,运行时再按前述规则解析 stablelatest,并读取相应版本的完整 SKILL.md

一次请求不一定需要 Skill,也不会因为技能组中包含多个 Skill 而依次激活全部 Skill。需要稳定触发目标 Skill 时,请使用只有借助该 Skill 才能正确完成的测试输入。

读取 Skill 引用的资源

如果 SKILL.md 引用脚本、配置、参考资料或其他文件,智能体可以按相对于 Skill 根目录的路径读取运行时解析出的版本中的对应资源:

  • SKILL.md:提供任务步骤、适用条件、示例和边界。
  • 相关文本资源:在 Skill 说明需要时读取,作为完成任务的输入。
  • 脚本文件:可以读取内容,但不会因此自动执行、安装依赖或注册为工具。

SKILL.md 已经包含完成任务所需信息时,智能体不需要继续读取其他资源。

为 Skill 配置执行能力

Skill 资源读取和工具执行是两条独立路径:

  • 需要运行命令、脚本或处理沙箱文件时,配置沙箱,确认实际文件路径、运行时和依赖。
  • 需要调用外部工具服务时,配置 MCP平台工具包用户工具包
  • 只需要复用任务步骤、方法或模板时,可以只使用 Skill。

同一个智能体模板同时关联技能组和 沙箱 - 模板 时,所选 Skill 版本以只读方式挂载到沙箱的 /skills 目录;这个沙箱是随智能体实例新建的。直接关联已有 沙箱 - 实例 时,不会增加这项自动挂载。文件已经挂载不表示脚本已经执行。

需要不同 Skill 集合的智能体不能通过复用现有沙箱实例取得各自的 Skill 文件,应使用各自的沙箱。参见选择沙箱模板或实例

验证 Skill 激活、资源读取和执行结果

创建或更新智能体实例后,分别检查三个层次:

  1. Skill 激活:用能明确触发目标 Skill 的输入测试,并在 Trace 中确认发生了 Skill 激活。
  2. 资源读取:测试依赖相关文件时,确认读取了目标版本中的正确相对路径。
  3. 实际执行:任务需要工具或沙箱时,另外确认工具调用、脚本输出或外部系统结果;Skill 激活本身不能证明操作已经执行。
Trace 中依次出现 Skill 激活和资源读取调用

再用不会触发 Skill 的输入以及可能匹配相邻 Skill 的输入确认边界。使用只存在于目标版本中的短语或样例,可以确认智能体实际解析的 Skill 版本。

注意

Trace 中的 Skill 运行时调用

在当前默认 Skill 提供方下,Trace 中的 Skill 激活和资源读取通常分别显示为 default.activate_skillsdefault.read_skill_resource。它们由 AgentWorks 为已关联技能组的智能体提供,不需要用户另行安装或手动调用,也不提供命令执行能力。

维护 Skill

通过新增版本和调整 stable 完成升级或回退;删除前先确认现有引用和需要保留的制品。

升级或回退 Skill

升级 Skill 时,按将新版本投入使用保留当前 stable,再创建、检查和验证候选版本。测试通过后,把候选版本设为新的 stable;需要回退时,把先前验证的版本重新设为 stable

同一个 Skill 可能供多个技能组、智能体模板和智能体实例使用。调整 stable 前应确认所有使用者都可以接受这次变化;需要分阶段发布时,使用独立的测试 Skill 副本或测试租户,不要通过共享 Skill 的标记区分不同批次。

删除 Skill 或版本

删除前检查技能组模板、技能组实例、智能体模板和智能体实例的引用:

  • 删除 stablelatest 版本会改变运行时的版本选择;删除前先为保留版本设置正确标记并完成回归。
  • 删除 Skill 会移除其元信息和版本入口,不能自动修复技能组。

先让运行时可以解析到经过验证的替代版本,并在引用该 Skill 的智能体实例中完成回归,再执行删除。需要保留制品时,先通过 导出 zip 保存到团队批准的制品库。