AI知识

AI Skill 机制:让 Agent 拥有可复用的能力模块

15 次阅读更新于 2026/9/10

在 AI Agent 的工程实践中,一个核心问题始终存在:如何让 Agent 的能力可复用、可组合、可共享? 早期的 Agent 系统往往将所有逻辑写在一个庞大的提示词里,导致维护困难、复用性差。随着 Agent 框架的成熟,业界逐渐提炼出一个关键抽象层 -- Skill(技能)

Skill 是介于底层工具和上层应用之间的能力模块。它不是一个简单的函数调用,也不是一个松散的插件包,而是一个包含提示词模板、工具绑定、工作流逻辑和输入输出契约的完整能力单元。理解 Skill 机制,是掌握现代 Agent 架构设计的重要一步。

Skill 与 Tool、Plugin 的区别

在 Agent 生态中,Tool、Plugin、Skill 三个概念经常被混用,但它们在抽象层次和能力范围上有本质差异。

Tool:原子操作

Tool(工具) 是 Agent 能力体系中最底层的单元。一个 Tool 对应一个具体的函数或 API 调用,具有明确的输入参数和输出结果。例如:搜索引擎查询、数学计算、文件读取。Tool 本身不包含业务逻辑,也不知道自己会在什么场景下被使用。

Plugin:工具集合

Plugin(插件) 是围绕某个特定集成场景组织的一组 Tool。例如,一个 Slack Plugin 可能包含"发送消息""创建频道""查询历史记录"等多个 Tool。Plugin 的核心价值是提供了对外部系统的连接能力,但它不定义使用这些工具的策略和流程。

Skill:能力模块

Skill(技能) 是更高层次的抽象。它将提示词模板、工具调用、流程编排和输入输出规范封装为一个完整的、可独立执行的能力模块。Skill 知道"该做什么、怎么做、用什么工具、按什么顺序"。

维度ToolPluginSkill
抽象层次原子函数工具集合能力模块
包含内容单个函数/API多个相关 ToolPrompt + Tools + 流程逻辑
业务逻辑有,包含编排策略
独立执行需要上层调度需要上层调度可独立完成任务
典型示例web_search()Slack 集成包"代码审查"技能
复用粒度跨 Skill 复用跨 Agent 复用跨项目复用

Skill 的本质是对"如何完成一类任务"的封装。如果 Tool 是螺丝刀,Plugin 是工具箱,那么 Skill 就是"修理水管的完整方案" -- 它知道先关阀门、再拆接头、最后测试水压。

Skill 的内部架构

一个设计良好的 Skill 通常由四个核心部分组成。

图表加载中...

Prompt Template(提示词模板)

提示词模板定义了 Skill 的核心任务描述,通常包含:

  • 角色设定:Agent 在执行该 Skill 时扮演的角色
  • 任务说明:需要完成什么、遵循什么规范
  • 变量插槽:运行时动态填充的上下文信息
  • 输出格式要求:期望的返回结构
# 示例:代码审查 Skill 的提示词模板
role: "你是一位资深代码审查工程师"
task: |
  审查以下代码变更,关注:
  1. 潜在的 Bug 和边界条件
  2. 性能问题
  3. 代码风格和可维护性
  4. 安全漏洞
context:
  - "编程语言:{{language}}"
  - "项目规范:{{coding_standards}}"
  - "变更内容:{{diff_content}}"
output_format: "按严重程度分级的审查意见列表"

Tool Bindings(工具绑定)

工具绑定声明了该 Skill 运行时可以调用哪些 Tool。这不是简单的罗列,而是包含了使用约束和优先级。

{
  "tools": [
    {
      "name": "git_diff",
      "description": "获取代码变更内容",
      "required": true
    },
    {
      "name": "file_read",
      "description": "读取相关上下文文件",
      "required": false
    },
    {
      "name": "web_search",
      "description": "查询最佳实践和已知问题",
      "required": false
    }
  ]
}

Workflow Logic(工作流逻辑)

工作流逻辑定义了 Skill 执行的步骤编排,描述工具调用的顺序、条件分支和循环策略。

图表加载中...

I/O Contract(输入输出契约)

输入输出契约是 Skill 与外部系统的接口协议,它明确规定了 Skill 接受什么输入、返回什么输出,使得 Skill 可以被其他 Skill 或系统可靠地调用。

// Skill 的 I/O 契约定义
interface CodeReviewSkillInput {
  repository: string;       // 仓库地址
  branch: string;           // 分支名
  baseBranch?: string;      // 对比基准分支
  focusAreas?: string[];    // 重点关注领域
}

interface CodeReviewSkillOutput {
  summary: string;          // 审查总结
  issues: ReviewIssue[];    // 问题列表
  score: number;            // 代码质量评分 (0-100)
  suggestions: string[];    // 改进建议
}

实践案例:Claude Code 中的 Skill 机制

Claude Code 是 Anthropic 推出的 CLI 编程工具,它内置了多个 Skill,是理解 Skill 机制的优秀案例。

/commit Skill

当用户执行 /commit 时,该 Skill 会自动完成以下流程:

  1. 调用 git statusgit diff 获取工作区状态
  2. 分析所有变更文件的内容和意图
  3. 参考近期 commit 历史,遵循项目的提交信息风格
  4. 生成符合规范的 commit message
  5. 执行 git addgit commit
  6. 验证提交结果

这个过程涉及多个 Tool 的协调调用(Bash、Read、Grep),有明确的流程逻辑(先分析再行动),并且输出遵循固定格式。这正是一个典型的 Skill。

/review-pr Skill

PR 审查 Skill 的执行流程更加复杂:

图表加载中...

自定义 Skill

现代 Agent 框架允许用户定义自己的 Skill。以下是一个自定义 Skill 的概念结构:

name: "database-migration-review"
description: "审查数据库迁移脚本的安全性和性能影响"

prompt: |
  你是数据库迁移审查专家。请审查以下迁移脚本,重点关注:
  - 是否有不可逆操作(DROP TABLE、DROP COLUMN)
  - 大表变更是否会导致锁表
  - 索引变更对查询性能的影响
  - 数据回填操作的效率

tools:
  - file_read      # 读取迁移文件
  - web_search     # 查询数据库最佳实践
  - bash           # 执行 SQL 分析

input:
  migration_file: string   # 迁移文件路径
  database_type: string    # 数据库类型

output:
  risk_level: "low" | "medium" | "high"
  blocking_issues: string[]
  recommendations: string[]

Skill 组合:构建复杂工作流

Skill 的真正威力在于组合。多个 Skill 可以像乐高积木一样拼接,构建出复杂的自动化工作流。

图表加载中...

在这个发布流水线中,每个 Skill 各司其职:

  • code-review 检查代码质量
  • test-runner 执行测试套件
  • changelog 根据 commit 记录生成变更日志
  • version-bump 根据变更类型自动更新版本号
  • commit 提交变更
  • create-pr 创建 Pull Request

每个 Skill 的输出作为下一个 Skill 的输入,形成数据流水线。任何一个 Skill 报告失败,整个流水线可以中断并通知开发者。

设计优秀 Skill 的原则

单一职责

每个 Skill 应该只做一件事,并且把它做好。"代码审查"和"提交代码"应该是两个独立的 Skill,而不是合并为"审查并提交"。

输入输出明确

Skill 的契约应该是强类型的、有文档的。调用者不需要阅读 Skill 的内部实现就能正确使用它。

可配置而非硬编码

好的 Skill 通过参数暴露关键配置项,而不是将策略硬编码在提示词中。

# 差的设计:硬编码规则
prompt: "审查代码,使用 Google Java 风格指南"

# 好的设计:参数化配置
prompt: "审查代码,使用 {{style_guide}} 风格指南"
config:
  style_guide:
    type: string
    default: "Google Java"
    options: ["Google Java", "Airbnb JS", "PEP 8"]

幂等与安全

Skill 应尽可能设计为幂等操作 -- 多次执行同一 Skill 产生的结果一致。对于有副作用的 Skill(如写文件、提交代码),应提供预览模式(dry-run),让用户确认后再执行。

错误处理与降级

Skill 内部应有完善的错误处理机制。当某个 Tool 调用失败时,Skill 应当能够降级处理,而不是直接崩溃。

设计原则核心要求反模式
单一职责一个 Skill 一个任务万能 Skill 做所有事
契约明确强类型输入输出接受任意格式输入
可配置关键参数外部传入硬编码业务规则
幂等安全支持 dry-run 模式执行即修改无法回退
容错降级Tool 失败时有备选方案任何异常直接终止

Skill 的未来方向

Skill Marketplace(技能市场)

随着 Skill 标准化程度的提高,Skill 市场正在成为 Agent 生态的重要组成部分。开发者可以发布自己的 Skill 供他人使用,就像 npm 之于 JavaScript、PyPI 之于 Python。未来的 Agent 开发可能是这样的流程:

  1. 从市场安装 code-review Skill
  2. 根据团队规范自定义配置
  3. 与其他 Skill 组合为工作流
  4. 共享定制化的 Skill 给团队成员

标准化协议

当前各 Agent 框架的 Skill 定义方式各不相同。业界正在推动 Skill 描述和调用协议的标准化,使得一个 Skill 可以跨框架运行。这类似于 Docker 对应用部署的标准化 -- 无论底层框架是什么,只要符合标准协议,Skill 就能被正确加载和执行。

自适应 Skill

下一代 Skill 可能具备自我优化能力。通过收集执行反馈(用户是否接受了 Skill 的输出、是否做了修改),Skill 可以持续调整自己的提示词模板和工作流逻辑,逐步适应团队的偏好和项目的特殊需求。

Skill 机制的本质是将 AI Agent 从"什么都能做但什么都不精"的通才,转变为"拥有一系列专精能力模块"的专家系统。这种模块化的架构设计,不仅提升了 Agent 的可靠性和可维护性,更为 Agent 能力的共享和协作打开了大门。

评论

登录 后参与评论

加载中...