OpenHuman Privacy Mode 深入指南:在 Rust 核心强制执行的本地优先推理开关
OpenHuman Privacy Mode 深入指南在 Rust 核心强制执行的本地优先推理开关【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhumanOpenHuman 的 Privacy Mode隐私模式不是一段写在系统提示词里的请勿外传声明而是位于 Rust 核心的强制执行卡点enforcement chokepoint在local_only模式下核心在构造层就拒绝构建任何外部推理 Provider从结构上保证没有任何代码路径能把推理数据送出设备。本文将围绕[privacy]配置块展开解析三种模式的定义、[privacy]配置块的完整字段与默认值、推理工厂中的强制逻辑、运行时热切换 RPC以及与本地模型栈Ollama / LM Studio / MLX / Whisper / Piper的组合用法帮助你在完全离线、数据不出本机的条件下运行 Agent。三种模式一个配置块三种数据出口姿态OpenHuman 把隐私模式定义在[privacy]配置块中共三种模式序列化为 snake_caselocal_only/standard/sensitive与仓库的整体命名约定保持一致见 配置 Schema 实现模式含义standard默认正常运行托管云路由、BYOBring-Your-Own云密钥、本地模型全部可用无额外数据出口限制。local_only任何推理数据不得离开设备。所有外部聊天 Provider托管云、BYO 云密钥甚至 Claude Code 这类 CLI 委托都在构造时被拒绝。只有本地运行时可通过Ollama、LM Studio、MLX 以及本地 OpenAI 兼容端点。sensitive面向后续 PII 感知分层检测、脱敏、目的地披露的基础模式。当前版本行为与standard一致。从源码看PrivacyMode是一个带#[default]的枚举缺失配置时回退到Standard。关键设计细节位于 src/openhuman/config/schema/privacy.rsPrivacyConfig被刻意设计成结构体而非裸枚举字段目的是让后续切片S2/S4/S5/S6/S7可以新增按模式细分的旋钮脱敏开关、目的地白名单、PII 阈值而无需再做一次 schema 迁移schema/privacy.rsconfig.toml中缺失[privacy]块或mode键时通过 serde 的#[serde(default)]自动解析为PrivacyMode::Standard保证向后兼容schema/privacy.rs。该模式的语义边界在模块注释中写得很明确隐私模式管的是数据可以离开设备多少与自主性层级AutonomyLevelreadonly / supervised / full正交——后者管的是 Agent 能做什么只读 / 监督 / 全权。因此你完全可以运行一个完全自主的 Agent同时不发送任何一字节的推理数据出设备schema/privacy.rs。为什么强制执行比提示模型遵守可靠大多数助手的隐私承诺只是系统提示里的一段话——模型可能被提示注入绕过、被工具调用带偏、或因为上游 bug 而违反。OpenHuman 的 Privacy Mode 刻意不是一种要求模型遵守的策略而是一个结构性保证只要应用里任何一条代码路径在 local_only 模式下试图触达云模型它在结构上就拿不到客户端。该检查位于推理 Provider 工厂src/openhuman/inference/provider/实现拆分在factory_part_01.rs至factory_part_04.rs多个文件中。核心决策函数是纯函数local_only_violationfactory_part_01.rs逻辑如下模式不是LocalOnly→ 直接放行返回NoneProvider 字符串为空或是cloud哨兵值 → 暂缓判断待解析成具体字符串后递归重查命中本地运行时通过is_local_provider_string即 Ollama / LM Studio / MLX / local-openai→ 放行其余一律视为外部 Provider返回人类可读的标签如OpenHuman (managed cloud)、Claude Agent SDK、Claude Code CLI或slug:model中的 slug用于报错信息。工厂在构造聊天 Provider 前调用enforce_local_only_inferencefactory_part_01.rs放行时记录privacy_mode... inference permitted的 debug 日志拒绝时输出 warn 日志并返回明确错误Local-only privacy mode is active: this action needs external provider {label}. Switch to a local model (Ollama/LM Studio/etc.) or change privacy mode in Settings.错误信息会精确点名被拦截的外部 Provider并给出两条修复路径切换到本地模型或在 Settings 中修改模式。这意味着该保证不依赖 prompt、不依赖 Agent 行为、不依赖工具实现即使上游模型或工具存在缺陷也无法拿到外部客户端。值得注意的边界BYOK 哨兵值空字符串 /cloud在模型构造前会被解析成具体字符串并再次检查避免先放行哨兵、再解析成云 Provider的绕过路径factory_part_01.rs。[privacy]配置块字段、解析与默认值[privacy]块当前只有一个字段mode。在 配置操作层 中用户输入经由parse_privacy_mode解析大小写不敏感且兼容少量连字符/空格写法// 解析规则trim 小写 连字符/空格归一为下划线后匹配 local_only | localonly | local PrivacyMode::LocalOnly standard PrivacyMode::Standard sensitive PrivacyMode::Sensitive // 其余输入报错invalid privacy mode other (expected local_only | standard | sensitive)在config.toml中的写法如下# 显式开启仅本地模式 [privacy] mode local_only # 显式回到默认模式 [privacy] mode standard如果完全省略[privacy]块或mode键则回退到standardschema/privacy_tests.rs 中有对应的 TOML 解析测试覆盖。隐私模式与自主性配置相互独立reload_privacy在热切换时会保留当前策略中的 autonomy 部分反之亦然——避免一次仅修改自主性设置的操作意外重置数据出口姿态live_policy.rs。运行时热切换无需重启的 RPC 通道隐私模式不仅可以通过配置文件静态设置还提供了一对 RPC 操作应用后立即对活动会话生效无需重启核心config/ops/privacy.rsget_privacy_mode读取当前[privacy]模式返回{ mode: snake_case }apply_privacy_settings接收PrivacySettingsPatchmode字段为可选的local_only | standard | sensitive解析 → 写入配置并save()持久化 → 调用reload_privacy热替换活动SecurityPolicy。热替换的实现要点security/live_policy.rsreload_privacy克隆当前 in-flight 的 policy仅替换privacy_mode字段其余策略保持不变返回新的 generation 编号。current_privacy_mode在没有安装会话策略时默认回退到Standard放行例如 CLI 场景live_policy.rs。如果当前尚未安装会话运行时如纯 CLI 环境热替换会失败但不会中断——持久化的值会在下次install时被拾取config/ops/privacy.rs。RPC 的公开 Schema 描述config/schemas/schemas_schema_part_01.rs也明确了两点get输出mode: local_only | standard | sensitive并特别注明这与自主访问模式不同set强调local_only在推理卡点阻塞外部模型调用且无需重启即对活动会话生效。与本地模型栈组合完全离线的 AI 助手local_only模式被设计为与 OpenHuman 的 Local AI 技术栈协同工作。开启后你仍然可以获得完整的本地 AI 能力聊天与推理使用你在 Settings 中下载的Ollama / LM Studio / MLX模型对应源码中的本地 Provider 判定is_local_provider_string见 factory_part_01.rs语音识别STT进程内Whispertiny → large-v3-turbo一键安装无外部二进制、无云端 STT语音合成TTSPiper安装方式与 Whisper 相同本地向量嵌入用于 Memory Tree 检索的本地 embeddings。完整的纯本地搭建流程可参考 Use OpenHuman with a local model更广视角的隐私数据保护演练见 Keep sensitive data private。数据出口的强制执行边界local_only管的是数据出口data egress而 OpenHuman 在安全模块中还有一层独立的 egress 强制机制privacy epic S7 的一部分见 security/egress/enforce.rslocal_only_blocks是一个纯决策函数——只有模式为LocalOnly、传输描述符标记为外部、且不属于控制面control plane时才返回true。控制面请求如登录、Connections UI 的鉴权流程不会被拦截因为它们不携带用户内容只携带认证令牌拦截它们只会破坏登录体验而无隐私收益egress/enforce.rs。这与推理工厂中的local_only_violation构成纯决策 强制执行的同一对模式先有可单测的纯函数再由运行时读取 live policy 执行拦截。该强制层不仅覆盖推理在后续切片中本地仅模式还会扩展到集成integrations、网络工具curl / http_request / web_fetch等场景——从源码结构看网络工具模块src/openhuman/tools/impl/network与 egress 强制层已具备联动基础。相关主题延伸Privacy Security完整信任模型审批门禁、沙箱、路径根、命令分类OS Keyring Secret Storage凭据存放位置Local AI设备端模型运行时。小结OpenHuman 的 Privacy Mode 用构造层拒绝 live policy 热切换 纯函数可单测的组合把隐私保证从提示词层面提升到了结构层面。对于需要完全离线运行的场景你只需在 Settings 或config.toml中切换到local_only再配合 Ollama / LM Studio / MLX、进程内 Whisper、Piper 与本地 embeddings即可获得一个数据不出本机的自主 Agent。【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →