# openwork · 项目档案 # 生成于 2026-09-01 · 由 scripts/new_project.py 从 schema 生成 # 人工补完重点:business / scenario / tech / risk.claim_vs_reality / verdict # 字段规范见 schema/project.schema.yaml id: openwork name: "openwork" repo: "different-ai/openwork" homepage: "https://openworklabs.com" added_at: "2026-09-01" status: active identity: tagline: "The open-source alternative to Claude Cowork (powered by opencode)" vendor: "Different AI, Inc." vendor_type: "vendor" region: "美国(YC 背书)" first_seen: "2026-01-14" business: positioning: |- 站在「能力分发层」,不争桌面入口。核心资产是 OpenWork MCP 与 Den 控制面—— 把 skills / MCP / 连接服务做成可跨工具、跨人、跨机器复用的组织级能力包。 target_users: - 已在使用 Codex / Claude Code / Cursor 且不想换工具的开发者 - 需要统一管控 agent 能力的中大型组织 - 想把自己搭好的工作流分发给同事或朋友的团队 monetization: |- Den 订阅(组织控制面)。免费额度写得很明确: 5 人以下组织的非 Enterprise 功能全免、任意规模 30 天评估、开发测试永久免费。 license: spdx: "NOASSERTION" name: "目录切分许可(GitLab 式):ee/ 之外为 MIT;ee/ 为 OpenWork EE License" openness: L3 redistributable: false # ↓ 排除 mirror.excludes 之后的状态。mirror_sync.sh 判可见性时用的是**这个**, # 不是上面的 redistributable——目录切分许可下两者结论相反。 # 依据:根 LICENSE 原文(已人工阅读远端全文) # "All content that resides under the /ee directory ... is licensed under # the OpenWork Enterprise Edition (EE) License" # "Content outside of the above mentioned directories or restrictions # above is available under the 'MIT' license as defined below." # 排除 ee/ 后 → 纯 MIT → 可公开。 redistributable_after_excludes: true key_restrictions: - ee/ 目录(Den 控制面、MCP 网关、推理)生产使用需有效订阅;5 人以下组织在排除 Enterprise 功能后免费 - 每个 ee/ 版本公开发布满两年后,自动追加 MIT 授权(Grant of Future License) - 客户端侧资源(image / font / CSS / 编译产出的 JS)始终为 MIT - 不得移除版权与许可声明;不授予商标使用权 - 更早版本仍受原 FSL-1.1-MIT 约束,不自动升级到新许可 moat: |- 组织侧的能力分发与治理(谁能用什么模型、谁能拿到什么 skill), 以及「一次创建、处处复用」带来的工作流网络效应。 competitive_risk: |- 最容易被 Anthropic / OpenAI 官方的 skills 市场与组织管理后台正面取代—— OpenWork 的价值恰恰建立在「官方还没做好跨工具能力分发」这个时间窗口上。 scenario: primary: - 把一套 skills + MCP + Google Workspace / Microsoft 365 连接,同时挂给 Codex、Claude Code、Cursor - 组织统一发布能力、配置模型配额与访问权限 - 桌面端作为专注工作区(可选,非必需) typical_use_cases: - 团队写好一套内部 skill,通过 Den 发布到组织,成员在各自惯用的 agent 里调 search_capabilities 直接用 - 管理员限制部分成员只能使用指定 model provider,并统一配置共享连接 - 个人把工作流分享给朋友,对方装一个 MCP 就能用 industries: - 软件研发 - 企业 IT 与知识工作流 interaction_mode: - MCP 远程服务 - 桌面应用(可选) - 浏览器登录授权 human_in_the_loop: |- 能力调用需人工在浏览器登录并选择组织;企业侧由管理员通过策略管控。 deliverables: - workflow - skill-package - capability tech: form_factor: MCP 远程服务 + 可选桌面应用 + Web 控制面 stack: - Electron - React - TypeScript - Node.js 24 - pnpm - MCP engine_abstraction: supported: - Codex - Claude Code - Cursor - OpenCode - ChatGPT - 任意 MCP client mechanism: |- 「反向注入」:不做引擎抽象层,而是把自己做成 MCP server 让各引擎来连。 对外只暴露两个工具——search_capabilities 与 execute_capability。 abstraction_layer: OpenWork MCP(能力面,不是执行面) depth_notes: |- 接入「对等且都浅」:所有引擎都以同一个 MCP 客户端身份接入, 拿到的是能力调用,不是执行控制——OpenWork 不接管 agent 的执行循环、 不负责上下文管理、不做权限回调。 真正深度绑定的是 OpenCode:仓库描述即写 powered by opencode, 桌面端属 OpenCode 生态,其余引擎只是 MCP 外挂。 这与 iPolloWork 的「Codex 仅 MCP 控制面」是同一个问题的两种解法: iPolloWork 把 MCP 当补丁(主体是桌面),OpenWork 把 MCP 当主体(桌面是可选)。 extension_system: skills: |- 一等公民:可发布、可分配到组织/团队/个人;支持导入 Agent Plugins 与 Anthropic 兼容插件并转为 OpenWork MCP 能力。 plugins: 通过 marketplace 发布与分配 mcp: |- 自身即以 MCP server 形态对外提供服务(https://api.openworklabs.com/mcp/agent), 同时也消费下游 MCP 连接。 model_binding: Den 侧可统一配置与配额控制 model provider;桌面 app 本身 BYO local_first: true multi_agent: 未强调多 agent 编排,重心是能力的共享与治理 permission_sandbox: |- 组织级管控:桌面策略下发、限制本地模型访问、控制可用 app 版本、 成员与团队的访问控制。 observability: |- Den 提供推理配额管控与访问审计; 桌面 app 侧未见 agent 执行轨迹的记录设计——它观测的是「谁用了什么能力」, 不是「agent 怎么把事做完的」。 ecosystem: community: |- YC 背书,23k star。贡献门槛是四个里最高的: 强制 DCO sign-off(每个 commit 都要 Signed-off-by), ee/ 目录的改动还需额外 CLA。 standards: - MCP notable_events: - 2026-01-14 建仓 - 早期版本采用 FSL-1.1-MIT,后改为 MIT + EE 目录切分许可 - ee/ 采用两年自动转 MIT 的 Grant of Future License 机制 - 2026-09-01 达 23.2k star、版本 v0.18.40 metrics: stars: 23253 forks: 2307 open_issues: 414 subscribers: 89 created_at: 2026-01-14 pushed_at: 2026-09-01 size_kb: 298398 languages: {TypeScript: 89.9, JavaScript: 6.7, MDX: 1.2, CSS: 0.9, Shell: 0.6, Swift: 0.5} latest_release: v0.18.40 release_cadence: 约 1 天/版本 data_date: 2026-09-01 stale: false risk: maturity_level: "0.x 活跃" license_risk: |- 整体 SPDX 为 NOASSERTION,但**排除 ee/ 目录后是纯 MIT,可以公开镜像**。 若完整镜像(含 ee/)则必须私有——EE License 明确要求生产使用需订阅, 且禁止未经授权的复制与再分发。 对实操的影响很小:5 人以下组织免费、30 天评估免费、开发测试免费, 个人与小团队几乎不会触发付费条件。 vendor_lockin: |- 锁定在 Den 控制面与能力包格式。一旦组织把内部 skills 都发布到 Den, 迁移成本取决于是否有导出路径——README 未说明。 claim_vs_reality: - claim: |- 「Claude Cowork 的开源替代品」 actual: |- 形态完全不同。Cowork 是桌面操控型 agent(直接操作你的电脑完成工作); OpenWork 是能力分发型 MCP 层,桌面 app 被明确定位为可选—— README 原文「The desktop app is there when you want a dedicated workspace, but it is not required」。 它替代的是 Cowork 唤起的「能力复用」诉求,不是 Cowork 本身。 source: README 开篇与「Use OpenWork from any agent」段 - claim: |- 跨 Codex / Claude Code / Cursor / OpenCode 多引擎通用 actual: |- 对 OpenCode 是原生的(仓库描述 powered by opencode,桌面端属其生态); 对其余引擎只通过自己暴露的两个 MCP 工具对接。 这是能力调用面,不是引擎执行面——OpenWork 不接管这些引擎的执行循环、 上下文与权限。对外宣称的「跨引擎」与内部实际的主从关系存在落差。 source: README「It exposes two tools」段;仓库 description「powered by opencode」 - claim: |- free, open-source(免费开源) actual: |- 需要分目录看:ee/ 之外确实 MIT 且免费;但 ee/(Den 组织控制面、 MCP 网关、推理)属 source-available,生产使用需付费订阅, 只有 5 人以下组织、30 天评估、开发测试三种情形豁免。 个人免费,团队与企业要付费。 source: README Licensing 段 + ee/LICENSE 原文 72 行 - claim: |- (无明确宣称,但 SPDX 为 NOASSERTION,易被误读为「不够开源」) actual: |- 恰恰相反——它是四个项目里工程治理最规范的:强制 DCO sign-off、 ee/ 需额外 CLA、evals/ 目录放可执行测试规格并要求 PR 附测试证据、 worlds/ 放声明式的开发与测试环境定义。 NOASSERTION 只因根目录 LICENSE 是混合声明文件,不代表开放度低。 source: README「Getting started (contributors)」与「Sending a pull request」段 maturity: |- 工程成熟度最高:有可执行测试规格(evals/)、声明式环境(worlds/)、 明确的贡献契约与许可边界。但仍处 0.x 主版本(v0.18.40), API 与数据格式可能变动。 chart: form_depth: 5 # 桌面只是可选壳,主体是 MCP 能力层 engine_neutral: 6 # 接得住 4+ 引擎,但都只在能力面 local_first_score: 6 # 可本地跑,但核心服务是云端 MCP deliverable_depth: 5 # 交付工作流与能力包,不止代码 verdict: one_liner: 把「能力」而不是「桌面」做成产品——工程治理最好的一个,但它和自称要替代的东西不是一个物种。 who_should_use: |- 已固定在某款 agent 上、只想让团队能力跨工具复用的开发者; 需要统一管控 agent 能力与模型配额的组织 IT。 who_should_not: |- 想要一个开箱即用的桌面 agent 工作台的人; 以为拿到的是完整 Cowork 平替的人。 mirror: gitea_repo: gitinbox/openwork visibility: public upstream: "https://github.com/different-ai/openwork" last_sync: 2026-09-02 mode: source-only # 目录切分许可:ee/ 之外是 MIT,ee/ 是 EE License。 # 本档案的 visibility: public **完全建立在「这个排除真的生效」这个前提上**—— # ee/ 一旦进了镜像,公开分发就是越权。 # 声明必须写在档案里:mirror_sync.sh 只读档案、不读 registry.yaml。 # registry.yaml 里的 mirror_excludes 只是批量抓取的提示,不参与镜像决策。 # # 第二个排除项是 2026-09-02 补的:只排除 ee/ 时,根目录的 # LICENSES/LicenseRef-OpenWork-EE.txt 仍会被推进去。它是 REUSE 规范的引用文件, # 存在的唯一意义是给 ee/ 下的文件做 SPDX 引用(ee/ 里写着 # "SPDX-License-Identifier: LicenseRef-OpenWork-EE")。ee/ 一删,它就成了孤儿。 # 许可证文本本身公开不侵权(上游自己就公开),但留着会让镜像名不副实—— # 一个不含 EE 代码的仓库里躺着 EE 许可证,读者会以为漏排了。 excludes: - "ee/" - "LICENSES/LicenseRef-OpenWork-EE.txt" sync_note: "已镜像(source-only 快照,2026-09-01)。上游 291 MB,本机到 GitHub 实测 50 KB/s,拉取耗时较长且 git clone 无断点续传。许可证为目录切分(根 LICENSE 原文:/ee 之外为 MIT,/ee 为 OpenWork EE License)——镜像时排除 ee/ 与 LICENSES/LicenseRef-OpenWork-EE.txt,排除后为纯 MIT 故判 public。未排除的完整镜像会被脚本在推送前拒绝(public 目标 + 有 excludes 声明 + full 模式)。" article: emlog_id: 0 # emlog 文章 ID,发布后回写 published_at: "" url: ""