對任意格式的資料執行隱私脫敏,內建中國個人隱私識別規則,支援使用者追加自定義欄位和策略。
v3 核心升級:
<password>secret</password> 現在也能命中password: "secret" → password: "[REDACTED]",引號不丟失- 手機13812345678 也會被掃描= / :)張三 → 張*,視覺對齊更準確| 格式 | 副檔名 | 引擎 | 說明 |
|---|---|---|---|
| 純文本 | .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強制指定。
company_id 也脫敏")。references/desensitize_rules.md)。在分析時,讀取 references/desensitize_rules.md 以瞭解完整的內建規則和欄位關鍵詞對映。
根據資料規模和複雜度,選擇以下兩種方式之一:
使用 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本技能來自小蔥技能站7w4.net。
指令碼引數速查:
| 引數 | 說明 |
|---|---|
--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 |
列出所有脫敏策略 |
當用戶貼上的資料量很小(< 50行 / < 3KB),直接在回覆中完成脫敏並展示結果,無需呼叫指令碼。
內聯處理規則(按優先順序):
138****5678(前3後4)1101**********1234(前4後4)u***@e***.com6222********7890(前4後4)[REDACTED]張*(保留姓氏)***.***.***.***上海市***| 策略 | 效果 | 示例 |
|---|---|---|
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)新增自定義策略。
內建自動識別以下欄位(文本正則和欄位名雙重檢測):
詳細規則和欄位關鍵詞對映見 references/desensitize_rules.md。
""、null)不觸發脫敏<password>secret</password> → <password>[REDACTED]</password><user phone="13812345678"/> → phone 欄位命中password: "secret" → password: "[REDACTED]"- 手機13812345678 也會被掃描使用者: 形式的 key 正常解析正文區域的隱私資訊會被脫敏,但程式碼塊(```圍欄和行內程式碼)內容保持原樣。
= 或 :)_KvLineEngine 基類逐行正則掃描,保留時間戳、日誌級別等結構資訊。custom_fields 邏輯已修復。
→ 直接使用內聯方式處理,展示脫敏前後對比。
→ 呼叫指令碼 --file xxx.json --auto --show-hits,輸出脫敏結果。
→ 呼叫指令碼 --file config.yaml --auto --show-hits。
→ 解析使用者指定欄位,構建 --fields 引數,呼叫指令碼。
→ 在原檔名末尾追加 _masked,使用 --output 引數寫入。
→ 使用 --no-auto --fields "phone:mask,email:email_mask" 關閉自動檢測,僅處理指定欄位。
→ 呼叫指令碼 --file app.log --auto --output app_masked.log。
→ 呼叫指令碼 --file doc.md --auto,程式碼塊自動保護。
→ 呼叫指令碼 --file data.xml --auto,標籤名+屬性雙重匹配。
--dry-run 確認影響範圍。這個 Skill 質量不錯,功能齊全,支援多種檔案格式的智慧脫敏,能自動識別手機號、身份證、郵箱等常見隱私資訊,處理中文資料也比較友好。對於日常隱私保護需求來說足夠用了。不足之處是極端複雜的資料結構可能支援有限,大檔案處理能力一般。如果你只是普通辦公使用,它完全能勝任;如果要處理專業級資料安全場景,可能還需要更完善的方案。