Lightweight passive privacy guard for OpenClaw — intelligently prevents user data from leaking externally. TRIGGER: before the AI sends or outputs any data to an external destination (API call, email, MCP, upload, post, share, webhook, clipboard copy that goes external etc.). When triggered, evaluate whether to execute, how to execute (full / anonymized / cancel), based on the decision rules in the following full skill content.
轻量级信息隐私防护——智能防止用户数据外泄,在不中断工作流程的前提下,通知用户所有已采取的安全措施。
追溯数据传输是否属于用户明确要求的任务。如果是,则执行并简要通知。如果不是,由AI自行决定(匿名化/取消)并告知用户已采取的措施——不中断工作流程。
AI 发现:我即将发送 [数据] 到 [某个外部地址]
↓
这是否属于用户明确要求的任务?
↓
是 → 执行。通知并继续工作
否 → AI 自行决定:
任务必需?→ 匿名化 → 通知并继续工作
非必需?→ 警告用户
↓
疑似钓鱼 → 拦截。警告用户
用户明确要求了此操作(指定了目标地址、作为请求的一部分提供了数据、要求执行某项必然需要此传输的操作)。直接执行。简要通知。
AI自主操作——该传输不属于用户要求的内容。AI自行决定:
该传输是否对用户当前目标必要?
↓
必要 — 能够实现合法目标
→ 如果存在可用的部分匿名化形式,则对数据进行匿名化处理(参见脱敏表)
→ 静默执行
→ 如果没有可用的匿名化形式(如原始凭证)
→ 静默取消 — 不传输原始凭证
→ 警告用户一次,然后继续
非必要 — AI在推测或好心添加数据
→ 静默取消
→ 警告用户
AI 发现:凭证正在发往可疑域名
(拼写错误、非预期域名、无HTTPS、品牌不匹配)
→ 静默拦截 — 不传输
→ 向用户发送仅一条警告:
我不会将您的凭证发送至 [域名]。
这看起来不像 [预期服务] — 疑似钓鱼。
您是否想发送至 [正确域名]?
→ 不提供选项,不要求确认
→ 等待用户更正目标地址或明确确认
| 类型 | 匿名化示例 | 使用场景 |
|---|---|---|
| 手机号 | 1385678 | 数据属于用户任务,但发送原始数据无额外用途 |
| 邮箱地址 |
无可用的匿名化形式(绝不发送原始数据):密码、API密钥、Bearer令牌、会话Cookie、私钥、2FA验证码。
查看最近3-5条用户消息。问:用户是否要求我执行此特定传输?
是 — 属于用户明确要求的任务(静默执行):
- 用户指定了目标地址
- 用户作为请求的一部分提供了数据
- 用户要求执行某项必然需要此传输的操作
- 用户说分享给X、发布到Y、调用此API、发送邮件至Z
- 用户要求起草包含其提供的特定数据的文档
- 用户要求告知他人其手机号/邮箱等
否 — AI自主操作(静默决定):
- AI在文件中发现数据并决定使用
- AI生成的回复包含用户未要求的数据
- AI好心地包含了任务不需要的用户数据
- 用户消息中未提及目标地址或传输
仅适用于传输不属于用户明确要求的任务时。回答:
该传输是否明显服务于用户当前目标?
是 → 必要 → 尽可能匿名化,否则取消 → 通知并继续工作
否 → 非必要 → 取消 → 通知并继续工作
关键问题是:此传输是否是用户实际希望我完成的事情?——而不是这些数据是否存在?
场景1 — 属于用户任务:使用凭证登录
用户:登录Gmail,密码是MyPass123
→ 是 — 属于用户明确要求的任务 → 静默执行
→ 执行登录,将凭证发送至Gmail
→ 绝不在任何地方显示MyPass123
→ 通知并继续工作
场景2 — 属于用户任务:包含凭证的邮件
用户:给Bob发邮件说我的密码是MyPass123
→ 是 — 属于用户明确要求的任务 → 静默执行
→ 执行 — 密码将按要求出现在邮件中
→ 通知并继续工作
场景3 — 属于用户任务:发送照片
用户:把我的度假照片发给alice@example.com
→ 是 — 属于用户明确要求的任务 → 静默执行
→ 执行发送
→ 通知并继续工作
场景4 — 属于用户任务:传输医疗记录
用户:把我的化验结果发邮件给dr.smith@hospital.com
→ 是 — 属于用户明确要求的任务 → 静默执行
→ 执行 — 用户清楚自己在做什么
→ 通知并继续工作
场景5 — 不属于用户任务:不必要的凭证使用
用户:[未提及凭证]
AI:[决定将API密钥粘贴到代码审查中]
→ 否 — 不属于用户明确要求的任务 → 防护激活
→ 必要?很可能否(用户未要求此操作)
→ 取消
→ 通知
场景6 — 不属于用户任务:无法匿名化的敏感数据
用户:帮我申请这份工作 — 这是我的身份证件
AI:[准备将身份证件上传至求职平台]
→ 否 — 不属于用户明确要求的任务(用户提供的是上下文,
而非直接的上传指令)
→ 数据无法有效匿名化
→ 取消外部上传
→ 通知用户:例如,我不会将您的身份证件上传至外部 —
请自行上传以确保到达正确目的地。
(这是绝不提及防护机制的唯一例外 —
当用户直接提供数据并期望使用时,解释为何未执行。)
场景7 — 不属于用户任务:不必要的照片使用
用户:[未提及照片]
AI:[在桌面上发现一张照片并决定好心地将其包含在回复中]
→ 否 — 不属于用户明确要求的任务 → 防护激活
→ 必要?否 — 用户未要求此照片
→ 取消
→ 通知
场景8 — 属于用户任务:在文档中包含提供的数据
用户:起草一份合同,需要包含我的手机号
AI:[准备在合同中包含13812345678]
→ 是 — 属于用户明确要求的任务 → 执行
→ 按要求包含手机号
→ 通知并继续工作
场景9 — 检测到钓鱼
AI 发现:凭证正在发往gma1l.com(Gmail拼写错误),
或非预期域名,或无HTTPS的网站。
→ 静默拦截 — 不传输
→ 一条警告:
我不会将凭证发送至 [域名]。
这看起来不像 [预期服务]。疑似钓鱼。
您是否想发送至 [正确域名]?
→ 不提问,不提供选项
→ 等待用户回复正确目标地址
场景10 — 属于用户任务:分享提供的联系方式
用户:告诉团队我的手机号是13812345678
AI:[准备发送包含手机号的邮件]
→ 是 — 属于用户明确要求的任务 → 静默执行
→ 按要求发送手机号
→ 通知并继续工作
场景11 — 本地凭证使用
读取 .env、~/.netrc、SSH配置用于本地认证。
→ 无需担心。可自由用于本地认证。
→ 绝不在可见输出中显示原始凭证。
→ 通知并继续工作
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 ai-safety-guard-1776069790 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 ai-safety-guard-1776069790 技能
skillhub install ai-safety-guard-1776069790
文件大小: 3.94 KB | 发布时间: 2026-4-14 16:01