个人 AI 助手领域长期存在一个结构性矛盾:云端模型拥有强大推理能力,却受限于无状态设计和隐私顾虑;本地方案虽能保护数据,却难以支撑复杂的记忆系统和多源数据整合。OpenHuman 作为一个基于 Rust 构建的开源个人 AI 超智能系统,尝试通过分层架构和智能模型路由来弥合这一鸿沟。
架构设计:Rust 核心与 Tauri 前端的分离
OpenHuman 采用三层架构:React + Tauri v2 构建桌面壳层,Rust 核心处理业务逻辑,本地 SQLite 存储记忆数据。这种分离并非简单的技术选型,而是对 "本地优先" 原则的工程化表达。
Rust 核心承担 Memory Tree 流水线、集成适配器、自动获取调度器、模型路由和 TokenJuice 压缩等关键模块。前端仅负责 UI 呈现,通过 JSON-RPC 与核心通信。这种设计使得业务逻辑可以在无 UI 环境下运行,也为后续服务端部署保留了可能性。
数据流遵循明确的九步流程:连接 OAuth 授权 → 每 20 分钟自动获取 → 规范化为 Markdown → 切分为 ≤3k token 的块 → 存入 SQLite 和 Obsidian 兼容的 vault → 嵌入向量和实体提取 → 构建分层摘要树 → 查询时检索 → TokenJuice 压缩 → 模型路由分发。整个流程在本地完成,仅 LLM 调用和 OAuth 代理走云端。
Memory Tree:本地知识库的工程实现
传统 RAG 系统常陷入 "向量汤" 困境 —— 将文本向量化后存入数据库,却丢失了文档结构和上下文关系。OpenHuman 的 Memory Tree 采用确定性流水线解决这个问题:所有来源数据(邮件、Slack、GitHub、Notion)被规范化为带溯源标签的 Markdown,切分后同时存入 SQLite 和文件系统。
这种双存储策略具有明确的工程考量:SQLite 支持高效的向量检索和元数据查询,而 Markdown 文件则提供人类可读的备份和 Obsidian 兼容性。用户可以直接打开 vault 目录,用熟悉的笔记工具浏览和编辑自己的 AI 记忆。
摘要树采用三层结构:来源级(source)、主题级(topic)、全局级(global)。后台工作流定期从块池刷新各层摘要,形成层次化的知识表示。当用户提问时,系统可按需检索 —— 从全局概览到具体来源,或精确定位到某个 chunk。
本地 AI 推理:Ollama 与 LM Studio 集成
OpenHuman 的本地 AI 支持采用 "选择性本地" 策略,而非全量本地部署。这种设计源于对实际使用场景的权衡:聊天、视觉、语音等任务需要前沿模型质量,而嵌入、摘要、后台循环等重复性工作则适合本地处理。
具体而言,本地 AI 负责以下工作负载:Memory Tree 的向量嵌入(默认使用 all-minilm:latest)、来源 / 主题 / 全局摘要构建、心跳循环(heartbeat)的定期后台反思、学习整合(learning reflection)和潜意识评估循环(subconscious executor)。这些任务具有数据量大、调用频繁、隐私敏感的特点,本地执行可显著降低成本并保护隐私。
技术实现上,OpenHuman 通过 OpenAI 兼容的 /v1 端点与 Ollama 通信,复用现有的 OpenAiCompatibleProvider 代码路径。启动时会创建健康检测门控的本地提供者,若 Ollama 不可达则透明回退到远程提供者。LM Studio 支持类似,默认监听 http://localhost:1234/v1,可通过配置或环境变量覆盖。
配置采用分层开关设计:主开关 enabled 控制是否创建本地提供者,opt_in_confirmed 要求显式用户确认,各子系统(embeddings、heartbeat、learning_reflection、subconscious)可独立启用。桌面端提供预设模板(仅嵌入、记忆 + 反思、全部本地)简化配置。
多模型路由与 TokenJuice 压缩
模型路由是 OpenHuman 控制成本的关键机制。系统根据任务提示词中的 hint 自动选择模型:hint:reasoning 和 hint:agentic 路由到前沿推理模型,hint:fast 和 hint:summarize 使用轻量模型,hint:vision 调用视觉模型。当本地 AI 启用时,轻量级 hint(如 hint:reaction、hint:classify)优先使用本地模型。
TokenJuice 压缩层位于路由之前,对所有工具输出进行预处理:HTML 转 Markdown、长 URL 截断、非 ASCII 字符清理等。官方数据显示这可降低高达 80% 的 token 消耗和延迟。对于需要扫描六个月邮件的场景,这种压缩可将成本从数十美元降至个位数美元。
路由决策和压缩策略的配置存储在本地 config.toml,用户可覆盖默认行为。这种设计将控制权交还用户,同时保持开箱即用的简洁性。
工程化部署参数
对于希望私有部署的开发者,OpenHuman 提供以下关键配置点:
硬件基线:本地 AI 需要 8GB+ RAM(推荐 16GB),gemma3:1b-it-qat 约 700MB,all-minilm 约 23MB。磁盘需预留模型缓存和 Memory Tree 存储空间。
隐私边界:Memory Tree SQLite 数据库、Obsidian vault、音频捕获缓冲和本地模型状态完全保留在设备上。仅 LLM 调用和 OAuth 代理流量经过 OpenHuman 后端。
集成配置:118+ 第三方服务通过 OAuth 一键连接,无需手动管理 API key。自动获取调度器每 20 分钟执行一次同步,可在设置中调整或暂停。
开发环境:需要 Rust 1.93.0(含 rustfmt + clippy)、Node.js 24+、pnpm 10.10.0、CMake、Ninja。Tauri 桌面壳依赖平台特定的构建工具链。
适用场景与限制
OpenHuman 的设计目标用户是希望在本地构建持久化个人知识库的隐私敏感用户。典型场景包括:需要整合多源工作数据(邮件、日历、代码仓库、文档)的知识工作者;希望 AI 助手具备跨会话记忆能力的重度用户;对云端 AI 数据驻留有合规要求的组织。
当前限制包括:项目处于早期 Beta 阶段,API 和配置格式可能变化;本地 AI 仅覆盖特定工作负载,完整离线体验仍需网络连接;Memory Tree 的压缩和摘要质量依赖于本地模型能力,小参数模型在复杂推理任务上表现有限。
OpenHuman 的架构选择展示了一种务实的本地 AI 路径:不追求完全离线,而是将敏感数据处理和重复计算留在本地,将高质量推理交给云端前沿模型。这种分层策略为个人 AI 系统的私有化部署提供了可落地的工程参考。
参考来源
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。