源文件:chapter2/log-sanitization/README.md Log Sanitization / 日志脱敏 本实验演示如何从 Agent 的日志与工具输出中检测并脱敏敏感信息。它提供两种互补的脱敏引擎: 离线规则引擎(regex,默认) —— 纯正则表达式 + 校验算法(Luhn、身份证校验码), 无需 Ollama、无需网络、无需外部框架,结果确定、速度快,适合作为日志落盘前的第一道防线。 它同时覆盖 Agent 场景中最常泄露的密钥类敏感信息(API Key、云厂商令牌、私钥、连接串口令) 与传统 PII(身份证、手机号、信用卡、邮箱等)。 本地 LLM 引擎(llm) —— 通过 Ollama 调用一个本地小模型(默认 )语义识别 Level 3 PII。
源文件:chapter2/log-sanitization/README.md
本实验演示如何从 Agent 的日志与工具输出中检测并脱敏敏感信息。它提供两种互补的脱敏引擎:
qwen3:0.6b)语义识别想快速看效果,直接运行
python main.py --demo(离线,无需任何依赖)即可看到多个代表性样本的
before/after 对比与脱敏类别汇总。
regex_sanitizer.py 按优先级处理以下类别(重叠时高优先级规则胜出),每类替换为带标签的占位符:
| 类别 | 占位符 | 说明 |
|---|---|---|
| 私钥 / 证书 | [REDACTED_PRIVATE_KEY] |
PEM 私钥块 |
| JWT | [REDACTED_JWT] |
eyJ... 三段式令牌 |
| 连接串凭据 | [REDACTED_URL_CRED] |
scheme://user:PASSWORD@host |
| AWS 访问密钥 | [REDACTED_AWS_KEY] |
AKIA... |
| GitHub / Slack / Google / OpenAI 密钥 | [REDACTED_*_TOKEN] / [REDACTED_API_KEY] |
ghp_、xoxb-、AIza、sk- |
| Bearer 令牌 | [REDACTED_BEARER_TOKEN] |
Authorization: Bearer ... |
| 口令 / 密钥赋值 | [REDACTED_SECRET] |
password=...、token: ... 等 |
| 邮箱 | [REDACTED_EMAIL] |
|
| 信用卡号 | [REDACTED_CREDIT_CARD] |
通过 Luhn 校验,降低误报 |
| IBAN | [REDACTED_IBAN] |
国际银行账号 |
| 美国社保号 | [REDACTED_SSN] |
|
| 身份证号 | [REDACTED_ID_CARD] |
中国大陆 18 位,含校验码验证 |
| 手机号 | [REDACTED_PHONE] |
中国大陆 |
| IP 地址 | [REDACTED_IP] |
IPv4 |
依据隐私保护架构,Level 3 PII 包含高度敏感的信息:
qwen3:0.6b)做隐私保护的 PII 检测<think> 标签展示模型的思考过程,提升透明度通用回退(OpenRouter):本实验默认用本地 Ollama 小模型。若 Ollama 不可用
(未运行 / 不可达)且设置了OPENROUTER_API_KEY,Agent 会自动改走 OpenRouter
(默认托管模型openai/gpt-5.6-luna)。想强制走回退做验证,可把 Ollama 指到一个
不可达端口:export OLLAMA_HOST=http://127.0.0.1:1。
brew install ollama ollama serve # Run in separate terminal
curl -fsSL https://ollama.com/install.sh | sh systemctl start ollama
从 ollama.com 下载。
说明:以下 Ollama 相关步骤仅在使用
--mode llm(本地 LLM 引擎)或运行 LLM 批量评测路径时才需要。
离线规则引擎(--demo、--input)只依赖 Python 标准库,无需安装 Ollama。
ollama pull qwen3:0.6b
注意:0.6B 模型大约需要 500MB 磁盘空间(可按需换用 qwen3:1.7b、qwen3:4b 提升准确率)。
pip install -r requirements.txt
完整参数说明见 python main.py --help(中文)。
对多个内置代表性样本展示 before/after 与脱敏类别汇总:
python main.py --demo
python main.py --input app.log # 结果写到 app.log.sanitized python main.py --input app.log -o cleaned.log # 指定输出文件
也可以直接运行规则引擎模块,仅对内置样本做演示:
python regex_sanitizer.py
上述演示 / 文件脱敏加 --mode llm 即改用本地 Ollama 模型:
python main.py --demo --mode llm python main.py --input app.log --mode llm --model qwen3:1.7b
处理来自 user-memory-evaluation 的全部复杂测试用例(该路径固定使用 LLM,需要 Ollama 与 chapter3 评测框架):
python main.py
python main.py --test-id layer3_13_emergency_medical_cascade
只处理前 N 个测试用例:
python main.py --limit 3
python main.py --demo --mode llm --model qwen3:4b # 默认 qwen3:0.6b
脱敏后的日志与指标保存在 output/ 目录:
output/ ├── <test_id>_sanitized.txt # Sanitized conversation text ├── <test_id>_summary.json # Summary of PII found and replaced ├── performance_metrics.json # Detailed performance metrics └── performance_summary.json # Aggregated performance statistics
系统为每段对话追踪以下指标:
🚀 Starting Log Sanitization with Local LLM ============================================================ 📦 Loading test cases from user-memory-evaluation... 🤖 Initializing Ollama agent... ✅ Using model: qwen3:0.6b [1/1] Test Case: layer3_13_emergency_medical_cascade Title: Emergency Medical Crisis - Multi-System Coordination Response Conversations: 8 🔍 Processing conversation: emergency_room_001 Found 3 PII items - 123-45-6789 - 4532 1234 5678 9012 - MRN-789456 ============================================================ PERFORMANCE SUMMARY ============================================================ 📊 Total Conversations Processed: 8 ⏱️ Timing Metrics (milliseconds): Prefill (TTFT): 125.34 ms (median: 118.50) Output Time: 234.67 ms (median: 220.00) Total Time: 360.01 ms (median: 338.50) 📝 Token Metrics: Average Input Tokens: 450.5 Average Output Tokens: 25.3 Total Tokens Processed: 4206 ⚡ Speed Metrics (tokens/second): Prefill Speed: 3592.8 tok/s Output Speed: 107.8 tok/s 🔒 Sanitization Results: Total PII Items Found: 24 Total Replacements Made: 48 Average PII per Conversation: 3.0
项目由若干模块组成:
确保 Ollama 已安装并在运行:
ollama serve
拉取该模型:
ollama pull qwen3:0.6b
确保 user-memory-evaluation 项目存在于:
../user-memory-evaluation/