想让 AI 帮你处理文件,又不想把身份证号、账户、客户资料交给云端模型——这件事不靠模型承诺「不看」,靠架构让它「拿不到」。开源世界已经能搭出这套边界,但项目之间成熟度差异极大:有的是微软出身的工业件,有的只有 9 个星标还停更了 4 个月,还有一个知名安全库刚刚归档。这篇盘点安全与脱敏相关的开源项目,每个仓库的许可证和维护状态都是我们 2026-08-19/20 逐个核过的,另附我们自己跑出来的检测层实测数。
总架构:五层体系
可靠路线不是找一个「万能私有 AI 软件」,而是五层各司其职:
| 层 | 职责 | 代表项目 |
|---|---|---|
| 私有工作区 | 用户界面、文档、RAG,本身不做安全承诺 | Open WebUI、AnythingLLM、Onyx、LibreChat、Bionic |
| 本地 PII 处理 | 外发之前检测、掩码、匿名化 | Presidio、GLiNER |
| 唯一模型出口 | 全系统只有这一个组件持有云模型密钥并放行请求 | LiteLLM、Occludra、AegisGate |
| 策略与授权 | 谁、对哪份文档、能用哪个工具 | OpenFGA、OPA |
| 去内容化审计 | 记「发生了什么」,不留原文 | Langfuse(自托管)、加密本地存储(SQLCipher) |
判断任何一个方案时先问一句:云模型密钥在谁手里? 如果界面、插件、脚本都能直连 OpenAI/Anthropic,那前面做再多脱敏都是装饰——旁路永远比正门宽。
检测层:Presidio 与 GLiNER,加我们的实测
Presidio(
10.5k · MIT · 08-11 活跃)是最成熟的开源 PII 检测/匿名化引擎,支持规则、正则、NER、图像与结构化数据。两个必须知道的点:仓库已从 microsoft 组织迁到 data-privacy-stack 组织,供应链引用要跟着改;官方原文明确「无法保证发现全部敏感信息」——这不是谦虚,是数学事实,所有 PII 检测器都一样。
GLiNER(
3.6k · Apache-2.0 · 08-10 活跃)是零样本 NER 模型家族,其中 multi-pii 专用模型只有 0.3B 参数。我们用 72 份合成中英混排业务文书(含 1,152 个标注敏感值)实测过它。先说清口径:以下全部数字来自合成语料,只能证明下界——真实扫描件、表格、别名场景必然更难,数字会更差:
- 召回 98.1%,CPU 上 0.9 秒/篇(2026-08-18 实测,合成语料);
- 用通用 7B 模型(qwen2.5 两趟提示)做同一件事:召回完全相同,耗时 30–70 倍——检测敏感实体这个活,专用小模型就是比通用大模型划算;
- 泄漏率阶梯(判据从严:标注值原字符串出现在将要外发的内容里就算泄漏,检测到但替换失败也算):只做正则 55.2% → 加本地 NER 1.1% → 再加按案件积累的当事人词表 0.1%。
三个数都来自合成语料,只证下界——真实扫描件、表格、别名会更难,我们还没测完,测完会更新。但阶梯本身说明一件事:上下文记忆是安全机制,不是便利功能。把「这个案子里出现过哪些人」记下来,识别就从「模型猜」变成「精确匹配」,这是无状态脱敏代理在结构上做不到的。
出口层:一个成熟方案和三个早期项目
LiteLLM(
56.8k · 08-20 活跃)是当前最稳的开源模型网关:自托管、虚拟密钥、路由,配 Presidio 可在调用前掩码或阻断。两个陷阱:
pre_call与logging_only是天壤之别——前者在请求到达云模型之前拦截,后者只把日志脱敏、原文照发。配置错这一个字段,整套体系形同虚设。- 许可证是「核心 MIT + enterprise 目录另行授权」,但 2026-07 有社区 issue(BerriAI/litellm #34241)反映部分企业版功能的门禁逻辑与 MIT 代码混编、目录边界未完全拆分——官方尚无正式裁决。商用前以官方最新代码和书面授权确认为准,别只看目录名。
三个更新更小的出口层项目,共同点是想法对、体量小,只适合 PoC:Occludra Gateway(
31 · Apache-2.0 · 08-16)自托管 OpenAI 兼容代理,PII/密钥扫描+注入阻断,OSS 版需自带各厂商 API Key;AegisGate(
59 · MIT · 08-19)给 Cursor/Claude Code 这类编程代理的流量加安全层,但它的 passthrough 模式会跳过全部检测,官方自己标注「仅限内网/危险」;Septum(
9 · MIT · 最后提交 04-29,已停约 4 个月)「先掩码、人工批准、后外发、本地恢复」的设计最贴合合规直觉,可惜维护存疑。
警示:LLM Guard(
3.2k)已于 2026-07-09 官方归档,不宜再作为新系统依赖。一个 3 千星的知名安全库说停就停——这就是为什么选型要查 archived 字段而不是看博客推荐。
工作区层:好用,但别把它当防线
| 项目 | 星标/许可证(实测) | 必须知道的一件事 |
|---|---|---|
| Open WebUI | 149.3k · 专用许可 | 2025-04 起非 OSI 许可:30 天窗口内超 50 个用户必须保留其品牌,想去牌需购企业授权。自有品牌对客服务的要先过这关 |
| AnythingLLM | 64.9k · MIT | 官方确认:关闭遥测后仍可能连模型镜像 CDN 与 GitHub 静态文件;「自托管≠零外联」,合规证据要靠网络层抓包,不是应用内开关 |
| LibreChat | 42.3k · MIT | 认证体系全(OIDC/SAML/LDAP),但没有默认的外发前 PII 脱敏——需前置网关 |
| Onyx | 31.7k · MIT+ee 目录 | 对许可证要求严的机构可用官方 onyx-foss 镜像(100% MIT,无 ee 目录) |
| Bionic | 2.4k · Apache-2.0 | 定位已演进为企业内部「主权 AI 运行时」,评估以最新描述为准 |
配套件(许可证均干净、维护活跃,2026-08 实测):本地推理 Ollama(
179.0k · MIT)与 vLLM(
89.5k · Apache-2.0);授权引擎 OpenFGA(
5.6k)与 OPA(
12.1k),均 Apache-2.0;观测层 Langfuse(
33.4k · MIT+ee)——注意其企业自托管版会为许可证校验启用有限遥测,零外联要求要专门核;本地加密存储 SQLCipher(
7.2k · BSD-3-Clause)。
五条铁律(从踩坑清单里蒸馏)
- 脱敏必须发生在外发之前。任何「先传上去再让模型忽略敏感内容」的方案都不算数。
- 密钥只住在网关。防火墙只允许网关访问模型域名;用户、界面、插件拿不到云厂商 API Key。
- 「自托管」不等于「零外联」。CDN、遥测、网页搜索、MCP 工具都是潜在出口;最终证据是网络层抓包,不是设置页截图。
- 许可证边界要读原文。「核心开源 + 企业目录收费」的项目,边界未必物理隔离;50 人品牌条款这类条件藏在许可证正文里,SPDX 字段显示不出来。
- PII 检测不是数学保证。对最高风险的数据(密码、私钥、证件号),正确策略是禁止进入外发通道,而不是「检测到再掩码」;检测器留给中风险内容,并配人工确认与回归测试集。
我们自己在做的隐私分层工作空间(Vownir)就按这五条搭:最敏感一层连本地模型的上下文都不进,全系统一个出口,每次外发事先可预览、事后可查审计、第三方可验证——我们不承诺「零泄漏」,因为上面第 5 条说了没人能承诺;能承诺的是每一次暴露都看得见、查得到。相关实测语料和判据后续会陆续发在本版块。
数据时点:全部星标/许可证/提交日期为 2026-08-19/20 GitHub API 实测;检测层数字为 2026-08-18 合成语料实测(下界)。本帖按 wiki 维护,欢迎回帖补充项目或挑错。