📦 项目信息
- 名称: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 助手”赛道的演进大致走过三段:
- 聊天窗口期:ChatGPT 风格的一问一答,本质是一个 stateless 的 LLM 接口。
- Agent Harness 期:Claude Code、Cursor、OpenClaw、Hermes 这一批项目让 LLM 真正”动手做事”,但仍然以”单进程单循环”为主。
- 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 monorepoplaintext几个有意思的设计选择:
- 桌面端 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 gen | Seedream / SeedEdit |
| Video gen | Seedance / Veo |
| Model routing | 自动按 workload 选模型;同时支持 Ollama 本地 + BYOK |
| 17 个 messaging channels | Telegram / 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) andsrc/openhuman/security/encryption/core.rs(Argon2id + AES-256-GCM primitives) have zero unit tests.
自治性强制核心 + 加密原语 = 0 个单元测试。这是一个非常具体的、有引用支撑的工程信号,说明项目方自己知道这个洞在哪里。OpenHuman 的诚实程度值得肯定,但读者不应该把”看起来很安全”等同于”已经安全”。
四、对比主流 Agent Harness#
README 中给出了一张对比表(产品快速迭代,请以官方为准),提炼一下:
| 维度 | Claude Cowork | OpenClaw | Hermes Agent | OpenHuman |
|---|---|---|---|---|
| 开源 | ❌ 闭源 | ✅ 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 真正做得好的地方#
- AGENTS.md + .claude + .codex + .agents 四件套:让任意 Agent Harness 都能开箱即用地给这个项目贡献代码。这是”用 AI 写 AI 软件”时代的正确基础设施。
- plan.md 是一份罕见的诚实工程文档:40 条审计建议(32 条确认、8 条反驳、全部留档),明确标注哪些是 ⚠️ 待复审、哪些是 ❌ 反驳。最难得的是它先让一个 skeptic 去证伪自己的结论,再把结果公开。这在开源圈几乎没见过。
- Crate 设计与命名:二进制
OpenHuman+ 库openhuman+staticlib + cdylib + rlib三种 crate 类型,为桌面/移动/Web 三端复用同一套 Rust 核心打基础。 - Signal 协议 + x402 USDC:代理间通信用端到端加密、配合链上结算——这是把”代理经济”从 PPT 落到代码层的尝试。
- 可选 agentmemory 后端:不抢用户已有工具链(Claude Code/Cursor/Codex/OpenCode)的用户,而是接入——这是非常聪明的开源策略。
5.2 必须正视的工程债#
- 安全核心 0 单测:
security/policy/command_checks.rs、path_checks.rs、security/encryption/core.rs是产品宣称的”自治性强制 + 加密”基础,但没有任何单元测试覆盖。在生产前必须补齐。 - 覆盖率门槛有 scope 漏洞:80% changed-lines 覆盖目标不包括
scripts/**,而 mock backend(其它所有套件都依赖它)就在scripts/里——意味着 CI 的覆盖率数字系统性偏低。 - Cargo.lock 211KB / Cargo.toml 78KB:依赖规模可观,需要持续做
cargo tree与cargo-deny审计。 - AGENTS.md 120KB:单文件文档膨胀严重,长期看应该拆分成
docs/developing/树状结构 + 按角色(前端/Rust/Agent/Security)的入口。 - 早期 beta 风险:UI/UX/API 在 0.63.x 阶段仍可能 breaking change,企业用户应做版本锁定。
- 隐私承诺 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 GitHub 仓库 ↗
- OpenHuman Docs (GitBook) ↗
- tinyagents 编排引擎 ↗
- tinyflows 工作流引擎 ↗
- tiny.place 代理网络 ↗
- Karpathy 关于 LLM Knowledgebase 的推文 ↗
- agentmemory 后端项目 ↗
- 项目内
plan.md:测试套件审计与改进计划(40 条建议 + 对抗式复审结果)