在将文本发送至 LLM 前,对其中的个人数据(姓名、ИНН、СНИЛС、ОГРН、ОГРНИП、护照号、电话号码、邮箱地址、银行账户)进行掩码处理,并在 LLM 返回结果后恢复原始内容……
Brikko PII Mask — Skill для защиты персональных данных是一项面向实际任务的技能,主要用于Этот skil是一项面向实际任务的技能,主要用于персональными данными клиентов: маскирует ПД в тексте перед отправкой;它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;
在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。结果生成后应检查内容的完整性、准确性、一致性和可用性,必要时抽样复核并根据反馈调整配置;涉及外部服务、账号凭据、个人信息或敏感数据时,还需遵守相应的权限、安全与合规要求。
该 skill 为你的 agent 提供安全处理客户个人数据的能力:在将文本发送至 LLM 前自动屏蔽其中的个人数据(PII),并在 LLM 返回响应后还原原始数据。
请在以下情况使用本 skill:
请勿使用本 skill 的情形:
count=0)1. mask: 明文 → 脱敏文本 + mapping_id(保存 1 小时) 2. LLM: 脱敏文本 → 响应(响应中仍含占位符) 3. restore: 响应 + mapping_id → 还原后的响应 4. 将还原后的响应返回给用户
python3 scripts/mask.py
# stdin: 含个人数据的文本
# stdout: JSON 格式 {"masked_text", "mapping_id", "count", "audit"}
示例:
import json, subprocess
text = "Клиент Иванов Иван Иванович, ИНН 7707083893, тел +7 999 123 45 67"
result = json.loads(subprocess.check_output(
["python3", "scripts/mask.py"],
input=text, text=True
))
# result["masked_text"] → "Клиент , ИНН , тел "
# result["mapping_id"] → "abc123..."
# result["count"] → 3
支持任意模型提供商:Claude API、OpenAI API 或本地部署模型,均无限制。此时文本已不含任何个人数据。请务必保存步骤 1 中返回的 mapping_id,供步骤 3 使用。
python3 scripts/restore.py --mapping-id abc123... # stdin: 来自 LLM 的响应(含占位符) # stdout: 含真实个人数据的文本
restored = subprocess.check_output(
["python3", "scripts/restore.py", "--mapping-id", result["mapping_id"]],
input=llm_response, text=True
).strip()
# restored 中包含真实姓名/ИНН/电话,而非 //
本 skill 使用 Brikko Gateway API(https://api.brikko.ru/v1/anonymize 和 /v1/restore)。获取 API 密钥的方法如下:
export BRIKKO_API_KEY=sk-brk-...计费说明:在 M2 环境中,数据脱敏服务免费(本 skill 推广期专属优惠)。仅通过 api.brikko.ru 发起的 chat-completions 请求按各模型提供商标准费率计费,并额外加收 15% Brikko 平台服务费。
自托管替代方案:可通过 npm install -g brikko-cli && brikko init 在本地安装 Brikko Studio;当环境变量 BRIKKO_API_URL 指向 http://localhost:3737 时,skill 将自动切换至本地服务。
| 类别 | 示例 | 校验机制 |
|---|---|---|
NAME |
Иванов / Иванову / Иванова(俄语姓氏变格形式) | — |
INN |
7707083893(10 位,适用于法人实体),770708389300(12 位,适用于自然人) | ✓ 俄罗斯联邦税务局(ФНС)校验算法 |
SNILS |
123-456-789 01 | ✓ |
OGRN |
1027700132195(13 位) | ✓ |
OGRNIP |
304500116000157(15 位) | ✓ |
PASSPORT_RF |
4509 123456 | 正则匹配 |
PHONE_RF |
+7 999 123 45 67,8(495)1234567 | 正则匹配 |
EMAIL |
user@example.com | 正则匹配 |
BANK_ACCOUNT_RF |
40702810500000123456(20 位) | ✓ 银行账号校验位 |
IPV4 |
192.168.1.1 | 正则匹配 |
得益于 checksum 校验机制,误报率(False-positive ratio)低于 1%(若无该校验,文本中任意连续 10 位数字——例如缺少 +7 前缀的电话号码或设备序列号——均可能被误判为 INN)。
| 错误类型 | Skill 行为 |
|---|---|
环境变量中未设置 BRIKKO_API_KEY |
退出码 2,并提示注册指引 |
| api.brikko.ru 不可达 | 重试 3 次,失败后以退出码 1 返回网络诊断信息 |
mapping_id 已过期(mask 与 restore 时间间隔超过 1 小时) |
原样返回含占位符的文本,并附加 warning 提示 |
| 输入文本体积 > 1 MB | 退出码 2,并提示分块(chunk)处理 |
# 将本 skill 集成至 OpenClaw / Claude Code 项目 # (具体集成方式依所选生态而定,请参考 README.md) # 测试请求 echo "Клиент Иванов, ИНН 7707083893" | python3 scripts/mask.py # 期望 stdout:JSON 格式,含 masked_text="Клиент, ИНН "
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习