wth2jhl.online

Back

📦 项目信息

  • 名称:OpenHuman
  • 仓库:tinyhumansai/openhuman ↗
  • 当前版本:v0.63.17(Early Beta)
  • 协议:GNU(开源,区别于多数同类项目的 MIT)
  • 技术栈:Rust + Tauri 2 + React/TypeScript + pnpm Monorepo
  • 亮点数据:上线一周连续 9 天 GitHub Trending 第一;100+ OAuth 集成、5000+ MCP 服务、90000+ Skills;支持 17 个消息渠道

一、为什么 OpenHuman 值得关注#

过去两年,“AI 助手”赛道的演进大致走过三段:

  1. 聊天窗口期:ChatGPT 风格的一问一答,本质是一个 stateless 的 LLM 接口。
  2. Agent Harness 期:Claude Code、Cursor、OpenClaw、Hermes 这一批项目让 LLM 真正”动手做事”,但仍然以”单进程单循环”为主。
  3. Orchestrator + Memory 期:以 OpenHuman 为代表,开始尝试把”长期记忆”和”多 Agent 编排”这两个长期缺失的能力补齐。

OpenHuman 给出的定位非常清晰——它不是 AGI,但它是”通向 AGI 的一个有意义的架构步骤”(项目自述原话)。本文不堆砌营销话术,而是从工程实现角度拆解:它到底做了什么、怎么做的、做对了什么、又留下了什么坑。

二、项目结构速览#

仓库根目录的几个关键信号:

openhuman/
├── app/                    # 前端 React/TS + Tauri 桌面壳
│   ├── src/                # React 应用
│   └── src-tauri/          # Rust 核心(命名为 crate OpenHuman)
├── src/openhuman/          # 纯 Rust 库(agent / memory / channels / security ...)
├── packages/               # 桌面打包:deb / homebrew / npm / arch / tauri-plugin-ptt
├── gitbooks/               # 用户文档(GitBook 同步源)
├── plan.md                 # 测试套件审计与改进计划(40 条建议,已经过对抗式复审)
├── Cargo.toml / Cargo.lock # 78KB / 211KB,工程体量相当可观
└── pnpm-workspace.yaml     # Node 端 pnpm 10.10 monorepo
plaintext

几个有意思的设计选择:

  • 桌面端 crate 叫 openhuman,二进制叫 OpenHuman(大小写敏感的双名);同时声明 staticlib + cdylib + rlib 三种 crate 类型——为移动端(iOS/Android)和 WebView 宿主做预留。
  • AGENTS.md 120KB:相当于把”如何给这个项目贡献代码”写成一本小册子,并把 CLAUDE.md 符号链接过去,让 Claude/Codex/Hermes 任意一个 Agent 都能直接读取上下文。这在开源 Agent 项目里是非常值得借鉴的实践。
  • 同时存在 .claude/、.codex/、.agents/ 三个目录:显式支持多种 Agent Harness 协同开发,是”用 Agent 写 Agent”思路的具体落地。

三、五大核心子系统#

3.1 🧠 The Brain:Memory Tree + Obsidian Wiki#

这是 OpenHuman 区别于其他 Agent 项目最显著的设计。

核心思路:把所有文档、邮件、聊天记录压缩成”评分后的 Markdown 树”,存在本地 SQLite,并镜像成 Obsidian vault 开放给用户编辑。

// 抽象路径(来自 src/openhuman/memory)
src/openhuman/
├── memory/
│   ├── schema/         // singular:memory_tree 命名空间的注册表
│   ├── schemas/        // plural:memory 命名空间的注册表(两套并存,spec 注释明确说明)
│   ├── sqlite_store.rs // 持久化层
│   └── ...
rust

关键设计取舍:

  • 不是 vector soup:拒绝”embedding 一把梭”的方案,转而用可读的 Markdown + 评分(scored)作为记忆载体。代价是检索质量上限不如稠密向量;收益是可解释性、可编辑性、可移植性全部拉满。
  • Karpathy 风格 LLM Knowledgebase 的工业实现:README 直接引用了 Karpathy 那条著名的 tweet,明确这是”灵感来源”。
  • 可选后端:通过 memory.backend = "agentmemory" 切换到 agentmemory ↗,让 OpenHuman 与 Claude Code / Cursor / Codex / OpenCode 共享同一份记忆存储。这是非常聪明的”生态位”选择——不抢别人的用户,而是接入别人的工具链。

TokenJuice:在数据送进 LLM 之前对工具输出做压缩,最多 80% token 节省。这一点对”脑容量很大”的 Agent 是必需的:本地跑完整 Obsidian vault 没有压缩就是天文成本。

3.2 🕸️ The Orchestrator:双脑 + 子代理舰队#

OpenHuman 明确说自己是 orchestrator, not chatbot。架构图来自 README:

┌────────────────────────────┐
│   Reflex Agent (快)        │  ← 负责分诊/路由
└──────────────┬─────────────┘
               │
┌──────────────▼─────────────┐
│   Subconscious (潜意识层)   │  ← 决策派发
└──────────────┬─────────────┘
               │
   ┌───────────┼───────────┐
   ▼           ▼           ▼
 Worker 1   Worker 2   Worker N    ← 最多三层子代理
plaintext

关键工程实现:

  • Graphs, not loops:每一次 turn 都是 checkpointed graph,跑在开源 tinyagents ↗ 引擎上。可以暂停等人类确认、扛住重启、从中间恢复。
  • Stuck agent steering:卡住的子代理会被”steered”转向;被 halt 的代理会返回 root cause 报告——这意味着运维不再是事后排查,而是 Agent 本身就能产出可执行诊断。
  • Agent-to-agent E2E:代理之间用 Signal 协议做端到端加密通信,配合 x402 USDC bounty 实现”代理经济”。Keys 永远不落盘——这句安全承诺是有分量的,因为传统 agent 框架最大的攻击面就是代理间通信。

3.3 🔬 The Deep Researcher & Doer#

工具链是 OpenHuman 拉开身位的另一个原因:

能力实现
Web search内置 Exa 集成,订阅即用(无需自备 key)
Scraper / Coder / Browser原生工具,浏览器是真实浏览器(不是无头 HTTP)
Native voice进程内 Whisper,离线可用
Image genSeedream / SeedEdit
Video genSeedance / Veo
Model routing自动按 workload 选模型;同时支持 Ollama 本地 + BYOK
17 个 messaging channelsTelegram / Discord / Slack / WhatsApp / Signal / iMessage / 原生邮件(IMAP IDLE + SMTP)

Model routing 是一大亮点:一个订阅、一份账单,路由到不同模型。对应 OpenHuman 提出的”One account, one bill”哲学——拒绝 vendor sprawl(vendor 蔓延),让用户不被工具链绑架。

3.4 🧍 UI-first:Mascot + Theme Studio#

和绝大多数 agent 项目的”命令行/IDE 优先”路线相反,OpenHuman 坚持 UI-first:

  • 几行点击从安装到可用,不需要编辑 config 文件
  • Mascot:一个有表情、能说话、能记住用户的吉祥物(Rive 动画 tiny_mascot.riv,145KB)。这是把”agent = 工具”重新定义成”agent = 伙伴”的尝试
  • Theme Studio:5 个主题家族 + 完整可视化编辑器,导出 JSON

这种产品定位上的取舍明显是奔着”非工程师用户”去的,目标是复刻 ChatGPT 的”开箱即用”体验,但保留开源与本地化的全部优势。

3.5 🔒 Privacy & Security#

src/openhuman/security/
├── policy/
│   ├── command_checks.rs  // 命令分类 + gate_decision(自治性强制核心)
│   ├── path_checks.rs     // is_workspace_internal_path 工作区边界
│   └── ...
├── encryption/
│   └── core.rs            // Argon2id + AES-256-GCM 原语
└── ...
rust

几个值得注意的安全承诺:

  • 本地加密:所有数据在设备上加密存储
  • Approval gate:副作用动作需人类批准
  • OS keyring:密钥不进文件系统
  • Opt-in sandboxing:可选沙箱隔离
  • Privacy Mode:一键开启,在 Rust 核心里强制——任何 LLM 推理都不出本机。这种”在系统层强制而不是在 UI 层承诺”的设计是靠谱的

但 plan.md 直接揭露了一个高风险盲点:

The two highest-risk untested surfaces in the codebase: src/openhuman/security/policy/command_checks.rs + path_checks.rs (the documented autonomy-enforcement core) and src/openhuman/security/encryption/core.rs (Argon2id + AES-256-GCM primitives) have zero unit tests.

自治性强制核心 + 加密原语 = 0 个单元测试。这是一个非常具体的、有引用支撑的工程信号,说明项目方自己知道这个洞在哪里。OpenHuman 的诚实程度值得肯定,但读者不应该把”看起来很安全”等同于”已经安全”。

四、对比主流 Agent Harness#

README 中给出了一张对比表(产品快速迭代,请以官方为准),提炼一下:

维度Claude CoworkOpenClawHermes AgentOpenHuman
开源❌ 闭源✅ MIT✅ MIT✅ GNU
启动门槛✅ 桌面+CLI⚠️ 命令行为主⚠️ 命令行为主✅ 纯净 UI,分钟级上手
记忆✅ 聊天级⚠️ 依赖插件✅ 自学习🚀 Memory Tree + Obsidian,可选 agentmemory 后端
集成⚠️ 少⚠️ 自带⚠️ 自带🚀 100+ OAuth、5000+ MCP、90000+ Skills
自动同步🚫 无🚫 无🚫 无✅ 20 分钟一轮
编排⚠️ 子任务⚠️ 单循环⚠️ 单循环🚀 Graph + checkpoint + E2E A2A
工作流🚫 无⚠️ 脚本⚠️ 脚本🚀 可视化、持久、agent 提案、approval 门控
会议🚫 无🚫 无🚫 无🚀 加入 Meet/Zoom/Teams/Webex,可发言、实时转录
17 个渠道🚫⚠️ 几个⚠️ 几个✅ 含原生邮件(IMAP/SMTP)
纯本地🚫 云⚠️ BYO⚠️ BYO✅ Privacy Mode 一键强开
可观测性🚫 黑盒⚠️ 日志⚠️ 日志✅ 可回放运行日志 + 单次调用成本核算

关键判断:OpenHuman 不是想做”另一个 Claude Code”,它想做的是**“在桌面上跑的个人 AI 操作系统”**——把记忆、编排、工作流、消息、邮件、会议、本地模型路由全部装进一个原生应用里。这个野心是真实的,工程代价也是真实的。

五、工程亮点与潜在风险#

5.1 真正做得好的地方#

  1. AGENTS.md + .claude + .codex + .agents 四件套:让任意 Agent Harness 都能开箱即用地给这个项目贡献代码。这是”用 AI 写 AI 软件”时代的正确基础设施。
  2. plan.md 是一份罕见的诚实工程文档:40 条审计建议(32 条确认、8 条反驳、全部留档),明确标注哪些是 ⚠️ 待复审、哪些是 ❌ 反驳。最难得的是它先让一个 skeptic 去证伪自己的结论,再把结果公开。这在开源圈几乎没见过。
  3. Crate 设计与命名:二进制 OpenHuman + 库 openhuman + staticlib + cdylib + rlib 三种 crate 类型,为桌面/移动/Web 三端复用同一套 Rust 核心打基础。
  4. Signal 协议 + x402 USDC:代理间通信用端到端加密、配合链上结算——这是把”代理经济”从 PPT 落到代码层的尝试。
  5. 可选 agentmemory 后端:不抢用户已有工具链(Claude Code/Cursor/Codex/OpenCode)的用户,而是接入——这是非常聪明的开源策略。

5.2 必须正视的工程债#

  1. 安全核心 0 单测:security/policy/command_checks.rs、path_checks.rs、security/encryption/core.rs 是产品宣称的”自治性强制 + 加密”基础,但没有任何单元测试覆盖。在生产前必须补齐。
  2. 覆盖率门槛有 scope 漏洞:80% changed-lines 覆盖目标不包括 scripts/**,而 mock backend(其它所有套件都依赖它)就在 scripts/ 里——意味着 CI 的覆盖率数字系统性偏低。
  3. Cargo.lock 211KB / Cargo.toml 78KB:依赖规模可观,需要持续做 cargo tree 与 cargo-deny 审计。
  4. AGENTS.md 120KB:单文件文档膨胀严重,长期看应该拆分成 docs/developing/ 树状结构 + 按角色(前端/Rust/Agent/Security)的入口。
  5. 早期 beta 风险:UI/UX/API 在 0.63.x 阶段仍可能 breaking change,企业用户应做版本锁定。
  6. 隐私承诺 vs 工程现实:Privacy Mode 的”在 Rust 核心强制”需要仔细审计——例如是否有 telemetry 绕过了 Privacy Mode 的开关?网络层是否还有 hardcoded 的 endpoint?

六、谁应该关注这个项目#

  • Agent 框架研究者:Memory Tree + Graph Orchestration + Signal A2A 是非常具体可学的工程范式
  • Tauri/Rust 全栈开发者:双 crate 类型(lib + bin)+ 三端复用(desktop/mobile/web)是教科书级的现代 Rust 桌面架构
  • 想本地化个人 AI 工作流的产品经理:唯一一个把”记忆 + 编排 + 工作流 + 消息 + 邮件 + 会议 + 本地模型”全部打包的桌面应用
  • AI 安全/隐私研究者:可以拿它当”开源 AI 助手的安全审计基准”——因为代码全开

七、总结#

OpenHuman 的核心命题是:把 Agent 从”一次性工具”升级为”长期协作者”。

它用 Memory Tree + Obsidian 镜像 解决长期记忆问题,用 Graph-based checkpointed orchestration 解决多步骤可靠执行问题,用 Signal E2E + x402 解决代理间信任问题,用 Tauri + Rust core + Privacy Mode 解决本地化与隐私问题。

它不是 AGI——但它确实在”个人 AI 操作系统”这个赛道做了一次认真的工程尝试,并且把工程过程(plan.md、AGENTS.md、多 Agent Harness 协作基础设施)以可被审计、可被复用的方式公开出来。

对个人开发者:可以学习它的 Rust crate 拆分、Tauri 配置、AGENTS.md 模板、Crate graph。 对企业用户:建议等 1.0 之后再用于生产,但可以现在就用它来替换部分 CLI 工具,特别是邮件聚合 + 工作流自动化场景。 对安全研究员:把 src/openhuman/security/ 当 audit 起点,重点看 plan.md 标记的”0 单测”区域。

这个项目最大的价值,可能不是它最终能不能做成”超智能个人助手”——而是它把”如何用 AI 自己写一个 AI 操作系统”的工程方法论,完整地、无保留地开源了出来。


参考资料#

OpenHuman 项目深度解析:本地优先的"超智能个人助手"是如何炼成的
https://wth2jhl.online/blog/openhuman-analysis/
Author 小吴同学
Published at August 26, 2026