多格式数据隐私脱敏
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3299e856/data-desensitization。
技能介绍
要解决什么问题
在联调、写文档、贴日志或导出配置时,你经常要在对话里分享含手机号、身份证、密码、Token 的样本数据。手工查找替换既慢又容易漏字段;不同格式(JSON 字段名、YAML 引号、XML 标签名、日志行内正则)处理方式也不一致,改错还可能破坏文件结构。
本技能面向「不可逆脱敏」场景:在尽量保留原文件排版与分隔符的前提下,把识别到的隐私信息替换为掩码、[REDACTED] 或哈希等策略结果。
技能如何工作
格式与引擎:按扩展名自动选择引擎(也可用 --format 强制),覆盖 .txt、.json、.csv/.tsv、.yaml/.yml、.xml、.md、.ini/.cfg、.properties、.log/.out 等。
识别方式:内置中国个人隐私相关规则,对字段名关键词与文本值正则做双重检测;可通过 references/desensitize_rules.md 查看完整映射。v3 提供 StrategyRegistry,内置六种策略(如 mask、hash、remove、email_mask、name_mask、keep_prefix),并支持运行时注册自定义策略。
典型流程:
- 判断输入是文本片段还是文件路径,必要时确认用户是否要追加自定义字段(如
company_id)。 - 数据量大或需落盘时,优先用
scripts/desensitize.py(--file/--text、--output、--fields、--strategy、--dry-run、--show-hits等)。 - 小段粘贴内容可用内联处理,并展示脱敏前后对比。
格式上的细节(资料中强调的部分):JSON 在字段匹配之外仍扫描字符串值,且单行 JSON 输出保持单行;YAML 保留引号并扫描列表项;XML 同时匹配标签名、属性与文本;Markdown 保护代码块;INI/Properties 保留 =/: 分隔符;日志引擎逐行扫描且已修复 custom_fields 遗漏问题。
适用边界与注意点
- 脱敏不可逆;不确定影响范围时先用
--dry-run或--show-hits预览。 - 需要可逆加密而非脱敏时,不在本技能范围内。
- 超大文件(资料建议 >100MB)宜先确认是否分批;写入磁盘前宜告知用户。
- YAML 为纯 Python 行级解析,不支持锚点、多行折叠等高级特性;极复杂嵌套 XML 建议先用文本模式预览。
使用场景
- 联调时要把含手机号、身份证的 JSON 响应样例贴进 Wiki,需先脱敏且保持单行 JSON 格式不变。
- 发布前审查 `config.yaml` / `application.properties`,用 `--dry-run` 查看哪些 password、token 字段会被命中。
- 从生产 `app.log` 截取错误栈发给外部支持,需掩码手机号、API Key 并输出 `app_masked.log`。
- 用户要求「只处理手机和邮箱」:关闭 `--auto`,用 `--fields phone:mask,email:email_mask` 处理指定列或字段。
适合人员
- 负责写接口文档、常把真实请求/响应 JSON 贴进 Confluence 的后端工程师
- 要把用户导出 CSV/TSV 交给审计或第三方前做字段级脱敏的数据分析/合规同事
- 维护 K8s/中间件配置仓库、需在 PR 里展示 YAML/INI 结构但不能泄露密钥的运维或平台工程师
- 在工单或社区 Issue 中附上 XML/Markdown 样本、且文档里代码块必须原样保留的集成或技术支持人员