1.2 技能包(Skills)
技能包 = 一组 Markdown 文件,运行时挂到沙箱里供 AI 当"操作手册"查阅。这是把企业内部 SOP / 规范 / 知识"外挂"给 AI 的最直接方式。
进入路径:左侧主导航 → 技能包(/skills)。
⚠️ 生效条件:技能包只在以下两种路径下生效:
- DeepAgents 编排器 — 主智能体的
deep_agents_config.skill_ids- 任意智能体被作为 DeepAgents 的 SubAgent 使用,且配了
agent.skill_ids- SINGLE 编排器 + 配了
skill_ids的智能体(系统自动升级走 DeepAgents 路径)普通 SINGLE / Supervisor / Collaboration / Workflow 等编排器,不会读取技能包。
1.2.1 技能包列表 [U]
布局
- 顶部操作栏:刷新、管理分类(仅管理员可见)、导入、创建技能包
- 筛选栏:搜索框 + 分类(横向 chips,「全部」在最前,点中即筛选,无状态下拉)
- 主体:3 列卡片网格,每卡片显示:
- 技能包显示名
- 描述(最多 2 行)
- 分类徽章
- 版本号
- 作者
- 创建时间
- 草稿角标:有未发布草稿的技能包,卡片右上角显示「草稿」角标
- 分页器
主要操作
| 操作 | 行为 |
|---|---|
| 搜索 | 按名称模糊匹配 |
| 分类 chips | 点中某个分类只看该类;点「全部」清空筛选 |
| 创建技能包 | 跳转 /skills/new |
| 导入 | 弹文件选择器,接受 .zip 或 .md |
| 卡片点击 / 编辑 | 跳转 /skills/{id} |
| 卡片删除 | 二次确认 → 若被引用返回 409,弹冲突对话框 |
| 管理分类 | 跳转 /admin/skill-categories(仅管理员) |
删除冲突对话框
如果某个技能包被智能体或编排器引用,首次删除返回 HTTP 409。对话框列出引用方,可选「强制删除」(引用方下次执行时会找不到该技能包并报错)。
1.2.2 创建技能包 [U]
路径:/skills/new
表单字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | text | ✓ | 唯一标识符,组织内不重复,小写英文+下划线 |
| displayName | text | UI 显示名称,留空时用 name | |
| description | text | 简短描述 | |
| category | select | 分类(管理员维护,可见 技能分类管理) |
Markdown 编辑器
表单下方是一个 Markdown 编辑器,带「编辑」/「预览」两个 Tab。新建时会自动填充一个模板骨架,包含:
---
name: my_skill
description: 技能包简介
version: 1.0.0
---
# 技能名
## 用途
描述这个技能包解决什么问题。
## 触发场景
什么时候用这个技能包?
## 操作步骤
1. ...
2. ...
## 注意事项
- ...YAML front-matter 会被后端解析到 skill.meta,可用于运行时元信息。
提交
- 填好基本信息
- 编辑 Markdown 内容
- 点击「创建技能包」 → 成功后跳转到详情/编辑页
💡 创建只是写了一份草稿。要让 AI 真正用上,还需要在详情页点「发布」(详见 草稿与发布)。
1.2.3 技能包详情与编辑 [U]
路径:/skills/{id}
技能包不只是一个文件,而是一个多文件包(主 Markdown + 子文档 + 引用资源)。详情页提供完整的文件浏览器、编辑器、预览、版本历史。
页面布局
顶部栏:
- 返回按钮
- 标题 + 状态徽章(草稿 / 已发布 / 未发布)
- 模式切换:「编辑」/「预览」/「历史版本」
- 「保存」按钮(只写草稿)
- 「发布」/「提交审核」按钮(
ApprovalActionBar):- 组织未开审批门时:按钮是「发布」,点击后做安全扫描并推到线上
- 组织开了审批门时:按钮是「提交审核」,提交后变为「审核中」并出现「撤回」入口,编辑器锁定(PUT / 丢弃草稿都返回 409),审核通过才生效
- 「导出」/「导入」按钮
编辑模式(默认)
三分屏:
左侧 — 文件浏览器:
- 当前技能包包含的所有文件(支持多级目录)
- 操作:点击切换文件、右键删除/重命名、底部「新建文件」按钮
- 切换文件时自动保存当前文件
中间 — 编辑器:
- Markdown 编辑器,语法高亮
- 顶部显示「已保存 X 分钟前」或「有未保存修改」
- 自动保存:停止输入 2 秒后触发(只写草稿)
- 手动保存:Ctrl+S 或顶部保存按钮
- 保存成功后 toast 提示:「草稿已保存 … 点 '发布' 才会推到线上 (发布时做安全扫描)」(审批门开启时文案变为「点 '提交审核'」)
右侧 — 元信息面板:
| 字段 | 说明 |
|---|---|
| display_name | UI 名称 |
| description | 描述 |
| category | 分类 |
| tags | 标签(逗号分隔) |
| status | 草稿 / 已发布 / 未发布(派生状态,见 草稿与发布) |
预览模式
把当前编辑的文件渲染成 HTML,所见即所得。
历史版本模式
- 「发布」时才创建版本快照(不是每次保存;保存只更新草稿)
- 列表显示:版本号、时间、备注(可选)、操作人
- 「恢复」按钮:把当前草稿回滚到该版本(再点发布才真正上线)
- 「对比」按钮(如已实现):双栏 diff 视图
导入/导出
| 操作 | 行为 |
|---|---|
| 导出 | 下载 .zip,包含技能包所有文件 + meta.json |
| 导入(详情页) | 上传 .zip,合并到当前技能包(同名文件会覆盖,可在对话框选「跳过」/「覆盖」) |
| 导入(列表页) | 上传 .zip 或单个 .md → 新建技能包 |
URL 导入(若启用)
部分部署支持从公开 URL 抓取 Markdown 文件作为技能包来源:
- 列表页「导入」按钮 → 选择「从 URL」
- 输入 URL → 抓取 → 自动创建技能包
1.2.4 草稿与发布
技能包采用草稿优先模型:
- 保存 = 写草稿。所有编辑(新建 / 改内容 / 导入 / 恢复版本)都只写入草稿,不会挂载到沙箱,线上正在被 AI 使用的内容不受影响。
- 发布 = 推到线上。点顶栏的「发布」按钮,平台会先跑内容安全扫描,通过后才把草稿提升为线上版本,并创建一个版本快照。
- 状态徽章由此派生:草稿(有未发布改动)/ 已发布(草稿与线上一致)/ 未发布(从未发布过)。
审批门(可选,组织级)
如果你的组织开启了发布审批(默认关闭):
- 「发布」按钮文案变为「提交审核」
- 提交后状态显示「审核中」,并出现「撤回」入口
- 审核期间编辑器锁定:再次保存草稿 / 丢弃草稿都会返回 409
- 审核通过 → 自动完成发布;被拒 → 草稿解锁,可改完重新提交
审批流程的完整说明见 发布审批。
1.2.5 内容安全扫描
因为技能包文件会被挂进沙箱当作 AI 忠实执行的操作手册,平台在发布时会对待发布内容做一道内容级安全扫描,检测:
- 提示注入(prompt injection)
- 凭证窃取指令
- 危险 shell 命令
- 数据外传
命中阈值会拦截本次发布,并返回结构化 findings(HTTP 422)。你需要按提示修正内容后重新发布。
💡 这是组织级开关,默认关闭。老组织行为不变。开启与阈值(critical / high / medium / low)由管理员在「技能安全」设置里配置。
1.2.6 写好一个技能包的建议
💡 这一节是经验沉淀,不是强制规范。
- 一个技能包只解决一类问题。不要在一个 skill 里混"客户回访话术"和"财务对账步骤"。
- 触发场景写得越具体越好。AI 是从
description+ 文件首段判断要不要打开技能包,越精确召回越准。 - 每一步可执行。避免"沟通客户"这种抽象动作,改成"打开企业微信 → 找到客户 → 发送话术模板 X"。
- 示例 > 抽象。给 1~2 个完整 case 比写一堆理论更有效。
- 跨技能包引用:用相对路径
[相关技能](../another-skill/main.md)— 沙箱挂载时会把同组织所有技能包放在/skills/下。 - 敏感信息不要写入。技能包会以明文挂到沙箱里,涉及密码/密钥的请用 MCP 工具或环境变量。
1.2.7 常见问题
Q1:我创建了技能包,但 AI 完全没用上?
按可能性排序:
- 你的智能体是绑定在 SINGLE 编排器上,但智能体本身没配
skill_ids→ 编辑智能体的 Step 6 把技能包加上 - 编排器类型不支持(Supervisor/Collaboration/Workflow/Conditional/External 都不会读技能包)
- DeepAgents 编排器,但技能包配在了智能体的
skill_ids而不是编排器的deep_agents_config.skill_ids— 这两个位置语义不同:前者是 SubAgent 才生效,后者是主智能体生效。
Q2:多次发布后版本太多怎么清理?
版本快照只在发布时创建(保存草稿不产生版本)。目前版本历史不支持手动清理,但单个技能包总版本数有上限(由部署方设置)。如果碰到上限,最早的版本会被自动归档。
Q3:导入的 ZIP 文件结构是什么样?
my-skill.zip
├── meta.json # name, display_name, description, category, tags
├── main.md # 主入口文件
├── subdoc-1.md # 任意附属文档
└── resources/
└── diagram.png # 资源文件最简形式:一个 .md 文件也可以,系统会自动包装成单文件技能包。
Q4:技能包怎么"发布上线"?
技能包是草稿优先的:编辑只写草稿,点顶栏「发布」才把草稿推到线上(发布时跑内容安全扫描,通过后创建版本快照)。
- 如果组织开启了发布审批,按钮变为「提交审核」,审批员通过后才真正发布(见 发布审批)。
- 跨组织共享仍走导出 ZIP → 对方导入的方式;暂无租户级技能市场。
