Files
agent-radar/data/projects/openwork.yaml
T
gitea-publish de6cf8f3c0 feat: 补齐 5 篇深度文(maka/openclaw/openwork/qwenpaw/tutti)+ 重算矩阵 + 总纲回填
- articles/: 新增 5 篇深度文(八段结构,每篇含 claim_vs_reality)
  - maka.md → emlog_id=105
  - openclaw.md → emlog_id=106
  - openwork.md → emlog_id=107
  - qwenpaw.md → emlog_id=108
  - tutti.md → emlog_id=109
- data/projects/*.yaml: 回写 emlog_id 到 6 个档案(orca 前序已回写)
- articles/00-overview.md: build_matrix.py 重算矩阵 + 回填总纲
2026-09-03 23:39:58 +08:00

251 lines
12 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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: 107
published_at: 2026-09-03
url: "https://blog.apescale.com/?post=107"