GitHub推荐:6.5 月 19K stars:一个 YC 团队怎么把「Claude Cowork」做成可团队共享的开源桌面 Agent
一句话总结
OpenWork 是 YC S21 团队 Different AI 在 OpenCode 执行引擎之上搭出的开源桌面 Agent「团队共享层」——一个本地优先、可一键打包成 URL 丢给同事复用、还能通过 MCP 喂给 Codex/Claude Code/Cursor 的「跨客户端 AI 工作流底座」。
值得关注的理由
- AI Agent 时代少见的「架构可解释」工程:4,103 commits / 870 commits past 30d / 19k+ stars / 270+ 评估用例——这不是「demo 项目」,是一套把桌面 Agent 落地的完整范式(Local-first / Composable / Ejectable / Sharing-oriented),可逐层拆解
- 真正稀缺的是「团队共享 / 组织治理」这一层:竞品(Claude Cowork 闭源、Open Interpreter 单机、OpenDevin 偏 SWE、OpenClaw 偏单机)都没做透「一个链接把 skills + MCP + plugins 共享给整个团队」——OpenWork 把这一层做成 first-class 抽象(Den API + Workspace Bundle URL),并把 session-permission / SSO / SCIM 全跑通
- 三项可抄的工程机制:Fraimz(用 CDP + 视觉模型做 agent 任务的 frame-by-frame 验证,过 release gate)、MCP-OAuth 闭环(RFC 7591 + 8705,audience 隔离路由,外部 IDE 接入零摩擦)、EdDSA JWS 邀请 URL(0 运行时依赖的桌面互通 token)——这三条任意一条搬走都能立竿见影
项目展示
桌面应用主界面截图——单窗口装下聊天、计划、Diff 审阅、终端执行、连接管理。
Den 组织控制面截图——团队管理员视角,能看到成员、连接的服务、发布的 capabilities。
仓库另有
app-demo.gif(1.5 MB)演示端到端操作,但因体积过大未直接嵌入;可在 README 顶部体验。
项目画像
| 维度 | 数据 |
|---|---|
| GitHub | https://github.com/different-ai/openwork |
| Star / Fork | 19,444 / 1,998 |
| Watcher / Open PRs | 76 / 272 |
| 代码行数 | 844,419 行(TypeScript 33.2% + TSX 12.6% = 46% 真业务、JSON 37% 主要是 pnpm-lock、i18n 与 Tauri 配置、JavaScript 13.2%、其余 4%) |
| 文件数 | 2,823 个源码文件 |
| 项目年龄 | 6.5 个月(2026-01-14 至今) |
| 开发阶段 | 密集开发期(近 30 天 870 commits / 月均 631) |
| 贡献模式 | 单人主导 + 协作(CEO Benjamin Shafii 占 45%、前 5 名 ~50% 含 release-bot / GitHub Action) |
| 热度定位 | 大众热门(6.5 个月达成 19k+ stars,属 2026 上半年爆发型) |
| 默认分支 | dev(非常规,非 main) |
| 部署档位 | Desktop / Cloud(Den)/ Enterprise 三档 |
| 质量评级 | 代码[良好] 文档[优秀] 评测[突出(270+ flow + Fraimz 视觉验证)] |
作者视角:为什么存在这个项目
创始人/作者背景
Different AI 是 YC S21 批 AI 创业公司(注册组织 different-ai,账号 2022-11-18,bio 「Fun with LLMs「,US)。联合创始人是 Benjamin Shafii(CEO,事实核心 maintainer,4,943 commits = 64% 全部 commit)和 Nis Frome。早期产品是 AI 内容生成 / 营销自动化,2026 年初整体转向桌面 Agent 赛道——以 openwork 为旗舰,重新组织技术栈(fork OpenCode 当执行引擎、自建 Den 做组织平面、自造 Fraimz 做评测),把 44 个公开仓库几乎全部围绕 openwork 生态分仓(openwork-station、opencode-browser 527★、agent-bank 243★、handsfree、agent-watch、the-factory、owpenbot 等)。
CEO 亲自写 64% commits 这一信号非常少见——意味着项目是 founder-driven,不是「雇人做的开源项目」。Benjamin Shafii 同时持有 YC 背书与极强的工程 commitment,是这个项目最值得信任的赌点之一。
问题判断
Different AI 看到了三件事别人没合并起来做:
- Anthropic 推出的 Claude Cowork 是闭源、锁定单模型、不支持团队共享——100% 把用户钉死在自己的 Claude API 与自己的 Workspace 里。这等于把 2026 年最大的桌面 Agent 红利窗口让出去给开源生态
- Open Interpreter / OpenDevin 都没有「GUI + 团队 + 治理」这一层——你可以本地跑 agent,但你没法把它「交付给团队里不写代码的同事」
- 没有一个桌面 Agent 平台认真处理「与现有 IDE 互操作」——大家都在抢「一个客户端打天下「,Different AI 反过来想:「我的价值不在客户端本身,而在客户端之间的’能力层’」
时机上,2026 上半年 MCP 生态刚被 Anthropic 推火、Claude Cowork 刚出、Windows 是 16 亿台 PC 的未开发市场——这三件事同时发生,给了一个 6 个月的爆发窗口。这就是为什么 6.5 个月能冲到 19k stars。
解法哲学
Different AI 明确选择了以下 5 条(来自官方设计哲学文档),同时明确不做:
做:
- Local-first——文件留在本机,prompts 直连 LLM provider
- Composable——skills + plugins + MCP + commands + templates 是 first-class 抽象,可任意组合
- Ejectable——任何时刻「弹出」到 OpenCode CLI,不锁死在 GUI 里(这是给技术用户的退路)
- Sharing-oriented——「One link for the whole team「,把整个 workspace 打包成 URL 丢出去
- Evaluated——270+ 评估 flow + Fraimz 视觉验证,不让任何一个 PR 没经过可视化验证就上线
不做:
- 不做自家模型——深度绑定 OpenCode 作为执行引擎,把模型层完全交给上游(Anthropic / OpenAI / 自部署)
- 不做闭源商业版——
ee/apps/是 enterprise edition 但代码仍开源 - 不做单模型锁定——50+ LLM BYOK,从 Claude 到本地 Ollama 都行
- 不做「应用商店式发布「——Extensions 是
source + resources + setup + contributions + lifecycle五元组统一抽象,不同于 VS Code marketplace 的形态
战略意图
OpenWork 在 Different AI 更大图景里是「桌面 Agent 入口公司」的旗舰产品。商业化路径三条腿:
- OpenWork Den(Cloud 档)——托管 workers、Organization Control Plane、Marketplace
- OpenWork Enterprise(EE 档)——SSO / SCIM / 自定义 inference / 私有部署
- OpenWork Share(URL bundle)——非工程团队也能消费 agent 能力,零终端、零安装
这跟「开源是个营销手段「的范式不同——开源是产品形态本身(Desktop / Den / Enterprise 三档均开源),Den / Enterprise 的运营服务收费。CEO 50% 兼任 head of engineering + head of BD 是这个商业模式的硬证据。
官方文档完整覆盖在
openworklabs.com,DeepWiki 索引了 15 大节架构(含 Fraimz、Runtime Modes、Permission System、Internationalization)。
核心价值提炼
创新之处
按「新颖度 × 实用性」排序:
- Fraimz — 用 CDP + 视觉模型做 agent 任务的 frame-by-frame 验证
- 通过 Chrome DevTools Protocol 在浏览器 agent 跑任务时逐帧抓图,与预设 success criteria 比对,作为 PR gate
- 代码位置:
evals/packages/fraimz/src/validate.ts:1-130+evals/packages/cdp/src/cdp.ts:1-120+evals/runner/runner.ts:1-100 - so what:agent 产品最大的「我不知道它是不是真的做对了「的盲区,Fraimz 把「对/不对「做成可验证信号,是 agent 工程化的关键一步
- MCP-OAuth 闭环 + audience 隔离路由
https://api.openworklabs.com/mcp/agent同时支持 RFC 7591 动态客户端注册(任何 IDE 都能接)+ RFC 8705 资源指示器(OAuth token 按 audience 路由到/mcp//mcp/agent//mcp/admin三个独立作用域)- 代码位置:
ee/apps/den-api/src/mcp/{index,agent,auth,search}.ts - so what:让 Codex / Claude Code / Cursor / ChatGPT 用同一个 endpoint 接进来,把 OpenWork 从「另一个客户端「变成「客户端之间的能力层「——这是生态护城河的根
- EdDSA JWS 邀请 URL
- 用 Ed25519 自签 JWS 编码 invite token(payload = 权限 + 过期 + 双方 ID),0 运行时依赖(
packages/connect-link/src/node.ts:1-180),且带 replay guard 文件 + loopback-only insecure allowance - so what:桌面应用之间互通常用方案是 OAuth redirect 或 deep link token,前者重、后者的安全责任散落各处;自签 JWS 把「权限声明「和「签名「打成一个 URL,零配置安装、不可伪造、可审计
- 用 Ed25519 自签 JWS 编码 invite token(payload = 权限 + 过期 + 双方 ID),0 运行时依赖(
- Ejectable 架构
apps/app不是「一个大 React 写死一切「,而是一个薄 IPC 代理——所有真实操作都路由到 OpenCode CLI- so what:用户可以随时刻
opencode命令行绕回底层,不被 OpenWork 锁死。这不是营销话术,是真在runtime.mjs层级把 CLI / GUI 写成同一份抽象
- Extension Manifest 五元组
- 不管是 Claude plugin / OpenCode plugin / MCP directory / 手工配置,全部抽象成
source + resources + setup + contributions + lifecycle同一份 schema - 代码位置:
apps/app/src/app/extensions.ts:1-180 - so what:开发者写一个 extension 自动在所有 IDE / 所有客户端生效——这是「能力市场「的工程前提
- 不管是 Claude plugin / OpenCode plugin / MCP directory / 手工配置,全部抽象成
可复用的模式与技巧
可直接搬到其他项目:
- Electron 工厂模式——
apps/desktop/electron/main.mjs把 BrowserWindow / Tray / Menu / IPC / deep link / keychain 拆成 18 个 satellite factory,主进程成「组装器」而非上帝类 - Desktop-as-Bridge——桌面应用不是大前端,而是 同进程 HTTP/SSE bridge(
runtime.mjs:1-1932),把 GUI、CLI、远程 Den 三者挂到同一条事件总线下,崩溃隔离 + 远程复用兼得 - Meta-MCP Facade——一个仅暴露
search_capabilities+execute_capability两个工具的 MCP,对接整个 OpenAPI Catalog;IDEs 不需要为每个能力单独接 MCP - CDP-Frame Proof——任何「agent 任务「都可以
puppeteer.connect → Page.captureScreenshot → 视觉模型比对,把 agent 正确性做成可验证信号 - EdDSA Self-Implemented JWS——把
crypto.sign('Ed25519', ...)拼成紧凑 JWS,0 npm 依赖,桌面端邀请 token 不再依赖jsonwebtoken - desktop-bootstrap.json + 激活门控——三档 Desktop SKU(个人 / Den / EE)共用一个 binary,靠
desktop-bootstrap.json+ 启动时检查激活 - 零运行时依赖的 Electron mirror——主进程把
connect-link.mjs等关键脚本 静态镜像到 electron/dist,不再走 node_modules,减少升级断裂 - 资源隔离的 MCP 路由——
/mcp/mcp/agent/mcp/admin三个 endpoint 各自带 audience check,token 不可跨档位复用 __前缀私有桥接方法——主进程 ↔ 渲染进程通过bridge.on('__foo:action', ...)暴露,私有方法约定前缀,零类型噪声- Atomic Write + Replay Guard——所有配置文件写入都用「临时文件 → rename + fsync」并维护单文件 replay guard,避免毒丸配置把整个桌面弄崩
关键设计决策
值得学习的 trade-off:
| 决策 | 选了什么 | 放弃什么 | 理由 |
|---|---|---|---|
| 桌面壳 | Electron 35(非 Tauri) | 小 binary、低内存 | 放弃体积换 CDP / node-pty / keychain / deep link 一等公民支持 |
| 进程模型 | Desktop-as-Bridge(主进程是 HTTP 桥而非大前端) | 单进程简单 | 放弃简单换崩溃隔离 + 远程 Den workers 复用 |
| MCP 设计 | Meta-MCP(只暴露 search + execute) | 一个能力一个 MCP(更细) | 放弃细化换 schema 收敛、外部 IDE 接入摩擦为 0 |
| 邀请 Token | 自实现 EdDSA JWS(不用 jsonwebtoken) | 生态成熟度 | 放弃生态换 0 runtime deps,桌面端 token 不带脆弱依赖 |
| 验证 | Fraimz = LLM 视觉验证 + release gate | 单元测试 / E2E 脚本 | 放弃 fast feedback 换「agent 任务正确性「的硬信号 |
| 双轨开发 | apps/(OSS)+ ee/apps/(EE) | 单仓 | 放弃统一换商业化分叉,monorepo 仍可共享 packages/ |
| Extension | 五元组 Manifest(source/resources/setup/contributions/lifecycle) | VS Code marketplace 那种 | 放弃现成生态换 4 种 IDX(Claude/OpenCode/MCP/Manual)一处抽象 |
竞品格局与定位
竞品对比矩阵
| 维度 | OpenWork | Claude Cowork | Open Interpreter | OpenDevin | OpenClaw |
|---|---|---|---|---|---|
| 开源 | ✅ MIT-style(Other) | ❌ 闭源 | ✅ BSD/MIT | ✅ MIT | ✅ MIT |
| GUI 桌面 | ✅ Tauri+Electron | ✅ 仅 Anthropic 桌面 | ❌ CLI only | ⚠️ Web | ✅ Electron |
| 团队共享 | ✅ Workspace URL Bundle | ❌ 限个人 | ❌ 无 | ⚠️ 弱 | ❌ 无 |
| MCP 互操作 | ✅ 自建 + 暴露 Meta-MCP | ❌ 不暴露 | ❌ 无 | ⚠️ 部分 | ❌ 无 |
| 多 LLM BYOK | ✅ 50+ 模型 | ❌ 锁定 Claude | ✅ 多数 | ✅ 多数 | ✅ 多数 |
| 组织控制面 | ✅ Den + SSO/SCIM | ❌ 无 | ❌ 无 | ❌ 无 | ❌ 无 |
| 本地执行可审计 | ✅ Local-first | ❌ 云端为主 | ✅ 强 | ✅ 强 | ✅ 强 |
| 可视化 agent 验证 | ✅ Fraimz gate | ❌ 无 | ❌ 无 | ⚠️ 弱 | ❌ 无 |
| 三档部署 | Desktop + Den + EE | ❌ 单档 | ❌ 单档 | ❌ 单档 | ❌ 单档 |
| Stars / 社区 | 19.4k / 1.3M dl | N/A(闭源) | 59k | 30k | 数千 |
差异化护城河
- 「Meta-MCP + Fraimz + Workspace URL」三件套组合——这是竞品最难抄的。MCPOAuth 闭环已经有先发优势(Codex / Claude Code / OpenCode 官方文档已推荐
api.openworklabs.com/mcp/agent);Fraimz 是 agent 评测工程化的稀缺资产;URL bundle 是非工程团队消费 agent 能力的最低门槛 - EE/OSS 双轨 + 44 个生态 repo——是工程化深度的护城河,单人创业公司抄不动
- CEO 直接写 64% commits 的 founder commitment——竞品如果只是几个工程师拼凑,看不到这种强度
竞争风险
- Anthropic 哪天把 Claude Cowork 的团队共享 + MCP 暴露做出来——openwork 最大的概念优势(开源 + 团队共享)会被一锅端
- OpenCode 上游 fork 策略风险——如果 sst/opencode 自己做了桌面壳,openwork 的执行引擎层价值会被稀释
- OpenWorker(吴恩达团队 2026-07-24 才公布)——品牌效应强 + DeepLearning AI 生态圈资源,长期最大变量,但当前没 GA
- 国产 Cowork——本地化 / 中文用户体验有可能吃下中国市场
生态定位
OpenWork 在 2026 上半年的「桌面 Agent 入口之争」里定位为 「B2B 团队市场 / 跨 IDE 互操作层」——避开与 Open Interpreter(CLI 极客)、OpenDevin(SWE 工程师)、OpenClaw(单机用户)正面交锋,吃最稀缺的「多 LLM + 多客户端 + 团队治理」组合位的需求。
套利机会分析
- 信息差:❌ 低——19k stars / 270 PR / HackerNews 已被广泛讨论,没有「发现窗口」
- 技术借鉴:✅ 高——尤其 Fraimz(任何 agent 项目都该有的可视化 gate)、Meta-MCP(任何要做 AI 平台的项目都该学的 facade pattern)、EdDSA 自签 JWS(桌面应用之间互通的轻量方案)
- 生态位:✅ 稀缺——「桌面 Agent 团队共享层」是个空白市场,竞品都没做透
- 趋势判断:✅ 对路——MCP 生态 + Windows 16 亿台 PC + 多 LLM 这三件事的趋势都还没走完,openwork 已经站住位置
风险与不足
- Fix 占比 45.5% > Feature 28.0%——结合 issue 列表(#1103 infinite session loop、#612 v0.11.99 macOS session lost、Windows 安装失败 saga),稳定性是当前阶段最不稳定的环节。是 6.5 个月项目的常见痛,但对企业用户是 blocker
- Win/Mac/Linux 跨平台坑——PKGBUILD 270 次修改 + Windows session 历史 bug + AUR/Windows installer 反复 bump,说明「四端打包「是日常维护负担,未来一年会持续烧时间
- CEO 单点风险——64% commits 集中在 Benjamin Shafii,bus factor = 1,企业客户会问
dev分支 + CI 滚动 tag(2,353 tag / 100 release)——正式版本靠人工挑 milestone,自动化没完全收口;这条对生产环境选型是个信号- AGPL-like / Other 许可证——LICENSE 非标准 OSI 标识,企业法务会卡(这是最高优先级的隐患)
ee/apps/4,139 commits ——商业版与开源版同时跑,分叉维护成本高,未来融合/分叉压力会越来越大
行动建议
如果你要用它
- 场景:3 人以上团队用 AI Agent 做运营/数据/客户支持,且团队里有非工程师——选 OpenWork Den(Cloud 档),让运营同事通过 Workspace URL 直接消费已经搭好的 agent
- 场景:个人本地 agent + 想换模型 + 想用同一套到 Codex/Claude Code/Cursor——选 OpenWork Desktop,注意不要用最新版(dev 分支滚动),用 Releases 页面的稳定版
- 场景:100+ 人企业 / 金融 / 政府——选 OpenWork Enterprise,先让法务核 license,再验 SCIM/SSO 集成
- 不建议的场景:纯命令行极客(直接 Open Interpreter)、纯 SWE(直接 OpenDevin或 Aider)、Windows-only 重度用户(bug 密度仍高)
如果你要学它
重点关注以下 6 个文件/模块(按可学性排序):
apps/desktop/electron/runtime.mjs:1-1932— Desktop-as-Bridge 架构范本(runtime abstraction 怎么把 GUI/CLI/远程 worker 接到同一条事件总线)evals/packages/fraimz/src/validate.ts:1-130+evals/packages/cdp/src/cdp.ts:1-120— CDP-frame 视觉验证(agent 产品正确性工程化)ee/apps/den-api/src/mcp/{index,agent,auth,search}.ts— Meta-MCP facade(任何 AI 平台项目都该学的「薄 API 层「思路)apps/app/src/app/extensions.ts:1-180— Extension Manifest 五元组(跨 IDE / 跨客户端抽象)packages/connect-link/src/node.ts:1-180— EdDSA 自签 JWS 邀请 URL(桌面应用互通的 0 依赖方案)evals/runner/runner.ts:1-100— 270+ flow 的评测 runner 范本(「评测驱动开发「工程化)
如果你要 fork 它
按可改进方向排序:
- 把 LICENSE 改清楚——当前 「Other「 是法律纠纷隐患,换 AGPL-3 或 Apache-2.0 都是方向
- session persistence + cross-platform 一致性——这是当前最大工程债(issue #612 反复 reopen),如果你能稳定复现并修好,可以成为 fork 的差异化点
- 回退
dev→main为默认分支 — 当前非主流习惯对企业 onboarding 是 friction - 补 README 一张端到端架构图——
AGENTS.md+ DeepWiki 的 15 节对新手不友好,一张图能省一周 onboarding - 抽 Fraimz 成独立 npm package —— 这是 agent 产品通用的可视化 gate,本仓库用户只用到 den-api 没法独立 install,泛化后能反哺社区
- EE/OSS 边界文档化 —
ee/apps/与apps/的 split 边界目前在 PR review 里有歧义,做成 AGENTS.md 的「什么是 EE、什么不是「清单
知识入口
| 资源 | 链接 |
|---|---|
| DeepWiki | https://deepwiki.com/different-ai/openwork(已收录,15 大节架构文档齐全,含 Fraimz、Runtime Modes、Permission System、Internationalization) |
| Zread.ai | 未收录(403) |
| 官方文档 | https://openworklabs.com(含 docs 子站 + start.md 一键安装指引) |
| 关联论文 | 无(应用层产品,无 arXiv) |
| 在线 Demo | 无官方 Playground;安装脚本 curl openworklabs.com/start.md 一键落地 |