openwork:基于 OpenCode 的智能体工作流程管理项目

The open-source alternative to Claude Cowork (powered by opencode)

Branch2675Tags2431
FilesLast commitLast update
13 days ago
15 hours ago
15 hours ago
15 hours ago
1 month ago
12 hours ago
3 days ago
13 hours ago
12 hours ago
12 hours ago
16 hours ago
16 hours ago
14 days ago
1 month ago
13 hours ago
13 hours ago
6 days ago
18 days ago
26 days ago
15 hours ago
2 months ago
15 hours ago
6 months ago
1 month ago
24 days ago
16 hours ago
6 months ago
5 months ago
25 days ago
3 days ago
16 hours ago
13 days ago
6 months ago
1 month ago
3 days ago
1 month ago
7 days ago
1 month ago
5 months ago
2 months ago
2 months ago
6 months ago
4 months ago
7 months ago
24 days ago
16 hours ago
6 months ago
16 hours ago
14 hours ago
14 hours ago
4 months ago
16 hours ago
15 hours ago

OpenWork

OpenWork 是 Claude Cowork 和 Codex 的免费开源替代品:一款适用于 macOS、Windows 和 Linux 的桌面应用,让 AI 智能体在你自己的文件上完成实际工作。它基于 OpenCode 构建,支持任意模型——50+ 提供商、你自己的 API 密钥,或通过 Ollama 运行本地模型——并让团队共享技能和 MCP 服务器。

下载 OpenWork · GitHub 发布 · 文档

阅读语言:简体中文 · 繁體中文 · 日本語

只需为 Codex、Claude Code、Cursor 或其他兼容智能体添加一个 OpenWork MCP,即可在你的工具、团队成员和设备间复用相同的技能、MCP 和已连接服务。创建一次,即可与同事或朋友共享,也可以仅自用。

当你希望拥有专属工作区时,桌面应用随时可用,但它并非必需。你也可以从已有的智能体中使用 OpenWork。对于规模较大的组织,管理界面允许你发布能力、管理访问权限,并配置共享连接或按用户连接。

OpenWork 桌面应用

为什么选择 OpenWork 而不是 Claude Cowork

  • 免费开源。 桌面应用采用 MIT 许可证;本地使用无需 OpenWork 账号。
  • 任意模型。 自带 API 密钥,使用 ChatGPT 登录,或通过 Ollama 或任意 OpenAI 兼容服务器运行本地模型。查看 添加自定义 LLM。
  • 以桌面应用形式运行于 macOS、Windows 和 Linux——而非 CLI。
  • 你的文件保留在本地。 云端为可选项。
  • 与团队共享技能和 MCP 服务器。 查看 与团队共享技能 和 共享 MCP 连接。
  • 将团队控制平面自托管到你自己的基础设施上。查看 自托管。
  • 迁移你的 Cowork 配置。 技能、兼容 Claude 的插件以及 MCP 服务器均可沿用。查看 从 Claude Cowork 迁移。

通过你的 AI 智能体安装

你已经在用 AI 智能体了吗?复制这段提示词,并粘贴到 Claude Code、Cursor、Codex、ChatGPT,或任何能够在你电脑上执行命令的智能体中。

Install OpenWork on my computer, set up my first workspace, and open it ready to use. Follow the steps in https://openworklabs.com/start.md?v=hero
  1. 安装 OpenWork
  2. 创建你的工作区
  3. 打开后即可运行

在任意智能体中使用 OpenWork

OpenWork MCP 可将你已分配的技能、插件、MCP 连接,以及 Google Workspace 和 Microsoft 365 能力接入任何兼容的智能体。

它提供四个工具:search_capabilities 查找你可使用的能力,execute_capability 执行该能力,list_skills / get_skill 列出你的技能并直接读取某个 SKILL.md。添加 MCP 后,客户端会打开浏览器,让你登录并选择你的 OpenWork 组织。

Codex

codex mcp add openwork --url https://api.openworklabs.com/mcp/agent

Claude Code

claude mcp add --transport http openwork https://api.openworklabs.com/mcp/agent

OpenCode

将以下内容添加到 opencode.json:

{
  "mcp": {
    "openwork": {
      "type": "remote",
      "enabled": true,
      "url": "https://api.openworklabs.com/mcp/agent",
      "oauth": {}
    }
  }
}

任意 MCP 客户端

使用此远程 MCP 服务器地址:

https://api.openworklabs.com/mcp/agent

OpenWork Den

OpenWork Den 是用于在团队或组织范围内管理 OpenWork 的控制平面。

  • 大规模开通推理服务,并控制各模型提供商可供哪些成员和团队使用。
  • 邀请团队成员、创建团队,并集中管理访问权限。
  • 设置桌面端策略,限制本地模型访问,并控制组织可使用的应用版本。
  • 通过市场发布技能和插件,然后将其分配给组织、团队或特定人员。
  • 导入 Agent Plugins 或兼容 Anthropic 的插件,并通过 OpenWork MCP 使其支持的技能和远程 MCP 可用。

OpenWork Den 组织控制平面

许可

本仓库采用按目录拆分的许可证,类似 GitLab:

  • ee/ 目录之外的所有内容均为 MIT — 桌面应用和核心平台均为开源,可自由用于任何用途。
  • ee/ 目录下的所有内容(OpenWork Den — 组织控制平面)均采用 OpenWork EE License,这是一种源码可用许可证。代码是公开的,你可以准确审查实际部署的内容。生产环境使用需要 OpenWork 订阅,但用户数不超过 5 的组织免费,任意规模均可免费评估 30 天,并且开发和测试始终免费。每个 ee/ 版本在发布两年后还将转为 MIT。

在此许可证采用之前发布的版本仍沿用其原始许可证(FSL-1.1-MIT)。请参阅定价和订阅条款。

文档

阅读 OpenWork 文档。

快速开始(贡献者)

从全新克隆到可运行的开发构建的最快路径。

前置要求

  • Node 24 — 锁定在 .nvmrc 中(nvm use 会自动切换到该版本)。
  • pnpm 11 — 锁定在 package.json 中(packageManager);运行 corepack enable 可自动使用锁定版本。切勿使用 npm 或 yarn。
  • 带 DCO 签名的 Git — 每个提交都需要 Signed-off-by trailer(git commit -s)。参见 CONTRIBUTING.md。

首次运行

git clone https://github.com/different-ai/openwork.git
cd openwork
corepack enable
pnpm install
pnpm dev   # launches the Electron desktop app with hot reload

仓库结构

路径 存放内容
apps/ 桌面应用:React 界面(apps/app)、Electron 外壳(apps/desktop)以及 openwork-server(apps/server)(MIT)
packages/ 共享核心包(MIT)
ee/ OpenWork Den — 组织控制平面、MCP 网关和推理服务(EE License,参见 许可)
evals/ 基于 @openwork/testkit 构建的可执行测试规范 — 参见 evals/README.md
worlds/ 用于 pnpm world 的声明式开发/测试环境定义
docs/ 运维、功能与发布文档
.opencode/skills/ 仓库智能体技能(测试、发布、Daytona 等)

测试

所有可执行测试覆盖均位于 evals/specs/**/*.test.ts;应用驱动旅程使用 .e2e.test.ts。

pnpm --dir evals install --frozen-lockfile   # once
pnpm evals:pr specs/<name>.test.ts           # app-less PR-lane spec
pnpm evals:e2e <name> --local                # app-driving E2E journey, run locally

Runtime-observable changes need test evidence on the PR. AGENTS.md and evals/README.md describe the verification contract and vocabulary.

Sending a pull request

  1. Branch from dev (the default branch) and open your PR against dev.
  2. Sign off every commit: git commit -s.
  3. Keep the diff as small as possible, and include or update test evidence for runtime-observable changes.
  4. Read CONTRIBUTING.md for the DCO and licensing rules — contributions under ee/ additionally require a CLA.

Local development

For one checkout, keep using pnpm dev; with no extra environment variables it reuses the existing shared dev profile.

To run multiple git worktrees at once, use:

pnpm dev:worktree

它会设置 OPENWORK_DEV_PROFILE=auto,从 worktree 路径派生一个稳定的 profile 名称,让 Electron 选择一个空闲的 CDP 端口,并让 Vite 选择一个空闲的 dev-server 端口。你也可以指定一个命名 profile,例如 OPENWORK_DEV_PROFILE=my-feature OPENWORK_ELECTRON_REMOTE_DEBUG_PORT=0 PORT=0 pnpm dev。

dev:worktree 还会默认设置 OPENWORK_ELECTRON_USE_MOCK_KEYCHAIN=1。全新的 profile 没有已存储的凭据,因此在 macOS 上,一旦 Chromium 持久化一个已认证的 cookie,系统 keychain 就会弹出提示;该弹窗会阻塞 Electron 主循环,直到被关闭。如果你希望在隔离的 profile 中明确使用系统 keychain,可以设置 OPENWORK_ELECTRON_USE_MOCK_KEYCHAIN=0。

开发启动时会打印一条类似 [openwork] dev profile=... cdp=http://127.0.0.1:9823 的横幅;可据此找到 profile 目录,并将 CDP URL 传递给本地工具。

如果第二个实例无法获取 profile lock,现在会明确提示并退出,而不是停留在 CDP 端口已打开但没有窗口的状态。

Headless web(无 Electron)

要在浏览器中运行 OpenWork UI,并连接本地 openwork-server(无 desktop shell):

pnpm world up dev-app-web --detach

pnpm dev:headless-web 是同一脚本的兼容别名。该别名 默认保持前台运行,并接受 --detach;world up 保持前台 运行,除非显式指定 --detach。

这是一个独立的启动器:

  • 写入 tmp/headless-server.json,且从不读取 ~/.config/openwork/server.json
  • 自动授权所选的工作区根目录,并在重新启动时合并(从不重写)该配置,因此通过 UI 添加的工作区在 --replace 后仍会保留
  • 启动 Vite + openwork-server,并强制将稳定的所有者 Bearer 凭证注入 UI。崩溃重启时,已打开的标签页仍可继续使用。特权主机令牌保留在服务进程中,绝不会内联到 Vite 打包产物中。
  • 以同源方式代理 Den Cloud 调用:Vite 提供 /api/den(转发到 Den 控制面),应用通过 VITE_DEN_API_BASE_URL 将 Den API 固定到该地址,因此 Cloud 调用不会被 CORS 阻止,过期的 localStorage 基础 URL 也会在加载时清除
  • 在 tmp/dev-headless-web.json(0600)发布仅限所有者的运行时清单,并仅允许来自 Web 应用自身来源的浏览器调用本地服务器——而不是你访问的任意网站
  • 默认使用稳定端口(Web 5178、服务器 8778;端口被占用时回退到空闲端口,可用 OPENWORK_WEB_PORT / OPENWORK_PORT 覆盖)
  • 以 dev-app-web 作为单实例运行;再次启动前请先使用 pnpm world down dev-app-web 停止它
  • 将 Vite 和后端置于同一脚本生命周期中,因此任一兄弟进程退出都会停止另一个,而不会留下孤儿进程
  • 在分离模式下,等待健康检查通过,打印非敏感输出以及回执/日志路径,然后退出

脚本专属选项必须位于 -- 之后:

pnpm world up dev-app-web --detach -- --replace
pnpm world up dev-app-web --detach -- --replace --keep-tokens

--replace 会以全新的令牌重新启动无头运行时;如需保留之前的令牌,请添加 --keep-tokens。该脚本也接受 --rotate-tokens。这些都不是通用的 world 选项。

打开输出的 Web 地址。无头 Web 中的云端登录采用复制/粘贴交接方式(托管 Den 无法将会话授权重定向回 http://127.0.0.1):

  1. 账户 → 登录(打开 Den;粘贴字段会在设置中打开)
  2. 在 Den 上登录
  3. 复制 Den 显示的 OpenWork 链接 / 一次性代码
  4. 将其粘贴到 粘贴登录代码 下方 → 完成登录

在运行 pnpm dev:web-local 时,使用 OPENWORK_DEV_DEN_PROXY_TARGET=http://127.0.0.1:3005 将 Den 指向本地技术栈。设置 OPENWORK_DEV_HEADLESS_WEB_DEN_PROXY=0 可禁用 Den 接入。

其他已签入的脚本包括 worlds/live-app-web.ts 和 worlds/live-desktop.ts。两者有意共享已安装的生产环境状态,并需要在 -- 后使用其各自脚本的专属显式启用项,例如 pnpm world up live-desktop -- --allow-shared-state。使用 pnpm world list 可列出脚本和运行回执。无头生产 world 严格限制在回环地址;由于其浏览器会话使用生产凭据,远程访问/公网主机设置会被拒绝。

Introduction

Claude Cowork 的开源替代方案,由 OpenCode 提供技术支持【此简介由AI生成】

Customize your domain
9123.89 K2.41 KVisit GitHub