LLM 文本水印工具箱:隐形 Unicode 载体清洗与检测、keyed-Gumbel 统计水印重放检测、检测引导的 LLM 改写循环(纯 CPU、零模型推理)
Dependencies
用途边界(与上游一致):本工具用于清理你自己拥有或获得授权的内容中的溯源标记(隐私清理/来源卫生),以及在你自己的水印系统上做鲁棒性评估。不用于学术造假或冒充人写内容。检测为同密钥重放(same-key replay),对他人密钥/厂商检测器不构成 oracle;阴性结果不能证明任何事。
| 子命令 | 层 | 说明 |
|---|---|---|
| wmtool clean | Layer A | 剥离隐形 Unicode 载体(ZWSP/ZWJ/软连字符/bidi 控制/标签字符/私用区/非字符/保留可忽略码点等),空格同形字归一为 U+0020;保留"承重"隐形字符(emoji 胶水、完整旗帜标签序列、同文字系统连接符/填充符等) |
| wmtool inspect | Layer A | 报告可疑码点(类别/名称/次数/偏移),不修改文本 |
| wmtool detect | 统计层 | keyed-Gumbel(Aaronson EXP)重放检测:HMAC-SHA256 重放噪声 + 精确 Poisson p 值 + 重复窗口掩码;文本走确定性分词器,或 --tokens 直接喂引擎 token id |
| wmtool rewrite | Layer B | OpenAI 兼容 API 改写循环(paraphrase/humanize/code/backtranslate/structural 五档强度):生成→评估(gumbel 检测引导或 bigram Jaccard 词法散度)→通过即停/择优;默认仅允许回环地址端点 |
sh web/build.sh # 构建 wasm 并复制到 web/main.wasm (~257KB)
cd web && python3 -m http.server 8765
# 打开 http://localhost:8765moon run cmd/main -- help
moon run cmd/main -- clean input.txt --json
moon run cmd/main -- inspect input.txt
moon run cmd/main -- detect input.txt --key '0x00112233' --window 4
moon run cmd/main -- detect ids.json --tokens --key my-key
moon run cmd/main -- rewrite input.txt --strength paraphrase --print-prompt
moon run cmd/main -- rewrite input.txt --model llama3.2 --gumbel-key K --max-loops 3src/unicodedata/ 生成的码点表(Cf 全集/脚本字母区间/标签) + 查询函数
src/clean/ Layer A: decide/clean_text/inspect_text 移植
src/gumbel/ HMAC-SHA256、keyed-Gumbel 重放检测、Poisson survival
src/rewrite/ prompt 模板、bigram Jaccard 散度、OpenAI 兼容调用、改写循环
cmd/main/ argparse CLI
tools/ 向量/表生成器(Python)
reference/ 上游参考源码副本(对拍用)Install
Download zipLLM 文本水印工具箱:隐形 Unicode 载体清洗与检测、keyed-Gumbel 统计水印重放检测、检测引导的 LLM 改写循环(纯 CPU、零模型推理)
Dependencies