Skill Install Guard
Overview
这是安装技能的安全守门员。当用户请求安装任何技能时(通过 clawhub install、URL 或其他方式),这个技能会:
- 拦截安装请求:暂停任何自动安装行为
- 审查技能代码:使用 skill-vetter 进行安全检查
- 报告审查结果:提供详细的安全风险评估
- 确认用户意图:要求饲养员明确同意安装
- 执行安装操作:只有在用户确认后才执行
核心理念:没有明确的用户授权,绝不安装任何技能。
触发条件
当用户请求以下操作时触发此技能:
"安装技能 <skill-name>"
"下载技能 <skill-id>"
"clawhub install <skill>"
"从 ClawHub 安装..."
"安装这个技能"
安装审查流程
第 1 步:识别安装请求
当用户请求安装技能时,首先确认是否为安装意图:
- 如果是查看/搜索技能 → 不触发此技能
- 如果是安装技能 → 触发此技能并进入审查流程
识别示例:
- ✅ "安装 skill-creator" → 触发
- ✅ "用 clawhub 安装 weather" → 触发
- ✅ "下载 ID 为 xxx 的技能" → 触发
- ❌ "搜索天气相关的技能" → 不触发
- ❌ "看看 skill-creator 做什么的" → 不触发
第 2 步:暂停并告知用户
立即停止任何安装操作,告知用户安全审查即将开始:
🦐 停住!准备安装技能前,我们需要先进行安全审查。
这将使用 skill-vetter 检查技能代码的安全性和风险等级。
第 3 步:调用 skill-vetter
使用 skill-vetter 进行安全审查:
如果技能已在本地 workspace:
# 直接审查本地技能文件夹
cd $WORKSPACE/skills/<skill-name>
# 读取 SKILL.md 和所有代码文件
# 根据 skill-vetter/SKILL.md 的审查标准进行检查
如果技能未下载:
# 先获取技能信息
clawhub info <skill-id> --format json
# 根据信息决定是否下载后审查
# 或者直接使用 skill-vetter 的在线审查功能(如果可用)
必要操作:
- 读取并加载 skill-vetter 的 SKILL.md(路径通常在
~/.openclaw/workspace/skills/skill-vetter/SKILL.md或类似位置) - 按照 skill-vetter 技能文档中的审查标准逐项检查
- 记录所有发现的安全问题
第 4 步:输出审查报告
生成结构化的审查报告,包含以下内容:
基本信息:
- 技能名称和版本
- 来源(ClawHub ID 或 URL)
- 发布者信息(如果可用)
审查结果:
- 风险等级:🟢 低 / 🟡 中 / 🔴 高 / 🚨 极端
- 发现的问题列表(按严重程度排序)
- 权限需求评估
详细检查项(基于 skill-vetter 标准):
- 来源可信度检查
- 可疑模式检测(URL、凭证、系统文件访问)
- 权限范围评估
- 外部依赖分析
- 代码复杂度评估
报告示例:
🔍 **Skill 审查报告**
**技能**:skill-creator v1.0.0
**来源**:ClawHub (official)
**风险等级**:🟢 低
**审查项**:
✅ 来源可信:官方技能,签名验证通过
✅ 无可疑模式:未检测到凭证窃取、硬编码密钥等
✅ 权限正常:仅文件读写,无网络请求
⚠️ 外部依赖:需要 Python 运行时
**详细发现**:
- 技能文档清晰完整
- 代码结构合理
- 无执行外部命令的脚本
- 文件操作限制在 workspace 之内
**建议**:可以安全安装
---
第 5 步:请求用户确认
显示审查报告后,明确要求用户确认:
🦐 以上是安全审查结果。
**请确认:你是否允许安装此技能?**
回复以下之一:
- "确认安装" 或 "安装" 或 "yes" → 执行安装
- "取消" 或 "不安装" 或 "no" → 停止操作
- "更多信息" → 提供更详细的审查说明
等待你的明确指令...
重要规则:
- ⚠️ 不得在用户确认前执行任何安装操作
- ⚠️ 不得预设用户的同意(不要说"如果你同意,我就安装")
- ⚠️ 必须得到明确的"确认"或类似的肯定回复
- ⚠️ 如果用户回复"更多信息",提供更多细节,然后再次请求确认
第 6 步:执行安装
只有收到用户的明确确认后才执行安装:
确认词包括:
- "确认安装"
- "安装"
- "yes"
- "好的"
- "继续"
- "可以"
- 同样肯定的中文或英文表达
执行安装:
clawhub install <skill-id>
安装后:
- 告知用户安装成功
- 建议用户查看安装日志(如有问题)
第 7 步:处理取消请求
如果用户回复取消或否定:
- ⛔ 停止所有安装操作
- 📝 记录取消操作到 memory(可选)
- 🦐 告知用户操作已取消
取消词包括:
- "取消"
- "不安装"
- "no"
- "算了"
- 同样否定的中文或英文表达
特殊场景处理
场景 1:批量安装请求
如果用户请求一次安装多个技能:
用户:"同时安装 skill-creator, weather, 和这三个技能"
处理方式:
- 告知用户:每次只能安装一个技能
- 询问优先安装哪一个
- 对每个技能逐一进行审查流程
场景 2:从 URL 安装
如果用户提供 GitHub 或其他 URL:
用户:"从 https://github.com/xxx/skill.git 安装"
处理方式:
- 告知用户:非 ClawHub 来源的技能需要更严格的审查
- 询问:是否继续
- 如果继续,先克隆或下载到临时位置
- 使用 skill-vetter 严格审查(高风险假设)
- 报告时强调"非官方来源"风险
场景 3:审查失败
如果 skill-vetter 无法完成审查:
处理方式:
- 告知用户:审查过程遇到问题
- 提供错误信息摘要
- 询问:
- 是否重试审查
- 是否停止安装(推荐选项)
- 如果用户坚持安装:
- 再次警告风险
- 要求明确确认"我理解风险,坚持安装"
- 记录到 memory(跳过审查风险的案例)
场景 4:技能更新
如果用户请求更新现有技能:
用户:"更新 skill-creator"
处理方式:
- 视为"新安装"请求,执行完整审查流程
- 报告时对比"当前版本"和"新版本"
- 强调更新的变更内容(如果可能)
记录和追踪
安装历史
每次安装操作(成功或失败)都可以记录到 memory 文件中:
建议格式(memory/skill-install-history.md):
## [日期] 技能安装记录
### 技能名称
- **版本**:1.0.0
- **来源**:ClawHub (xxx)
- **风险等级**:🟢 低
- **审查结果**:通过
- **用户决定**:确认安装
- **安装时间**:2026-03-10 09:15:00
- **操作结果**:成功
### 技能名称
- **版本**:2.1.0
- **来源**:GitHub (xxx/skill)
- **风险等级**:🔴 高
- **审查结果**:发现高风险代码
- **用户决定**:取消安装
- **操作结果**:已取消
何时记录:
- ✅ 安装成功
- ✅ 安装失败(审查未过或用户取消)
- ⚠️ 跳过审查的特殊情况(需详细说明)
错误处理
skill-vetter 不可用
如果 skill-vetter 未安装或无法加载:
错误:skill-vetter 不可用,无法进行安全审查。
选项:
1. 先安装 skill-vetter,然后继续
2. 手动审查代码(高风险,不推荐)
3. 取消本次安装
请选择:
网络问题
如果无法连接 ClawHub 或下载技能:
错误:无法访问 ClawHub,下载失败。
建议:
- 检查网络连接
- 稍后重试
- 使用已下载在本地缓存中的版本(如果有)
请选择:
安全原则
此技能遵循的核心安全原则:
- 显式授权优先:没有明确的用户同意,不执行任何操作
- 透明性:清晰地告知用户审查过程和结果
- 最小权限:只执行必要的安装操作,不做额外的事情
- 可审计:所有安装操作都有记录(可选实现)
- 失败安全:当不确定时,选择不安装(保守策略)
与其他技能的协作
skill-vetter
- 关系:此技能作为 skill-vetter 的工作流封装
- 调用方式:加载 skill-vetter 的 SKILL.md,遵循其审查标准
- 输出:基于 skill-vetter 输出生成用户可读的报告
clawhub
- 关系:此技能作为 clawhub 命令的安全前置守卫
- 调用时机:审查通过且用户确认后才调用
clawhub install - 不调用:未经审查确认,不执行任何 clawhub install 命令
记住:你的职责是确保安全,而不是方便安装。当有疑问时,选择更安全的选项。