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