跳至主要内容

Skill 管理 API

@grant CAT.agent.skills

Skill 管理 API 讓腳本可以查詢、安裝、移除和呼叫 Skill 擴充套件包。

有關 Skill 的開發和打包,請參閱 Skill 開發指南。官方 Skill 範例:scriptscat/skills

list — 列出已安裝的 Skills

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

回傳 SkillSummary[]

欄位型別說明
namestringSkill 名稱
descriptionstringSkill 描述
toolNamesstring[]包含的 SkillScript 工具名稱
referenceNamesstring[]包含的參考資料檔案名稱
hasConfigboolean是否宣告了設定欄位
enabledboolean是否啟用(預設為 true
installtimenumber安裝時間戳
updatetimenumber最後更新時間戳

注意:versioninstallUrl(管理頁面的更新檢查功能使用)不會透過此腳本 API 回傳 — 它們僅供更新檢查邏輯和管理頁面 UI 內部使用。

get — 取得 Skill 詳情

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

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

SkillRecord 結構:

繼承 SkillSummary 的所有欄位,加上:

欄位型別說明
promptstringSKILL.cat.md 的 Markdown 內文(給 AI 的提示)
configRecord<string, SkillConfigField>設定欄位定義(Schema)

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.cat.md 檔案的內容(必填)
scriptsArray<{ name, code }>SkillScript 檔案清單
referencesArray<{ name, content }>參考資料檔案清單

如果已存在同名的 Skill,則會更新它。

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

當使用者需要搜尋時使用搜尋工具。`,
[{ name: "search.js", code: skillScriptCode }],
[{ name: "api-docs.md", content: "# API 文件\n..." }]
);

remove — 移除 Skill

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

成功移除回傳 true,Skill 不存在回傳 false

call — 直接呼叫 SkillScript

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

直接在指定的 Skill 中執行 SkillScript,無需經過 AI 對話。

參數:

參數型別說明
skillNamestringSkill 名稱(必填)
scriptNamestringSkillScript 名稱(必填)
paramsRecord<string, unknown>傳入的參數(與 @param 宣告相符)
// 直接呼叫 Skill 內的搜尋腳本
const results = await CAT.agent.skills.call(
"my-search",
"search",
{ query: "ScriptCat", limit: 5 }
);

SkillScript 執行有逾時限制(預設 300 秒,可透過 @timeout 自訂)。