yetone/cumora 深度体验:2.6k stars 的「AI Agent 团队聊天室」,把 Claude Code / Codex 装进 Slack 同款 Kanban + 真收发邮件
前两天刷 GitHub Trending 的时候,我看到一个名字特别眼熟 ——yetone/cumora。点进去一看,2,669 stars,整个 repo 创建于 2026 年 8 月 17 日,距离现在也就三天,commit 却已经滚了 30 多条,issue 列表里 32 个 fix 全是同一个礼拜内开的。
「这不就是 yetone 又开新坑了吗?」我心里咯噔一下。
熟悉中文开源圈的朋友大概都知道 yetone:openai-translator、avante、bailian-cli,哪个不是他一个人扛出来的。openai-translator 最早把 ChatGPT 翻译塞进 macOS 菜单栏,avante 在 Neovim 里复刻 Cursor 体验,bailian-cli 是阿里云百炼的命令行封装 —— 他的项目永远带着「让 AI 真正进入我的工作流」这股劲。
cumora 的副标题是 Where agent teams gather——「Agent 团队的聚集地」。打开 README 第一眼,它写着:
Cumora is cross-platform team chat where AI agents are first-class participants alongside humans — same roster, same DMs, same group conversations, same Kanban board and calendar.
说人话:它是一个跨平台团队聊天工具,AI Agent 在这里和人类有完全一样的身份、一样的 DM、一样的群聊、一样的 Kanban 看板和日历。
换句话说,它不是「给 AI 接一个 IM」的 wrapper,它是把 Agent 当成和老板同事一样的「同事」来设计的产品。
这篇文章,我就想认真拆一下它到底做了什么、怎么做到的、适合谁用、又有哪些坑。
一、为什么我们需要「Agent 一等公民」的聊天工具
1.1 当下的问题:Agent 还在「客座」状态
过去两年我把 Claude Code、Codex、各种 Coding Agent 当成工具用。它们很猛,但本质上还是「一个进程」,你 @ 它,它回,你不动它,它就在后台睡。
问题是:团队协作不是这种单点行为。
假设我现在的博客写作工作流是这样的:
- 上午 9 点:和小伙伴对一遍今天的选题
- 上午 10 点:调研 GitHub Trending,挑一个项目
- 上午 10:30:和设计同学过一遍排版
- 下午:写正文、贴图、配链接
- 晚上:commit、push、回复评论
如果我想让一个 Agent 接管其中某些环节 —— 比如「调研 Trending」,我其实希望这个 Agent 是常驻的、有记忆的、能在我开会的时候把结论推进 Kanban、能在群里主动 ping 我的。
但现实是:
- Claude Code 是一个 CLI 工具,你启动它就醒,不启动就睡;
- 它没有「同事身份」,我在 Slack 里 @ 它,Slack 不认识它;
- 它没有「真人协作的边界感」—— 它不知道我现在是不是在开会,是不是在 review 代码,是不是在想别的事。
cumora 想解决的就是这件事。它不是「又一个聊天工具」,而是把 Agent 提升到和人类同事完全对等的座位。
1.2 yetone 的切入点:他不想做 Slack 替代品
如果你只看 README 表面,「cross-platform team chat」很容易让人误读成又一个 Slack/Discord 替代品。
但 cumora 不是。它的差异点写得很清楚:
Agents don’t just answer when poked: they hold personas and memory, claim work, coordinate with each other without colliding, send and receive real email, and run on either Cumora’s cloud or your own machine.
四个关键词:personas(人设)、memory(记忆)、claim work(认领工作)、coordinate with each other(互相协作)。这些都是 Slack 不会主动做的。
而且项目仓库名 cumora 也暗示了它的定位 ——Cumora 是太平洋上的一座火山岛(库莫拉岛),既是团队「聚集地」,又有「沉静 + 爆发」的气质。
1.3 我为什么这次选它写
近一个月博客我已经写过:
- cloudflare/computer(Cloudflare 给 agent 提供云端 sandbox)
- omniroute(AI 网关,统一 237 家 provider)
- cordiverse/paper(agent 元框架)
- multica(Claude Code 团队管理平台)
它们都在做「Agent 基础设施」:沙箱、网关、框架、调度。但「Agent 在团队里到底以什么身份存在」这件事,没有人认真做过产品级设计。
cumora 是我看到的第一个敢把 Agent 摆到「团队成员」位置上的开源项目。再加上 yetone 的品控、对 CLI 的执念、对 AI 工作流的直觉 —— 我觉得它值得一篇长文。
二、核心功能:六块积木搭起一个「Agent + 人类」的混合团队
cumora 的产品形态我读完文档后画成六个层次:
2.1 第一块:Computer——「Agent 永远跑在一台机器上」
这是 cumora 最反直觉的设计。它引入了一个概念叫 Computer:
Rather than bolt BYOA on as a special case, Computer is a first-class product concept that every agent shares: an agent always runs on some Computer.
也就是说,任何 agent 都属于某个 Computer。Cumora 内置两种:
- ☁ Cumora Cloud:官方托管的 Computer,每个企业租户自带一个,agent 跑在 K8s pod 里
- 💻 Your Computers:你自己 pair 的机器(Mac、VPS),跑 daemon 接管 agent
示意图(来自 BYOA.md):
1 | Computers |
这种抽象有个隐藏好处:把「云 agent」和「本地 agent」统一成一个心智模型。你不用关心一个 agent 是云端跑还是本地跑 —— 它就在那个 Computer 上,Computer 在线它就醒,Computer 离线它就睡。
2.2 第二块:BYOA—— 把 Claude Code / Codex 接进 daemon
BYOA(Bring Your Own Agent)是 cumora 最实用的入口。它的逻辑是:
你的 Claude Code 订阅是自己的,你不想把 API key 交给任何平台。Cumora 在你的机器上跑一个 daemon,daemon 把你的本地 Claude Code / Codex CLI 当成「大脑」,Cumora 服务端永远见不到你的 key。
在 BYOA 模式下,整个协作链路是这样的(精简版):
1 | msg.new → scheduler.wakeOne → (BYOA host: SKIP pod) → publish wake |
注意一个细节:daemon 不是用每条消息去 spawn 一个新的 claude CLI 进程。它跑的是「persistent engine session」—— 一个常驻的 claude/codex CLI 子进程,daemon 通过 --input-format stream-json --output-format stream-json 跟它对话。
这个设计带来三个直接好处:
- 延迟:常驻 session 不需要每次冷启动,几百毫秒就能开始推理;
- 上下文:engine 自己的上下文管理(compaction、memory)能 work;
- 成本:每次只有「真正需要发言」时才让大模型跑一轮,平时 daemon 自己的 small-brain(triage 模型)做门卫。
2.3 第三块:双重「脑」路径:Cloud 和 BYOA
我前面提到 Cumora 有两种 brain 模式,这里详细对比:
Cumora Cloud(managed loop):
- 服务端跑
turn.ts,一个多 hop 的 tool-calling loop - 每个 agent 住在一个 K8s pod 里(
agent-computer镜像) - 引擎是 OpenAI Responses API,工具包括 bash、files、browser、email、memory、skills
- 一句话:服务端全包
BYOA(user loop):
- 服务端绕过
turn.ts,只负责把 wake 事件推送到 daemon - daemon 自己的 persistent engine session 跑 turn
- 大脑就是用户本地的 Claude Code 或 Codex CLI
- 用户订阅、用户 key、用户配额
- 一句话:服务端只做「事件投递 + 仲裁 + UI」
两种模式的 agent 在 Cumora UI 里看起来完全一样:都是 kind='agent' 的 participant,都出现在 roster、DM、群聊、Kanban 里。你只看到一个「Iris」,看不到她住哪个 Computer。
2.4 第四块:真收发邮件 ——Agent 不只是「聊天框里的角色」
这是我看到 cumora 时最惊艳的功能之一。Agent 不是只在 Cumora App 里发言,它能真发、真收邮件。
技术栈是这样搭的(来自 README + email.md):
- 发出:服务端通过 Resend API 发邮件,每个 agent 有独立 mailbox
- 收信:Cloudflare Email Routing 把
*@your-team.cumora.ai全部转发到一个 Cloudflare Worker - Worker(email-gate):解析邮件、识别是哪个 agent、推 SSE 到 daemon、写入 Postgres
这意味着一个真实的客户写邮件给 iris@your-team.cumora.ai,Iris 真的能收到并回复 —— 而这件事完全不需要 Claude Code 在前端暴露 IM 接口。
文档里有一句很冷静:
per-agent real email (Resend out, Cloudflare Email Worker in)
它把这件事当作 first-class 功能,而不是 demo。
2.5 第五块:Kanban / Calendar / DM / 群聊 —— 日常协作的四件套
README 上说得很朴实:
same roster, same DMs, same group conversations, same Kanban board and calendar
翻译过来就是:Slack 的核心组件它都有,但多了两件事:
- Agent 也能 claim Kanban card:agent 不是被动「被 @ 才动」,它能主动 claim 一张 ticket、自己推进、最后 comment
- Agenda 唤醒:agent 不只是被动响应消息,它能从 Kanban due date /calendar slot 主动被唤醒(
maybeAgendaTurn走/runtime/agenda,stall-nudge 节流)
benchmarks/ 目录下还有真实的 LLM 多智能体协作 benchmark——chain /counting/werewolf /kanban。这说明 cumora 团队真的在做可复现的 agent 行为测试。
2.6 第六块:跨平台 —— 同一份 React 组件,5 个壳
技术栈选型上 cumora 很工程化:
| 路径 | 是什么 |
|---|---|
src/ |
React 渲染层,desktop/mobile/web/admin 复用同一套组件 |
server/ |
API + WebSocket + agent runtime(Express + ws + Postgres + Redis) |
electron/ |
桌面壳,自动更新走 yetone/cumora-releases |
ios/, android/ |
Capacitor 原生壳,包名 io.cumora.app |
agent-cli/ |
发布的 npm 包 cumora,BYOA daemon 用户本地跑的就是它 |
agent-fuse/ |
Go FUSE driver,把 agent 的工作目录挂载进 cloud pod |
workers/ |
Cloudflare Workers:email-gate(入站邮件)、r2-gate(签名 CDN) |
benchmarks/ |
真实 LLM 多智能体协作 benchmark |
GitHub 语言统计也很说明问题(按字节数):
- TypeScript: 4,697,689 字节(主体)
- JavaScript: 155,190
- CSS: 68,217
- Swift: 19,493(iOS)
- Shell: 15,002
- Go: 13,524(FUSE driver)
- Dockerfile: 12,741
这是一个「正经工程」而不是「demo 拼凑」的项目。既有 Web 全栈,又有原生壳,又有 system-level Go 驱动,又有边缘 Workers。
三、技术架构:把 7 层防御讲清楚
cumora 最让我佩服的部分是它处理「多 agent 在同一房间里不撞车」的方式。README 上一句话轻飘飘带过,但 BYOA.md + COORDINATION.md 一共加起来 6 万多字节,几乎全是工程细节。
3.1 多 agent 协作的两个失败模式
COORDINATION.md 一上来就定义了多 agent 协作的两类失败:
- Race collisions—— 两个 agent 同时醒来,决策一模一样,都 INSERT 进 messages。经典案例:Iris 和 Marcus 在 counting game 里同时发
"3"。服务端能做的是 INSERT 前的「我上次看到的」新鲜度检查。 - Brain misjudgment——agent 看到的状态是对的,但大脑做了错误决策(重复发、跳号、倒退)。这种只能靠 prompt 软约束,服务端抓不到。
关键洞见:
Distinguishing these matters: never add a prompt rule when a code mechanism is the right fix, and never add a code mechanism when the brain’s making a clear decision in front of correct state.
这句话翻译过来:能用代码解决的,不要加 prompt 约束;大脑在正确状态前做错决策的,不要加代码机制。这条原则贯穿整个 cumora 的防御体系。
3.2 十一层防御(来自 COORDINATION.md)
我把 cumora 的「防御层」按硬 / 软列出来,按从硬到软排:
硬约束(代码层)
- Per-agent model pin(部署层):服务端用
CUMORA_DEFAULT_CLAUDE_MODEL=claude-opus-4-7固定模型,避免本地 claude CLI 默认模型在 2026-05-31 那次悄悄从 opus-4-7 切到 opus-4-8 导致行为漂移。 - Per-computer big-brain concurrency cap(daemon 层):
CUMORA_BYOA_MAX_CONCURRENT_BIG_BRAIN,默认 6;之前是 2,7-agent 群聊排队 215-359s。BigBrainSemaphore 在 spawn 前 acquire,finally release。 - Deterministic spawn spacing:500ms 的最小 spawn 间隔,替代了原来的 random (0..1500ms) jitter。原因:随机 jitter 在 4 个同时醒来时可能都落在低值上,仍然 burst 到 provider;间隔是构造上 1/interval 的硬上限。
- Per-computer small-brain triage concurrency cap:triage 模型也有 cap,避免大模型和小模型互相挤占。
- Seen-cursor freshness gate:服务端在 agent 真正 INSERT 之前做「你上次看到的更新 vs 现在」的对比,过期的回复被 HOLD 并喂回新消息让 agent 重新决策。
- Atomic claims:agent 对 Kanban card / 工作单元用
SELECT ... FOR UPDATE拿锁,atomic claim 后才能修改。
软约束(prompt / UI 层)
- Small-brain triage:daemon GET
/runtime/inbox-triage/payload,先让 haiku /gpt-5.4-mini 跑 triage 决定是不是真要唤醒大模型。rate limit 时 fail-closed 指数退避。 - GLANCE_YIELD_RULES:每次大模型 turn 都被要求「glance before posting」—— 发消息前先看一遍最新 unread digest。
- memory/ MEMORY.md digest:每轮把 agent 自己的 memory 摘要喂进去,避免「我忘了我叫什么」。
- Same-turn steering:DM / @mention / 人类消息在 turn 中到达时,在下一个安全 stream 边界注入;群聊普通活动只发 content-free nudge。
- invariant scaffold(一次性):CLI 用法、共享的 GLANCE_YIELD_RULES、memory 规则、隐私边界通过
--append-system-system-prompt-file(Claude)或developerInstructions(Codex)一次性塞进 session,不占每轮 token。
这一套防御体系不是营销话术,是真的在 COORDINATION.md 里有「chain-with-absent-member」基准测试的数据支撑:
T10 of the “千里之行始于足下” chain test (8-char relay, 6 active agents, 1 deliberately absent) landed 8/8 in-order, 0 dups, complete=true, with nova covering the absent member by contributing three times.
8 字符接力,6 个 active agent 加 1 个故意缺席 ——8/8 正确顺序、零重复、complete=true。这种 benchmark 不是 toy,是真的在压测 Cumora 的协作能力。
3.3 真实问题:本地 Claude CLI 池共享 account 的 burst 限制
cumora 文档里有一个非常具体的失败复盘:
when N agents on the same computer wake on the same SSE fanout, without this they all hit Anthropic’s short-window burst limit and get “Server is temporarily limiting requests · Rate limited” in lockstep (observed: 130 rate-limit hits in 17 minutes during a 7-agent counting game).
这段描述直接告诉读者:「在 17 分钟内,130 次 rate limit 命中,发生在 7-agent counting game 里」。
它没有藏着掖着,而是把真问题暴露出来,再一步步告诉你怎么解决。
这就是 yetone 一贯的工程态度:先承认你的失败模式,再讲怎么修。
3.4 成本账本:每一次 LLM 调用都被记账
README 里有一个看似不起眼的细节:
every LLM call — cloud or BYOA — lands in one
llm_callscost ledger
所有 LLM 调用(云端和 BYOA)都进同一本账。
这条在企业级 AI 落地里非常关键。我自己用 Claude Code 一直苦于「agent 在我的机器上跑了多少 token、花了多少钱」看不到 —— 除非你本地自己起 Prometheus。Cumora 把这件事做成了「基础设施」:
/runtime/llm-calls接收每次 hop 的 token usage- 统一写入
llm_calls表 - 跟 cloud turn 的数据放在一个视图里查询
这意味着运营一个 AI 团队,财务透明度是 by-design 的。这一点对于要把 Agent 团队引入公司的人,太重要了。
四、怎么用 / 快速上手
cumora 的快速启动分两条路:Cumora Cloud(最快)和 BYOA(最实用)。
4.1 Cumora Cloud 试用(5 分钟)
如果只是想看 demo,最快是直接到 cumora.ai 注册。文档提到:
- 注册后会自动 seed 一个 starter team:6 agents、3 humans、9 conversations
- 空数据库 seed,所有 chat 里看到的消息都是实时产生的 —— 不是回放
- 这是一个「让产品自己说服你」的设计:上来就看到一个真实运转中的多 agent 团队
4.2 BYOA 本地启动(30 分钟)
如果你有自己的 Claude Code / Codex 订阅,想让 daemon 接管你本地的 agent:
前置依赖(macOS):
1 | brew install postgresql redis node |
创建数据库:
1 | createdb -h localhost cumora |
克隆 cumora 仓库:
1 | git clone https://github.com/yetone/cumora.git |
打开浏览器 http://localhost:5180 就能看到 PWA 模式。要桌面端就:
1 | npm run electron:dev |
环境变量(只有 OPENAI_API_KEY 是 hard-required):
| 变量 | 默认 |
|---|---|
DATABASE_URL |
postgres://$USER@localhost:5432/cumora |
REDIS_URL |
redis://localhost:6379 |
OPENAI_MODEL / OPENAI_MODEL_SUPPORT |
big-brain /support-brain 模型 |
PORT |
5181 |
可选功能(OAuth 登录、Resend + Cloudflare Email Routing、R2 storage、APNs/FCM push、sub2api per-user LLM gateway、waitlist、metrics)都在 .env.example 和 server/src/env.ts 里。
装 BYOA daemon 到你的机器:
1 | npm install -g cumora |
Daemon 启动后会生成一个 pairing code,你在 Cumora web app 里输入就能把你的 Mac 加为「Your Computer」。之后你在 Cumora UI 上创建的 agent 可以选住在 cloud 还是你的 Mac 上。
4.3 跑 benchmark(看 cumora 怎么测自己)
1 | npm test # unit tests (node:test) for server + workers |
最后一条 guard:big-brain 非常有趣:CI 守卫,确保只有「agent turn」能调用大模型 —— 这是 cumora 在控制成本上的硬约束。
五、总结:cumora 适合谁?局限在哪?
5.1 适合谁
我把 cumora 的目标用户分成几层:
第一层:AI 重度玩家 / 独立开发者
你已经在用 Claude Code / Codex,但苦于它们没有「协作感」。cumora 让你把多个 agent 装进一个 IM 视图,看它们互相 ping、claim Kanban、推进工作流。这件事在 2026 年的工具链里仍然非常罕见 —— 因为大多数 agent 工具还停留在「一个 agent 对一个用户」的模型。
第二层:内容创作者 / 数字游民
如果你像我一样同时在做:写博客、运营社交、做调研、维护项目,cumora 的 Kanban + Calendar + 真收发邮件组合,是最贴近「一个人 + 多个 agent」工作流的工具。它不像 Slack 那么重,也不像 Obsidian 那么散。
第三层:AI 团队建设者
如果你要给公司搭一支「AI Agent 同事」团队,cumora 的:
- 统一身份(Computer 概念)
- 真实邮件链路
- 统一 cost ledger
- 完整 benchmark 工具集
- 跨平台壳(Web + iOS + Android + Electron)
—— 是少见的「能直接落地」的开源方案。不是 demo,不是白皮书,是一个真的能跑的产品。
第四层:AI 工程研究者
cumora 的 benchmarks/ 目录、docs/COORDINATION.md 的十一层防御、docs/SHIPPING.md 的「evidence-backed feature lifecycle」—— 这些都是公开的研究素材。如果你做 agent 协作研究,cumora 是一个开源的真实系统可以拿来切片。
5.2 局限在哪
老实说,我也得指出 cumora 的几个边界:
1. 还是 early stage
仓库 2026-08-17 才创建,三天时间 commit 滚了 30+、issue 开到 32—— 这既是优点(活跃),也是缺点(早期)。生产环境用要谨慎。我建议先在 BYOA + 本地 daemon 的路径上玩通,再考虑 Cloud 方案。
2. 强依赖 OpenAI Responses API
Cumora Cloud 的 managed loop 跑在 OpenAI Responses API 上,BYOA 虽然支持 Claude Code 和 Codex,但 triage 模型仍可能用 OpenAI 小模型(haiku /gpt-5.4-mini)。如果你想全栈自托管 + 全栈非 OpenAI,目前还要等。
3. 真收发邮件的运维成本
Cloudflare Email Routing + Resend + Cloudflare Worker 这一套链路需要你有一个域名、能配 Email Routing、能部署 Worker。个人开发者上手可以,但「我就要一个能开箱即用的 IM」的用户会觉得重。
4. 没有「非 English first」的本地化
README、文档、CLI 输出目前都是英文(除了 BYOA.md 里举的「千里之行始于足下」chain test 是中文 case study)。如果你的 agent 主要处理中文任务,工作流没障碍,但 UI 层面暂时没有中文界面。
5. Agent 互撞的「prompt 软约束」天花板
COORDINATION.md 自己承认了:
prompts are a soft mechanism with a ceiling
再完美的十一层防御,prompt 层仍然不是 100% 的。cumora 用 benchmark 测试 8/8 正确,但更复杂的场景(比如 12 个 agent 同时 debating)我没看到公开数据。
5.3 我的判断
如果要我给一个 TL;DR:
cumora 是 yetone 把「AI Agent 当同事」这件事严肃做了产品级落地的尝试。2,669 stars 是个开始,但它的设计深度(十一层防御、统一 Computer 抽象、cost ledger、benchmark 集)远超同期 90% 的「AI 协作工具」。
我会继续观察:
- v0.2 是否引入非 OpenAI provider 的 managed loop;
- iOS / Android 端的 Capacitor shell 稳定性;
benchmarks/是否会公开更多真实多 agent 协作数据;- 是否有第三方贡献者开始写 plugin(类似 Botkit / Zapier)。
末尾:项目链接
- GitHub 仓库:https://github.com/yetone/cumora
- 官网 / 营销站:https://cumora.ai
- Web App:https://app.cumora.ai
- 最新发布:https://github.com/yetone/cumora-releases/releases/latest
- 作者:yetone(https://github.com/yetone)
如果你已经玩上了 Claude Code 但总觉得「还差点什么」,先在 cumora.ai 注册看一眼 starter team,再决定要不要本地跑 BYOA。你大概率会被那个「6 个 agent 自己开会、自己认领 Kanban、自己发邮件」的 starter team 打动 —— 因为它让你第一次看到 AI Agent 不是你的工具,是你的同事。
一句话总结:Cumora 把 AI Agent 从「进程」提升到「同事」,yetone 用 11 层防御体系解决了多 agent 协作的撞车问题,是当下最值得认真看的 Agent 协作平台之一。