OneAIFW 本地轻量级 LLM 隐私防火墙技术分析
一、项目概述
1. 项目简介
OneAIFW 是一个本地化、轻量级的 AI 防火墙项目,通过在发送到 LLM 之前对敏感数据进行匿名化处理,并在响应返回后恢复原始数据,从而保护用户隐私。
A. 核心功能
OneAIFW 专注于保护三类敏感信息:隐私数据、密钥信息、加密资产
B. 技术特点
- 本地运行,数据不离境
- 跨平台支持
- 轻量级设计
- 零痕迹架构
2. 项目背景
A. 问题来源
在使用大语言模型时,用户经常需要在提示词中包含敏感信息,如电子邮件、地址、银行账号等。这些数据会被发送到第三方 LLM 服务商,存在隐私泄露风险。
B. 解决方案
OneAIFW 通过拦截请求,识别并掩码敏感信息,将其替换为占位符发送给 LLM,待 LLM 返回结果后再将原始信息恢复,从而实现隐私保护。
二、系统架构
1. 整体架构
OneAIFW 采用分层跨平台架构,核心引擎使用 Zig 和 Rust 实现,支持编译为原生库和 WASM 模块。
graph TB
subgraph 应用层
WebApp[Web 应用 apps/webapp]
Ext[浏览器扩展 browser_extension]
CLI[CLI 工具 cli/python]
end
subgraph 语言绑定层
AIFWJS[aifw-js 库]
AIFWPY[aifw-py 库]
end
subgraph 核心引擎层
Core[AIFW Core Zig + Rust]
end
subgraph 识别层
NER[NER 模型]
Regex[正则引擎]
end
subgraph 后端服务
PyOrigin[py-origin FastAPI]
end
WebApp --> AIFWJS
Ext --> AIFWJS
CLI --> AIFWPY
AIFWJS --> Core
AIFWPY --> Core
Core --> NER
Core --> Regex
PyOrigin --> NER2. 核心组件
A. 核心引擎 (AIFW Core)
- 实现语言:Zig + Rust
- 编译目标:原生库 + WASM
- 职责:掩码/恢复管道、正则/NER 跨度融合
B. 语言绑定
- aifw-js:JavaScript/TypeScript 绑定
- aifw-py:Python 绑定
C. 应用层
- Web 演示应用 (Vite)
- 浏览器扩展 (Chrome/Edge)
- Python HTTP 服务
三、核心工作流程
1. 数据掩码流程
sequenceDiagram
participant User as 用户
participant AIFW as OneAIFW
participant NER as NER 模型
participant Regex as 正则引擎
participant LLM as 大语言模型
User->>AIFW: 输入包含敏感信息的文本
AIFW->>NER: 识别命名实体
AIFW->>Regex: 正则模式匹配
AIFW->>AIFW: 合并跨度去重
AIFW->>AIFW: 生成占位符
AIFW->>LLM: 发送掩码后文本
LLM-->>AIFW: 返回处理结果
AIFW->>AIFW: 恢复原始信息
AIFW-->>User: 返回最终结果2. 掩码机制
OneAIFW 使用占位符替换敏感信息,格式为:__PII_{ENTITY_TYPE}_{SERIAL_ID}__
示例:
- 原文:Contact me at john@example.com
- 掩码后:Contact me at PII_EMAIL_ADDRESS_00000001
- 恢复后:Contact me at john@example.com
四、技术实现
1. 核心引擎设计
A. 管道架构
AIFW 核心库采用双管道设计:
- mask 管道:负责敏感信息掩码
- restore 管道:负责原始信息恢复
B. PII 识别
PII 检测通过复合识别器实现:
- RegexRecognizer:Rust 正则引擎 (regex-automata)
- NerRecognizer:外部 NER 模型识别
- SpanMerger:跨度合并、过滤、去重
C. 内存优化
- 占位符生成使用栈缓冲区 (无堆分配)
- 元数据仅存储 (EntityType, serial_id)
- 最小化内存占用,避免指针问题
2. 跨平台编译
A. 编译目标
- 原生库:用于 Python 和其他宿主语言
- WASM (wasm32-freestanding):用于浏览器和 JS 环境
B. Rust 集成
- 使用 regex-automata 实现正则引擎
- 通过 C ABI 暴露静态库
- 同时构建原生和 WASM 目标
3. 语言绑定
A. aifw-js (@oneaifw/aifw-js)
- 使用 Transformers.js 运行 NER
- 将跨度转换为字节偏移
- 调用 WASM 核心进行掩码/恢复
- 提供批量处理、语言感知掩码等高级 API
B. aifw-py
- 加载原生核心库
- 暴露简单的 Python API
- 支持 mask_text、restore_text 及批量变体
五、受保护的实体类型
1. 隐私信息
- 物理地址
- 电子邮件地址
- 姓名
- 电话号码
- 银行账号
- 支付信息
2. 密钥信息
- 验证码
- 密码
3. 加密资产
- 种子词
- 私钥
- 地址
六、部署方式
1. Docker 部署
# 构建镜像
cd cli/python
docker build -t oneaifw:latest -f Dockerfile .
# 运行容器
docker run --rm -p 8844:8844 \
-e AIFW_API_KEY_FILE=/data/aifw/your-key.json \
-v $HOME/.aifw:/data/aifw \
oneaifw:latest2. 本地服务
A. Python 服务 (py-origin)
cd py-origin
python -m venv .venv
source .venv/bin/activate
pip install -r services/requirements.txt -r cli/requirements.txt
python -m aifw launchB. Web 演示
# 构建核心
zig build
# 安装 JS 依赖
pnpm -w install
# 构建 aifw-js
pnpm -w --filter @oneaifw/aifw-js build
# 运行 Web 应用
cd apps/webapp
pnpm dev3. 浏览器扩展
pnpm -w --filter @oneaifw/aifw-js build
mkdir -p browser_extension/vendor/aifw-js
rsync -a --exclude 'models' libs/aifw-js/dist/* browser_extension/vendor/aifw-js七、API 接口
1. HTTP API (py-origin)
- /api/call:完整调用流程
- /api/mask_text:文本掩码
- /api/restore_text:文本恢复
- /api/mask_text_batch:批量掩码
- /api/restore_text_batch:批量恢复
2. 认证方式
- 使用标准 Authorization 头
- 通过环境变量 AIFW_HTTP_API_KEY 配置
- 支持命令行选项配置
3. 参数优先级
配置参数解析顺序:
- 命令行参数
- 环境变量
- 配置文件 (aifw.yaml)
八、技术栈
1. 编程语言分布
- Python:43.9%
- Zig:24.0%
- JavaScript:22.2%
- HTML:6.1%
- Dockerfile:1.6%
- CSS:1.3%
- Rust:0.9%
2. 核心依赖
- Zig 0.15.2:核心编译系统
- Rust toolchain:正则引擎
- Node.js 18+ 和 pnpm 9+:JS 生态
- Python 3.10+:后端服务
- Transformers.js:浏览器端 NER
3. 模型支持
- 默认 NER 模型:funstory-ai/neurobert-mini
- 支持自定义模型配置
- 模型目录环境变量:AIFW_MODELS_DIR
九、项目特点分析
1. 优势
- 本地化处理,数据不离开用户环境
- 轻量级设计,资源占用低
- 跨平台支持,部署灵活
- 多语言绑定,易于集成
- 开源 MIT 许可证
2. 技术亮点
- Zig + Rust 混合编程,兼顾性能和安全性
- WASM 支持,实现真正的跨平台
- 管道架构设计,职责分离清晰
- 内存优化设计,最小化堆分配
3. 应用场景
- 企业内部 LLM 应用隐私保护
- 个人用户敏感信息防护
- 加密资产交易保护
- 医疗、金融等合规场景
十、开发与构建
1. 前置要求
# 验证版本
zig version # 期望 0.15.2
rustc --version
cargo --version
node -v
pnpm -v
python3 --version2. 快速开始
# 克隆仓库
git clone https://github.com/funstory-ai/aifw.git
cd aifw
# 构建核心库
zig build
# 安装 JS 依赖
pnpm -w install
# 构建 aifw-js
pnpm -w --filter @oneaifw/aifw-js build
# 运行 Web 演示
cd apps/webapp
pnpm dev3. 测试
# Zig 单元测试
zig build -Doptimize=Debug test
# 集成测试
zig build inttest
zig-out/bin/aifw_core_test十一、相关资源
1. 项目信息
- 仓库地址:https://github.com/funstory-ai/aifw
- 演示网站:https://oneaifw.com/
- 许可证:MIT
- Stars:261
- Forks:22
2. 版本信息
- 最新版本:v0.5.1 (2024年11月28日)
- 提交数:157 commits
- 贡献者:2 人