跳转到内容

Skill 系统

Skill 系统 让宿主应用可以将业务能力暴露给 AI。你只需注册函数,AI 就能通过脚本调用它们——无需额外适配,文档自动生成。

声明式(推荐)命令式(高级)
注册方式设置 agentConfig 属性调用 defineRegistry
上手难度零配置,开箱即用需要手动管理
适用场景大多数场景需要动态注册、条件注册

声明式注册示例

agent.agentConfig = {
name: 'MyApp',
persona: '你是一个...助手',
groups: [{
name: 'editor',
description: '编辑器操作',
functions: [
{
name: 'getCode',
description: '获取编辑器中的当前代码',
handler: () => editor.getCode()
}
]
}]
};

💡 设置 agentConfig 后,系统自动创建 Registry 并完成函数注册——整个过程无需手动干预。

每个函数由以下字段组成:

字段类型说明
namestring函数名称
descriptionstring函数描述,会写入自动生成的文档
parametersParameterDef[]参数定义数组(ParameterDef[] 格式)
returnsobject返回值定义
handlerfunction执行函数(支持异步)
hooksobjectUI 钩子(详见 Hook 系统

parameters 使用 ParameterDef[] 数组格式描述参数,AI 据此生成正确的调用代码:

{
name: 'createOrder',
description: '创建新订单',
parameters: [
{ name: 'productId', schema: { type: 'string', description: '商品 ID' }, required: true },
{ name: 'quantity', schema: { type: 'number', description: '数量' }, required: false }
],
handler: async ({ productId, quantity }) => {
return await api.createOrder(productId, quantity ?? 1);
}
}

💡 每个参数由 name(参数名)、schema(OpenAPI Schema 格式的参数定义)和 required(是否必填)组成。

函数通过 分组(group) 组织,分组名 + 函数名 = 完整调用路径:

分组让函数命名空间清晰有序,避免命名冲突。

AI 通过 script 工具在沙箱中执行代码,使用 Proxy 链式语法 调用函数:

// Proxy 链式调用——自然的 API 风格
await rtcAgent.order.create({ productId: '123', quantity: 2 });
// 等价于直接调用
await rtcAgent.execute('order.create', { productId: '123', quantity: 2 });

💡 AI 阅读自动生成的函数文档后,就知道如何调用这些函数——无需额外配置。

Hook 让宿主在函数执行的各阶段插入自定义逻辑:

Hook触发时机说明
onStart执行前可抛出 CancelledError 取消执行
onSuccess成功后异步执行,不阻塞返回
onError失败后异步执行,不阻塞返回
onProgress进度更新handler 调用 onProgress(n) 时触发

onStart 是唯一能拦截执行的 Hook——适合用于确认弹窗、权限检查等场景。

每次注册函数时,系统自动生成完整的文档:

生成内容说明
函数文档包含描述、参数表格、返回值、调用示例
INDEX.md函数索引,AI 据此发现可用函数
AGENT.md更新 Agent 能力描述

📌 AI 通过阅读这些文档了解如何使用函数——文档的质量直接影响 AI 的调用准确性。

场景(Scenario)用于加载业务工作流文档,告诉 AI 如何处理特定业务:

特性说明
场景文档业务工作流说明,Markdown 格式
加载方式通过 <rtc-agent scenarios-url="..."> 属性指定 URL
存储位置/scenarios/{slug}.md
AI 使用AI 阅读场景文档了解业务流程和操作指南

例如,你可以编写”如何处理退款”、“如何创建订单”等场景文档,AI 就能按照你的业务规范执行操作。