GitHub 仓库地址: GitHub – alakulo/privsan: An offline-first CLI and TUI for scanning and redacting sensitive data in local files. Detects phone numbers, emails, Chinese ID numbers, and IP addresses, with dry-run previews, configurable rules, JSON output for AI agents, and backup-based recovery. Built with Go and Bubble Tea. No data uploads. · GitHubAn offline-first CLI and TUI for scanning and redacting sensitive data in local files. Detects phone numbers, emails, Chinese ID numbers, and IP addresses, with dry-run previews, configurable rules, JSON output for AI agents, and backup-based recovery. Built with Go and Bubble Tea. No data uploads. – alakulo/privsan
https://github.com/alakulo/privsan
觉得有用的话,点个 Star ⭐️ 支持一下吧!也欢迎提 Issue 反馈问题或建议。
在AI时代,我们经常需要将日志、文档或测试数据喂给各种在线服务。但你是否担心过其中的手机号、邮箱、身份证号甚至IP地址会随之泄露?今天推荐一个我发现的宝藏开源项目——Privsan,它能在数据离开你的机器之前,帮你完成所有脱敏工作。
为什么你需要 Privsan?
在日常开发和运维中,我们常常面临这样的场景:
-
调试线上问题,需要把日志发给同事或粘贴到Issue里。
-
使用云端AI助手分析代码或文档。
-
准备测试数据,但不想使用真实的用户隐私信息。
手动查找替换不仅效率低下,而且极易遗漏。Privsan 正是为了解决这个痛点而生。它的核心理念是 “Keep sensitive data local. Share only what you choose.” (让敏感数据留在本地,只分享你选择的内容)。
核心功能一览:简单、强大、安全
Privsan 是一个用 Go 编写的命令行工具(CLI)和终端界面(TUI),具有以下令人印象深刻的特点:
1. 完全离线,隐私无忧
所有扫描和脱敏操作都在本地进行,没有任何数据上传、遥测或账户要求。扫描默认是只读的,不会修改你的原始文件。对于有严格合规要求的环境,这一点至关重要。
2. 开箱即用的智能检测
内置了对常见敏感信息的检测规则,包括:
-
中国大陆手机号
-
电子邮箱地址
-
18位中国身份证号(支持日期和校验码验证)
-
IPv4 / IPv6 地址
它会将这些信息自动替换为 [PHONE]、[EMAIL]、[ID]、[IP] 等占位符。
3. 交互式终端界面 (TUI)
这是 Privsan 的一大亮点。通过 ./privsan tui –dry-run ./examples 命令,你可以启动一个基于 Bubble Tea 构建的终端界面。
在这个界面里,你可以:
-
按文件浏览所有发现的敏感项。
-
使用空格键选择或取消选择需要脱敏的条目。
-
实时预览脱敏后的文本效果。
-
所有预览都会遮罩所有检测到的值,让你清晰看到哪些内容会被替换,而实际替换的只是你选中的部分。
这种“先预览,后操作”的方式,极大地避免了误操作。
4. 灵活的脱敏与恢复工作流
-
导出脱敏副本:将处理后的文件输出到新目录,保持原始目录结构,源文件分毫不动。
-
原地脱敏与备份:使用 –in-place 和 –backup-dir 选项,可以在原地修改文件,同时生成带恢复功能的备份。restore 命令可以安全地还原,并且会拒绝覆盖脱敏后被手动修改过的文件。
5. 自定义文本替换
除了隐私脱敏,它还是一个强大的文本替换工具。你可以使用 replace 命令进行精确的查找替换,支持正则表达式和大小写不敏感搜索,同样带有预览和备份工作流。
6. 为 AI Agent 集成而设计
这是非常前瞻的设计。你可以将 Privsan 作为 AI 工作流的前置步骤:
./privsan scan –json –content –hide-paths ./documents
它会输出结构化的 JSON,其中包含了脱敏后的文本内容。只有当整个扫描和操作成功时,内容才会返回,这保证了 Agent 拿到的数据是完整且安全的。你甚至可以通过管道直接处理标准输入/输出:
printf 'contact=alice@example.com\\n'| ./privsan redact –stdin –stdout
# 输出:contact=[EMAIL]
7. 高度可配置的规则
你可以通过一个 policy.json 文件来定义自己的检测规则。例如,添加一个识别 API Token 的规则:
{
"id": "api_token",
"pattern": "sk-[A-Za-z0-9]{12,}",
"replacement": "[TOKEN]",
"priority": 200
}
快速上手体验
安装和体验非常简单,前提是你需要安装 Go 1.26.5+。
# 克隆仓库
git clone https://github.com/alakulo/privsan.git
cd privsan
# 构建
go build -trimpath -o privsan .
# 扫描示例目录(只读,不修改文件)
./privsan scan ./examples
# 启动交互式界面体验(只读模式)
./privsan tui –dry-run ./examples
项目提供了丰富的示例和文档,包括中文的操作手册,上手门槛很低。
项目状态与贡献
目前项目处于 1.0.0-rc.1 版本,已经支持 Windows、Linux 和 macOS 的构建。作者非常欢迎社区的反馈和贡献。
如果你觉得这个工具对你有帮助,或者认同它“本地优先、隐私至上”的理念,不妨去 GitHub 仓库点一个 Star ⭐️,这是对开源作者最大的鼓励。如果你在使用中发现了 Bug 或者有新的功能想法,也欢迎提交 Issue 进行讨论。
GitHub 仓库地址: https://github.com/alakulo/privsan
一点期待: Privsan 目前主要处理文本文件,希望未来能支持更多格式(如 PDF、Office 文档)。另外,如果能有一个简单的配置文件来管理常用的自定义规则,那就更方便了。期待项目越来越好!
希望这篇文章能帮助到有同样需求的开发者。如果你有更好的数据脱敏工具或方法,也欢迎在评论区分享交流。



