data-desensitization

👤 littleplus 📦 v1.0.0 ⭐ 4.5 ⬇️ 320 下載
📊 資料分析 免費

📖 技能介紹


name: data-desensitization description: "資料脫敏 Skill。當用戶需要對含有敏感資訊的資料進行脫敏處理時使用,預設支援個人隱私欄位自動識別脫敏,也支援自定義欄位名和脫敏策略。支援 10+ 種檔案格式:JSON/CSV/TSV/YAML/XML/Markdown/INI/Properties/Log/純文本。適用場景包括:處理使用者資料前傳給大模型、清洗匯出資料集、過濾日誌中的隱私資訊、對配置檔案中的敏感欄位進行掩碼/雜湊/移除操作。觸發詞:脫敏、資料脫敏、隱私脫敏、敏感欄位、敏感資訊、掩碼、手機號脫敏、身份證脫敏、郵箱脫敏、銀行卡脫敏、姓名脫敏、隱私保護、資料清洗、GDPR、個人資訊保護、配置脫敏、日誌脫敏、desensitize、mask sensitive、anonymize、redact、PII、privacy data"


Data Desensitization Skill (v3)

能力概述

對任意格式的資料執行隱私脫敏,內建中國個人隱私識別規則,支援使用者追加自定義欄位和策略。

v3 核心升級: - 策略登錄檔(StrategyRegistry):6 種內建策略,支援執行時註冊自定義策略 - XML 標籤名匹配<password>secret</password> 現在也能命中 - YAML 引號保留password: "secret"password: "[REDACTED]",引號不丟失 - YAML 列表項脫敏- 手機13812345678 也會被掃描 - INI/Properties 合併基類:消除程式碼重複,保留原始分隔符(= / :) - Log 引擎修復:custom_fields 不再遺漏 - JSON 格式保持:單行 JSON 輸出仍為單行 - 中文寬度感知:姓名脫敏 張三張*,視覺對齊更準確


支援的檔案格式

格式 副檔名 引擎 說明
純文本 .txt TextEngine 正則全文掃描
JSON .json JSONEngine 遞迴遍歷 + 文本值正則 + 格式保持
CSV .csv CSVEngine 列名匹配 + 正則
TSV .tsv TSVEngine 製表符分隔
YAML .yaml/.yml YAMLEngine 行級解析 + 引號保留 + 列表項
XML .xml XMLEngine 標籤名 + 屬性 + 文本內容
Markdown .md MarkdownEngine 程式碼塊保護
INI .ini/.cfg INIEngine section/key=value + 分隔符保留
Properties .properties PropertiesEngine Java 屬性檔案
日誌 .log/.out LogEngine 逐行正則掃描

格式自動檢測:根據副檔名自動選擇引擎,也可用 --format 強制指定。

小蔥技能站7w4.net每天更新,海量AI技能等你發現。


工作流程

Phase 1:分析資料與需求

  1. 判斷使用者輸入的資料型別(文本片段 / 檔案路徑)。
  2. 如為檔案,自動檢測格式(支援 10+ 種副檔名)。
  3. 確認是否有自定義欄位要求(如使用者說"把 company_id 也脫敏")。
  4. 如使用者未指定策略,採用預設規則(見 references/desensitize_rules.md)。

在分析時,讀取 references/desensitize_rules.md 以瞭解完整的內建規則和欄位關鍵詞對映。


Phase 2:選擇執行方式

根據資料規模和複雜度,選擇以下兩種方式之一:

方式 A:呼叫指令碼(推薦,適合檔案和大量資料)

使用 scripts/desensitize.py 指令碼處理。系統 Python 命令為 python3

常用命令示例:

# 脫敏自由文本
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --text "手機:13812345678,郵箱:user@example.com"

# 自動脫敏 JSON 檔案(含文本值正則掃描)
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/data.json --auto --show-hits

# 脫敏 YAML 配置檔案
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/config.yaml --fields "password:remove,api_key:remove" --show-hits

# 脫敏 XML 檔案(標籤名 + 屬性雙重匹配)
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/data.xml --auto --output data_masked.xml

# 脫敏 Markdown(程式碼塊保護)
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/readme.md --auto --show-hits

# 脫敏日誌檔案
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/app.log --auto --output app_masked.log

# 脫敏 INI 配置(保留原始分隔符)
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/settings.ini --fields "db_password:remove"

# 僅欄位名匹配,關閉正則掃描
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/data.json --auto --no-regex --show-hits

# Dry Run:僅檢視哪些欄位會被命中
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py \
  --file /path/to/data.json --auto --dry-run

# 列出所有支援的格式
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py --list-formats

# 列出所有脫敏策略
python3 ~/.workbuddy/skills/data-desensitization/scripts/desensitize.py --list-strategies

指令碼引數速查:

引數 說明
--text / -t 直接傳入文本字串
--file / -f 輸入檔案路徑(自動檢測格式)
--output / -o 輸出檔案路徑(預設列印終端)
--fields 自定義欄位,逗號分隔,支援 field:strategy
--strategy / -s 預設策略(mask/hash/remove/email_mask/name_mask/keep_prefix)
--auto / --no-auto 開啟/關閉自動檢測(預設開啟)
--no-regex 關閉對文本值的正則掃描(僅欄位名匹配)
--format 強制指定格式(json/csv/tsv/yaml/xml/markdown/ini/properties/log/text)
--show-hits 列印命中的欄位或規則
--dry-run 僅輸出命中資訊,不執行脫敏
--list-formats 列出所有支援的格式
--list-strategies 列出所有脫敏策略

方式 B:內聯處理(適合小段文本或簡單結構)

當用戶貼上的資料量很小(< 50行 / < 3KB),直接在回覆中完成脫敏並展示結果,無需呼叫指令碼。

內聯處理規則(按優先順序): 1. 手機號 → 138****5678(前3後4) 2. 身份證 → 1101**********1234(前4後4) 3. 郵箱 → u***@e***.com 4. 銀行卡號 → 6222********7890(前4後4) 5. 密碼/Token → [REDACTED] 6. 姓名 → 張*(保留姓氏) 7. IP 地址 → ***.***.***.*** 8. 地址 → 上海市***


Phase 3:輸出結果

  1. 脫敏後的資料:完整展示脫敏結果。
  2. 命中摘要:列出被脫敏的欄位/規則及數量。
  3. 策略說明(可選):如使用者詢問,解釋各欄位採用的策略及原因。
  4. 輸出檔案:如使用者提供了檔案路徑,說明脫敏後文件的儲存位置。

支援的脫敏策略

策略 效果 示例
mask 中間掩碼,保留首尾 138****5678
email_mask 郵箱專用掩碼 u***@e***.com
name_mask 姓名專用:保姓掩名(中文寬度感知) 張*
hash SHA256 前16位 a3f2c891b04d7e12
remove 完全替換為 [REDACTED] [REDACTED]
keep_prefix 僅保留前N位 上海市***

策略登錄檔支援執行時擴充套件:通過 STRATEGY_REGISTRY.register(name, fn) 新增自定義策略。


預設隱私欄位覆蓋範圍

內建自動識別以下欄位(文本正則欄位名雙重檢測):

  • 通訊類:手機號、固話、郵箱
  • 證件類:身份證、護照、駕照(通用18位格式)
  • 金融類:銀行卡號、賬號、薪資收入
  • 憑證類:密碼、金鑰、Token、API Key(預設 remove)
  • 位置類:家庭地址、IP 地址
  • 人員類:姓名、使用者名稱
  • 時間類:生日、出生日期

詳細規則和欄位關鍵詞對映見 references/desensitize_rules.md


格式特殊處理

JSON:雙重脫敏 + 格式保持

  • 欄位名匹配 + 文本值正則掃描
  • 單行保持:原始 JSON 為單行時,輸出仍為單行
  • 空值(""null)不觸發脫敏

XML:標籤名 + 屬性 + 文本

  • 標籤名匹配<password>secret</password><password>[REDACTED]</password>
  • 屬性匹配<user phone="13812345678"/>phone 欄位命中
  • 引號型別保留:原始用雙引號就保留雙引號

YAML:引號保留 + 列表項

  • 引號包裹保留password: "secret"password: "[REDACTED]"
  • 列表項脫敏- 手機13812345678 也會被掃描
  • 中文 key使用者: 形式的 key 正常解析
  • 行級解析,無需 PyYAML 依賴

Markdown:程式碼塊保護

正文區域的隱私資訊會被脫敏,但程式碼塊(```圍欄和行內程式碼)內容保持原樣。

INI/Properties:分隔符保留

  • 保留原始分隔符(=:
  • 註釋行和空行原樣保留
  • 程式碼結構合併為 _KvLineEngine 基類

日誌:格式保留

逐行正則掃描,保留時間戳、日誌級別等結構資訊。custom_fields 邏輯已修復。


常見場景處理

場景1:使用者貼上一段含隱私的文本

→ 直接使用內聯方式處理,展示脫敏前後對比。

場景2:使用者上傳/指定 JSON 檔案

→ 呼叫指令碼 --file xxx.json --auto --show-hits,輸出脫敏結果。

場景3:使用者要求對 YAML 配置脫敏

→ 呼叫指令碼 --file config.yaml --auto --show-hits

場景4:使用者要求對特定欄位脫敏

→ 解析使用者指定欄位,構建 --fields 引數,呼叫指令碼。

場景5:使用者要求脫敏後儲存新檔案

→ 在原檔名末尾追加 _masked,使用 --output 引數寫入。

場景6:使用者說"只脫敏手機和郵箱,不要改其他的"

→ 使用 --no-auto --fields "phone:mask,email:email_mask" 關閉自動檢測,僅處理指定欄位。

場景7:使用者上傳日誌檔案

→ 呼叫指令碼 --file app.log --auto --output app_masked.log

場景8:使用者上傳 Markdown 文件

→ 呼叫指令碼 --file doc.md --auto,程式碼塊自動保護。

場景9:使用者上傳 XML 資料

→ 呼叫指令碼 --file data.xml --auto,標籤名+屬性雙重匹配。


注意事項

  • 脫敏操作不可逆,執行前可先執行 --dry-run 確認影響範圍。
  • 處理敏感檔案時,建議在告知使用者後再寫入磁碟。
  • 超大檔案(> 100MB)建議先詢問使用者是否分批處理。
  • 如使用者需要可逆加密(而非不可逆脫敏),說明這超出本 Skill 範圍,建議使用對稱加密方案。
  • XML 引擎使用正則解析,超複雜巢狀 XML(如 SOAP 訊息)建議先用文本模式預覽。
  • YAML 引擎為純 Python 實現,不支援多行字串摺疊、錨點引用等高階特性。

🤖 AI 評測

這個 Skill 質量不錯,功能齊全,支援多種檔案格式的智慧脫敏,能自動識別手機號、身份證、郵箱等常見隱私資訊,處理中文資料也比較友好。對於日常隱私保護需求來說足夠用了。不足之處是極端複雜的資料結構可能支援有限,大檔案處理能力一般。如果你只是普通辦公使用,它完全能勝任;如果要處理專業級資料安全場景,可能還需要更完善的方案。

📊 多維度評分

適應性4.5
規範性4.2
有效性4.7
可靠性4.3
可信度4.9

📁 包含檔案 (3 個)

📄 SKILL.md 10.7 KB
📄 references/desensitize_rules.md 9.5 KB
📄 scripts/desensitize.py 38.2 KB