LobeHub:把AI同事塞进浏览器的硬核方案
LobeHub不是另一个ChatGPT前端,而是以'Agents as the Unit of Work'为内核的多智能体协作基础设施。它用TypeScript实现PWA+Tauri桌面壳,通过MCP协议抽象模型调用,CRDT保障跨端记忆同步,并支持Branching Conversations与Chain of Thought可视化——真正让AI成为可调试、可协作、可编排的数字员工。

LobeHub:把AI同事塞进浏览器的硬核方案
我是周小码,一个被Spring Boot自动配置折磨了八年的Java老兵。上周三凌晨三点,我盯着LobeHub的README,手边是半凉的枸杞茶,心里只有一个念头:这玩意儿,真的把‘多智能体协作’焊进了我的浏览器标签页里。
不是Demo,不是PoC,不是“未来已来”的PPT话术——它跑在我本地Mac上,用Tauri打包成桌面App,连着我自建的Ollama Qwen-7b,三个Agent正在同一个Page里争论Q3客户流失率是否该归因于API响应延迟。
痛点在哪?我们还在用‘单线程人脑’调度AI
你有没有试过这样干活:
- 用LangChain写个销售分析Agent,跑通了;
- 想加个财务校验环节,得手动拼接Prompt、传Context、改Callback;
- 某天市场部说“等等,先查下竞品定价”,你得暂停流程、开新Tab、复制粘贴上下文、再手工merge结果;
- 最后发现Agent输出的PDF图表字体错乱,翻三天文档才搞懂Artifacts渲染链路……
这不是AI赋能,这是AI添堵。问题不在于模型不够强,而在于我们还在用2005年的协作范式,去调度2025年的智能体集群。
LobeHub的答案很直接:别调度AI,让AI自己开会。
架构不是图,是三层‘人机协作操作系统’
LobeHub没堆炫技架构,但每层都踩在关键痛点上:
-
UI层:PWA + React + Tauri
不是简单套壳。Tauri提供系统级文件访问(读取本地Excel报表)、原生通知(Agent会议结束提醒)、离线PWA能力(地铁上继续训AI同事)。React组件粒度细到<AgentAvatar />和<ConversationBranchTree />,连分支节点的折叠/展开状态都用Zustand原子化管理。 -
调度层:MCP(Model Context Protocol)
这才是灵魂。MCP不是又一个LLM网关,而是一套带Schema的RPC协议。每个Agent注册时声明:json{ "id": "sales-analyzer", "model": "qwen-7b-chat", "tools": ["salesforce", "excel-reader"], "memory": { "type": "crdt", "scope": "group" } }后端收到请求后,不解析Prompt,只按MCP Schema路由:模型服务→工具插件→记忆模块。OpenAI、Ollama、本地Qwen?只要实现
MCPAdapter接口,就自动获得stream,tool_call,branch_point三大能力。 -
数据层:CRDT + Artifacts Store
Agent的记忆不是存Redis里等过期,而是用Yjs(CRDT实现)同步。你手机上修改的销售预测表格,笔记本上立刻渲染出SVG趋势图——因为Artifact本质是带版本向量时钟的JSON-LD文档:json{ "@id": "artifact://sales-q3-prediction", "@type": "Chart", "data": { "x": [...], "y": [...] }, "vClock": { "clientA": 12, "clientB": 8 } }
代码即哲学:三段真实命令,看它怎么‘懒’出生产力
1. 部署:两行命令,私有化完成
fish
## 第一行:下载并执行setup.sh(校验签名,解压docker-compose.yml+env模板)
bash <(curl -fsSL https://lobe.li/setup.sh)
## 第二行:启动,自动拉取lobehub/server:latest和lobehub/web:latest镜像
docker compose up -d
注意:setup.sh里没有sed -i 's/xxx/yyy/g',没有cp .env.example .env && vi .env。它生成的.env已预置ACCESS_CODE随机密钥和MCP_ADAPTER=ollama,你唯一要填的只有OLLAMA_HOST=http://host.docker.internal:11434。
2. 启动:环境变量即配置,拒绝YAML地狱
bash
## 最小可行配置:API密钥 + 访问密码
OPENAI_API_KEY=sk-prod-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ACCESS_CODE=my_secure_password
## 启动命令(官方Docker Compose默认加载此env)
docker compose up -d
没有application.yml,没有config.properties。所有运行时参数走环境变量,符合12-Factor App原则——而LobeHub甚至把OPENAI_MODEL_LIST做成可解析字符串:
3. 进阶:模型策略即代码,动态启停AI员工
bash
## 启用Qwen-7b-chat(本地),启用GLM-6b(国产),禁用gpt-3.5-turbo(省钱)
OPENAI_MODEL_LIST=qwen-7b-chat,+glm-6b,-gpt-3.5-turbo
这段代码背后是ModelRouter类的策略解析器:
ts
// packages/core/src/router/model-router.ts
export class ModelRouter {
private strategies = new Map<string, ModelStrategy>();
parseList(list: string) {
list.split(',').forEach(item => {
if (item.startsWith('+')) this.enable(item.slice(1)); // 显式启用
else if (item.startsWith('-')) this.disable(item.slice(1)); // 显式禁用
else this.enable(item); // 默认启用
});
}
}
实战:让三个Agent自己开晨会
我司真实场景:每天9:00,weekly-reporter、bug-tracker、faq-updater三个Agent在/workspace/engineering Page里自动会面。
weekly-reporter读取GitLab上周MR合并记录,生成Markdown摘要;bug-tracker扫描Jira未关闭Bug,标注高频模块;faq-updater比对Confluence FAQ文档,标记过期条目;
关键不在结果,而在协作过程:
- 当
bug-tracker发现“API模块Bug占比超40%”,自动触发Branching Conversation:“查API响应延迟TOP3接口”; - 查完后,
faq-updater在分支里生成api-latency-faq.md,并@weekly-reporter:“请将此纳入本周报告第3节”; - 主线程自动Merge该文件,
weekly-reporter渲染时直接嵌入SVG性能图(Artifact)。
整个过程无人工干预,所有分支历史、Artifact版本、Agent决策日志,全在UI里可追溯——这才是Chain of Thought可视化的真实价值:不是画思维导图给你看,而是让你能点击任意节点,查看当时的完整Prompt、Tool Call参数、模型返回Raw JSON。
踩坑指南:别当第一个吃螃蟹的人
- 本地模型实验性警告是真的:Ollama适配器目前只支持
chatendpoint,generate(非流式)和embeddings尚未实现。想用Qwen做RAG?先给packages/adapters/ollama/src/index.ts提PR补/api/embeddings。 - MCP Marketplace插件权限隔离不足:当前所有插件共享同一沙箱环境。装了“B站字幕提取”插件后,它能读取你Salesforce的OAuth Token——这不是Bug,是设计妥协。生产环境务必用
--no-marketplace启动参数禁用市场。 - CRDT冲突解决需人工介入:当两个Agent同时修改同一Artifact的
data.y数组,Yjs会生成conflict元数据字段。LobeHub UI显示⚠️图标,但不会自动合并——你需要点击“Resolve Conflict”,选择保留哪个客户端的变更。
我的真实评价:它不卷模型,卷的是‘人机契约’
作为Java老兵,我欣赏它的克制:
- 不造轮子:CRDT用Yjs,PWA用Workbox,Tauri用Rust底层;
- 不画大饼:README明确写“RBAC in roadmap”,不假装已有企业级安全;
- 不骗点击:Star数70k+,但首页没放“Sponsored by XXX”,没弹窗推Pro版。
它真正的野心,藏在packages/protocol/mcp/README.md里那句:
“MCP is not about making models talk to each other. It’s about making humans understand how they talk.”
——MCP不是让模型互相通话,而是让人理解它们如何通话。
所以别问“LobeHub比LangChain强在哪”。该问的是:当你需要让AI同事自己开周会、自己修Bug、自己更新文档时,你的技术栈,准备好签这份‘人机劳动合同’了吗?
最后,泡杯茶,打开http://localhost:3210,创建第一个Agent。别急着写代码——先教它怎么自我介绍。毕竟,我们正从‘写代码的人’,变成‘训练AI同事的HR’。