技能管理
技能(Skill)是智能体的能力模块。一个技能通常由 SKILL.md 定义,描述适用场景、执行步骤、可用工具、输入要求和输出标准。智能体会在需要时加载技能,并按照技能文档中的流程执行。
什么是技能
技能不是单个工具调用,而是一套可复用的工作方法。例如“合同审阅”技能可以包含:
- 触发条件:用户提交合同或要求审查条款
- 执行步骤:读取文件、拆分条款、识别风险、输出修改建议
- 可用工具:Read、Edit、WebFetch、MCP 法律库等
- 输出格式:风险摘要、逐条意见和修改建议
| 维度 | 技能(Skill) | 工具(Tool) |
|---|---|---|
| 本质 | 高层行为指令 | 底层能力接口 |
| 粒度 | 一个完整任务流程 | 一个具体操作 |
| 示例 | “合同审阅”“网页调研”“PPT 修改” | Read、Grep、PowerShell、WebFetch |
| 内容 | 指令、步骤、约束、参考资料、脚本 | 参数、执行器、权限和返回值 |
技能来源
DesireCore 会从多个来源发现技能:
| 来源 | 位置 | 适用范围 |
|---|---|---|
| 全局技能 | ~/.desirecore/skills/ | 所有智能体可用 |
| 智能体技能 | 智能体仓库内的 skills/ | 当前智能体可用 |
| 项目技能 | 工作目录中的 .agents/skills/ 或 .claude/skills/ | 当前项目上下文可用 |
禁用状态的技能不会注入智能体上下文。带有工具限制、模型限制或供应商偏好的技能,会在运行时按当前可用工具和算力配置匹配。
查看智能体的技能
- 进入智能体详情页
- 打开 技能 或 技能管理 区域
- 查看当前可用、已禁用和可更新的技能
技能卡片通常显示:
- 技能名称、描述和来源
- 版本号和作者
- 启用状态
- 是否允许用户直接调用
- 依赖工具或供应商提示
点击技能可以查看 SKILL.md、相关参考资料和脚本目录。
添加技能
从市场安装
- 打开技能市场或智能体详情页的技能管理入口
- 搜索或按分类浏览技能
- 查看技能说明、依赖和风险提示
- 点击安装并按提示确认
全局市场技能安装后会写入全局技能目录,所有智能体都能发现;绑定到智能体的技能则写入对应智能体仓库。
本地导入
技能管理中的 导入技能 支持三种本地格式:
| 格式 | 说明 |
|---|---|
.md 文件 | 直接选择一个 Markdown 技能文件,系统会按技能内容生成对应目录 |
| 文件夹 | 选择包含 SKILL.md 的技能目录,适合导入带脚本、参考资料或模板的完整技能 |
.zip 包 | 导入压缩后的技能目录,适合迁移或批量分发 |
导入时系统会校验文件结构、路径安全和必要字段。失败时会显示具体错误原因,便于修正后重新导入。
启用、禁用、导出和移除
- 启用/禁用:控制技能是否可被智能体加载。禁用不会删除文件。
- 导出:在技能详情页点击 导出,可把全局技能或当前智能体内嵌技能导出为 ZIP 包。导出包包含
SKILL.md以及该技能目录下的脚本、参考资料和资产,可用于备份、迁移或通过本地导入重新安装。 - 移除:删除技能文件。智能体仓库中的技能可通过版本历史恢复。
- 更新:内置和市场技能会检测可用更新;用户修改过的技能不会被静默覆盖。
DesireCore 自带一组全局技能,包括技能创建、文档处理、PDF、PPT、表格、网页访问和前端设计等能力。内置技能会随客户端和市场同步自动维护;如果你手动修改了某个内置技能,系统会尽量保留你的修改。
技能风险与确认
技能本身是指令和资源,不会绕过工具权限。真正执行时,风险来自技能流程中调用的工具、访问的数据和产生的外部影响。
| 风险等级 | 含义 | 常见示例 |
|---|---|---|
| 低风险 | 主要读取或整理信息,不修改系统状态 | 文档总结、信息检索、格式检查 |
| 中风险 | 需要网络访问、写入文件或连接外部服务 | 网页调研、报告生成、API 调用 |
| 高风险 | 可能修改系统、执行命令、发送外部消息或处理敏感数据 | 命令执行、批量文件修改、邮件发送、发布操作 |
高风险动作仍然受工具审批、权限设置和人闸门控制。安装或启用技能不等于自动批准技能里的所有操作;当技能触发敏感工具时,系统仍会按对应工具和审批策略处理。
技能元信息
SKILL.md 可以通过 frontmatter 声明元信息。常用字段包括:
| 字段 | 说明 |
|---|---|
name / metadata.name | 技能显示名称 |
description / metadata.description | 技能描述,影响自动匹配 |
version / metadata.version | 技能版本号 |
author / metadata.author | 技能作者 |
allowed-tools | 技能执行时允许使用的工具列表 |
provider | 偏好的模型或媒体服务供应商标识 |
model | 触发技能时使用的模型 |
user-invocable | 是否允许用户通过命令直接调用 |
disable-model-invocation | 是否禁止模型自动触发;也兼容 disable_model_invocation |
context | 执行上下文模式,例如默认上下文或 fork 子上下文 |
这些字段会影响技能列表展示、命令补全、自动触发、工具可用性和供应商选择。
自定义技能结构
一个完整技能目录通常长这样:
<skill_id>/
├── SKILL.md # 必须:技能说明、元信息和执行步骤
├── scripts/ # 可选:脚本和辅助程序
├── references/ # 可选:参考文档
├── assets/ # 可选:模板、图片或样例文件
└── evals/ # 可选:评测用例
技能描述越清晰,智能体越容易在合适的任务中自动选择它。建议在 description 和正文开头明确写出“何时使用”和“不要在什么情况下使用”。