跳到主要内容

Skill 管理 API

@grant CAT.agent.skills

Skill 管理 API 允许脚本查询、安装、卸载和调用 Skill 扩展包。

关于 Skill 的开发和打包,请参阅 Skill 开发指南。官方 Skill 示例仓库:scriptscat/skills

list — 列出已安装 Skill

const skills = await CAT.agent.skills.list();

返回值 SkillSummary[]:

字段类型说明
namestringSkill 名称
descriptionstringSkill 描述
toolNamesstring[]包含的 SkillScript 工具名列表
referenceNamesstring[]包含的参考资料文件名列表

get — 获取 Skill 详情

const skill = await CAT.agent.skills.get(name);

返回完整的 SkillRecord,如果不存在返回 null

SkillRecord 结构:

字段类型说明
namestringSkill 名称
descriptionstring描述
promptstringSKILL.md 中 Markdown 正文部分(给 AI 的提示词)
configRecord<string, SkillConfigField>配置字段定义
toolNamesstring[]工具脚本名列表
referenceNamesstring[]参考资料名列表
installtimenumber安装时间戳
updatetimenumber更新时间戳

SkillConfigField 结构:

字段类型说明
titlestring显示标题
type"text" | "number" | "select" | "switch"字段类型
secretboolean是否为敏感信息(UI 中遮盖显示)
requiredboolean是否必填
defaultunknown默认值
valuesstring[]选项列表(仅 select 类型)

install — 安装 Skill

const record = await CAT.agent.skills.install(skillMd, scripts?, references?);

参数:

参数类型说明
skillMdstringSKILL.md 文件内容(必填)
scriptsArray<{ name, code }>SkillScript 文件列表
referencesArray<{ name, content }>参考资料文件列表

如果同名 Skill 已存在,会执行更新操作。

const record = await CAT.agent.skills.install(
`---
name: my-search
description: 自定义搜索工具
---

当用户需要搜索时,使用 search 工具。`,
[{ name: "search.js", code: skillScriptCode }],
[{ name: "api-docs.md", content: "# API 文档\n..." }]
);

remove — 卸载 Skill

const success = await CAT.agent.skills.remove(name);

返回 true 表示卸载成功,false 表示 Skill 不存在。

call — 直接调用 SkillScript

const result = await CAT.agent.skills.call(skillName, scriptName, params?);

不经过 AI 对话,直接执行指定 Skill 中的 SkillScript。

参数:

参数类型说明
skillNamestringSkill 名称(必填)
scriptNamestringSkillScript 名称(必填)
paramsRecord<string, unknown>传入参数(与 @param 声明对应)
// 直接调用 Skill 中的搜索脚本
const results = await CAT.agent.skills.call(
"my-search",
"search",
{ query: "ScriptCat", limit: 5 }
);

SkillScript 的执行有超时限制(默认 300 秒,可通过 @timeout 自定义)。