技能系统

可扩展的能力模块:让 Agent 学习新技能、执行复杂任务

什么是技能

技能是 Agent 可以执行的能力单元。每个技能封装了特定的功能,如文件操作、网络请求、代码执行等。 技能系统让 Agent 的能力可以动态扩展,无需修改核心代码。

技能组成

  • -名称和描述: 技能的唯一标识和功能说明
  • -参数定义: JSON Schema 格式的参数规范
  • -执行逻辑: 技能的实际执行代码
  • -权限要求: 执行所需的最小权限

内置技能

file_read文件操作

读取文件内容

file_write文件操作

写入文件内容

shell_exec系统操作

执行 Shell 命令

http_request网络操作

发送 HTTP 请求

code_search代码分析

搜索代码库

git_operation版本控制

Git 操作

db_query数据操作

数据库查询

web_search信息获取

网页搜索

创建自定义技能

你可以通过编写 YAML 或 JSON 文件来定义新的技能。以下是技能定义的标准格式:

skills/weather.yaml
name: get_weather
version: "1.0.0"
description: 获取指定城市的天气信息
category: information

parameters:
  type: object
  properties:
    city:
      type: string
      description: 城市名称
    unit:
      type: string
      enum: [celsius, fahrenheit]
      default: celsius
      description: 温度单位
  required: [city]

executor:
  type: http
  config:
    url: "https://api.weather.com/v1/current"
    method: GET
    params:
      city: "{city}"
      unit: "{unit}"

permissions:
  - network:external

output:
  type: object
  properties:
    temperature:
      type: number
    condition:
      type: string
    humidity:
      type: number

技能执行流程

1

意图识别

Agent 分析用户请求,确定需要调用的技能

2

参数解析

从上下文中提取参数,进行类型校验

3

权限检查

验证 Agent 是否有执行该技能的权限

4

安全审核

沙箱检查,敏感操作需要用户确认

5

执行技能

调用执行器运行技能逻辑

6

结果处理

格式化输出,更新世界模型

SkillForge - 技能锻造

SkillForge 是内置的技能生成系统,可以根据用户需求自动创建新技能。

工作原理

需求分析

分析用户描述的技能需求

技能生成

自动生成技能定义和代码

测试验证

自动测试并优化技能

API 示例

列出所有技能GET
GET /api/skills/list

Response:
{
  "skills": [
    {
      "id": "skill-001",
      "name": "file_read",
      "version": "1.0.0",
      "description": "读取文件内容",
      "category": "file",
      "enabled": true,
      "usage_count": 1234
    }
  ]
}
创建新技能POST
POST /api/skills/create
Content-Type: application/json

{
  "name": "my_custom_skill",
  "description": "我的自定义技能",
  "parameters": {
    "type": "object",
    "properties": {
      "input": { "type": "string" }
    }
  },
  "executor": {
    "type": "script",
    "code": "#!/bin/bash\necho $input"
  }
}

最佳实践

推荐做法

  • - 使用明确的参数类型和描述
  • - 声明最小必需权限
  • - 提供清晰的错误信息
  • - 编写技能单元测试

避免做法

  • - 在技能中硬编码敏感信息
  • - 请求不必要的权限
  • - 忽略错误处理
  • - 创建过于复杂的技能