技能系统
可扩展的能力模块:让 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"
}
}最佳实践
推荐做法
- - 使用明确的参数类型和描述
- - 声明最小必需权限
- - 提供清晰的错误信息
- - 编写技能单元测试
避免做法
- - 在技能中硬编码敏感信息
- - 请求不必要的权限
- - 忽略错误处理
- - 创建过于复杂的技能