无忆研习社 原创深度技术解析 | 转载请注明来源
写在前面
就在几天前,Anthropic 正式发布了 Claude Cowork——一款能够直接操控你电脑桌面的AI智能代理工具。这款产品一经推出就在技术圈掀起了巨大波澜,它不再是简单的"问答机器人",而是真正意义上的"数字同事",能够帮你整理文件、处理数据、甚至自动完成一系列复杂的工作流程。
然而,好东西往往伴随着门槛。Claude Cowork 目前仅对 Max 订阅用户开放(每月100到200美元),而且更重要的是——你需要把本地文件夹的访问权限交给云端服务。对于很多注重数据隐私的开发者和企业用户来说,这无异于"裸奔"。
就在大家还在纠结要不要掏腰包、要不要冒隐私风险的时候,开源社区的极客们已经行动起来了。一个名为 OpenWork 的项目横空出世,定位非常明确:打造一个开源、可扩展、本地优先的 Claude Cowork 替代品。
这个项目刚上线就冲上了 Hacker News 热榜第一,短短两天斩获近千颗 Star,热度还在持续攀升。作为一个长期关注 AI Agent 领域的技术博主,我第一时间对这个项目进行了深度测评和源码分析。
这篇文章会从技术原理、架构设计、安装部署、实际操作等多个维度,为你全面剖析 OpenWork 这个项目。无论你是想了解前沿 AI Agent 技术的开发者,还是希望在本地部署一套AI协作系统的普通用户,这篇文章都会对你有所帮助。
无忆研习社 的老朋友应该知道,我一直推崇"授人以渔"的理念。所以这篇文章不会只是简单的"下载-安装-运行"流水账,而是会深入到技术细节层面,让你不仅知其然,还知其所以然。
好了,废话不多说,正文开始。
第一章:搞懂背景——Claude Cowork 到底是什么?
在聊 OpenWork 之前,我们得先搞清楚它模仿的对象——Claude Cowork 究竟是个什么东西。
1.1 从聊天机器人到"数字员工"的进化
过去几年,我们见证了 AI 对话模型的飞速发展。从最初的 ChatGPT 到现在的 Claude、Gemini,这些模型在理解能力和生成能力上都取得了质的飞跃。但如果你仔细观察就会发现,它们本质上还是"被动"的——你问它答,你不问它就不动。
Claude Cowork 代表的是下一阶段的 AI 形态:主动执行型智能代理(Agentic AI)。简单来说,你不再需要一步步告诉它该怎么做,而是直接给它一个目标,它会自己规划执行步骤、调用各种工具、完成任务后向你汇报。
举几个 Anthropic 官方给出的使用场景:
- 文件整理:把你杂乱无章的下载文件夹按照类型、日期重新归类,并给每个文件起一个有意义的名字
- 数据处理:从一堆收据照片中提取信息,自动生成一份费用报销表格
- 文档生成:把散落在各处的笔记汇总成一份完整的报告初稿
这种"交代任务-自动执行-结果汇报"的工作模式,是不是很像你和一个得力助手的协作方式?这也是它被命名为"Cowork(协作)"的原因。
1.2 Agentic Loop:Claude Cowork 的核心机制
理解 Claude Cowork 的工作原理,有一个关键概念必须掌握:Agentic Loop(智能体循环)。
传统的 AI 对话是一问一答的线性模式。而 Agentic Loop 则是一个循环迭代的过程:
用户下达任务
↓
AI 分析任务,制定执行计划
↓
AI 执行计划中的第一步
↓
检查执行结果,判断是否需要调整
↓
继续执行下一步,或者向用户请求确认
↓
循环往复,直到任务完成
↓
向用户汇报最终结果
在这个循环中,AI 不只是生成文字,而是会调用各种工具(Tools)来完成实际操作。比如读取文件系统、执行 Shell 命令、操作浏览器等等。这也是为什么它能真正"做事"而不只是"说话"。
Claude Cowork 就是构建在这套 Agentic 架构之上的产品级应用。它继承了 Anthropic 此前推出的 Claude Code 的核心能力,但把界面从命令行变成了普通用户也能上手的图形化应用。
1.3 为什么我们需要开源替代品?
Claude Cowork 看起来确实很香,但它有几个让人犹豫的问题:
价格门槛高
目前 Claude Cowork 仅对 Max 订阅用户开放,基础档位每月100美元起步。对于个人开发者或小团队来说,这个成本不算低。虽然刚宣布开放给 Pro 用户了,但功能和额度上仍有诸多限制。
数据隐私风险
要使用 Claude Cowork,你必须授权它访问本地文件夹。虽然 Anthropic 强调"只能访问你明确授权的目录",但你的文件内容最终还是会上传到云端进行处理。对于涉及敏感数据的场景,这是一个不可忽视的风险点。
平台锁定
Claude Cowork 目前只在 macOS 桌面应用中可用,而且深度绑定 Anthropic 的服务。你没法选择其他模型提供商,也没法在本地完全离线运行。
正是这些痛点,催生了开源社区对替代方案的需求。而 OpenWork,就是目前最有潜力的答案之一。
第二章:OpenWork 项目全解析
2.1 项目定位与设计哲学
OpenWork 的定位非常清晰:一个开源、可扩展的"Claude Cowork 风格"系统。
项目由 different-ai 团队发起,核心开发者在 Hacker News 的帖子中表示,这是一次为期两天的黑客马拉松的产物。虽然开发周期很短,但项目架构设计得相当完整。
OpenWork 的核心设计哲学可以总结为四个关键词:
- 可扩展(Extensible):通过技能包(Skills)和插件(Plugins)机制,用户可以轻松扩展 AI 的能力边界
- 可审计(Auditable):每一步操作都清晰可见,你可以完整追溯 AI 做了什么、为什么这么做
- 有权限(Permissioned):敏感操作需要用户显式授权,控制权始终在你手里
- 本地/远程两用(Local/Remote):既可以在本地运行,也可以连接到远程服务器
这四点直击了 Claude Cowork 的几个软肋:闭源不可控、操作黑盒化、隐私风险高。
2.2 技术架构深度剖析
了解 OpenWork 的技术架构,是理解它能做什么、有什么限制的基础。这里我尽量用通俗的语言解释,不懂代码的朋友也能看懂。
整体架构图
┌─────────────────────────────────────────────────────┐
│ OpenWork 桌面应用 │
│ (Tauri + React + TypeScript) │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 工作区管理 │ │ 会话管理 │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ ┌──────┴──────────────────┴──────┐ │
│ │ OpenCode SDK 层 │ │
│ │ (@opencode-ai/sdk/v2) │ │
│ └──────────────┬─────────────────┘ │
│ │ HTTP/SSE │
└──────────────────┼──────────────────────────────────┘
│
┌──────────────────┴──────────────────────────────────┐
│ OpenCode Server (后端引擎) │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 会话管理器 │ │ 工具执行器 │ │
│ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 模型提供商 │ │ 权限控制器 │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────┐
│ AI 模型 API │
│ (Claude/GPT/Gemini) │
└─────────────────────┘
前端层:Tauri + React
OpenWork 的桌面应用采用了 Tauri 框架。如果你不了解 Tauri,可以把它理解为 Electron 的"轻量级替代品"。
传统的 Electron 应用会内嵌一个完整的 Chromium 浏览器内核,导致应用体积动辄几百MB。而 Tauri 使用操作系统自带的 WebView(macOS 上是 WebKit,Windows 上是 WebView2),应用体积可以控制在几十MB甚至更小。
前端界面部分用的是 React + TypeScript 技术栈,配合 Tailwind CSS 做样式管理。对于现代前端开发者来说,这是一套非常主流且成熟的组合。
后端层:OpenCode 引擎
OpenWork 的真正"大脑"是 OpenCode——一个由 anomalyco 团队开发的开源 AI 编码代理。OpenCode 在 GitHub 上已经积累了超过 7 万颗 Star,是目前最活跃的开源 AI Agent 项目之一。
OpenCode 采用客户端-服务器架构:
- 服务端:一个基于 Hono 框架的 HTTP 服务器,负责管理会话状态、调用 AI 模型、执行工具、处理权限请求
- 客户端:可以是终端界面(TUI)、桌面应用、IDE 插件、甚至是移动应用
OpenWork 本质上就是 OpenCode 的一个图形化客户端,把原本需要在终端里敲命令的操作,封装成了点击按钮就能完成的界面。
通信机制:REST + SSE
OpenWork 前端和 OpenCode 后端之间通过两种协议通信:
- REST API:用于一次性的请求响应,比如创建会话、发送提示词、获取状态等
- SSE(Server-Sent Events):用于实时推送,比如 AI 的执行进度、计划更新、权限请求等
SSE 是实现"实时感"的关键。有了它,你才能在界面上看到 AI 一步步执行任务的动态过程,而不是傻等一个最终结果。
2.3 核心功能模块详解
接下来我们逐一拆解 OpenWork 的主要功能模块,看看它到底能帮你做什么。
功能一:工作区管理
OpenWork 支持同时管理多个"工作区(Workspace)"。每个工作区对应你本地的一个文件夹,AI 只能在这个文件夹范围内进行读写操作。
工作区的设计带来两个好处:
- 安全隔离:不同项目的文件相互独立,避免 AI 误操作
- 上下文聚焦:AI 只需要理解当前工作区的内容,降低认知负担,提高响应质量
你可以在界面顶部的工作区选择器中快速切换不同的项目。
功能二:会话与任务管理
每次与 AI 的交互都会创建一个"会话(Session)"。会话是任务执行的基本单元,包含:
- 你的提示词(Prompt)
- AI 的执行计划(Plan)
- 执行过程中产生的所有消息和事件
- 最终的输出结果
OpenWork 会保存所有历史会话,你可以随时回溯查看之前的任务是怎么完成的。这对于调试和学习都很有帮助。
功能三:可视化执行计划
这是 OpenWork 相比命令行工具的最大优势之一。
当 AI 接到任务后,它会先制定一个执行计划(Plan),然后逐步执行。在 OpenWork 的界面上,这个计划会以时间线的形式可视化呈现:
- 每个步骤是什么
- 当前执行到哪一步
- 每一步的状态(进行中/已完成/需要审批)
- 哪些文件被读取或修改了
这种"透明化"的设计,让你对 AI 在后台干了什么一目了然,彻底消除了"黑盒"带来的不安感。
功能四:权限审批系统
OpenWork 实现了一套完整的"人在回路(Human-in-the-Loop)"权限控制机制。
当 AI 想要执行某些敏感操作时——比如读取特定文件、执行 Shell 命令、访问网络资源——界面上会弹出一个审批请求。你有三个选择:
- 允许一次(Allow Once):只授权本次操作
- 永久允许(Allow Always):以后同类操作自动通过
- 拒绝(Deny):阻止本次操作
这套机制确保了最终的控制权始终在你手里。你可以放心大胆地让 AI 帮你干活,因为任何"越权"行为都会被拦截。
功能五:技能管理器(Skills Manager)
这是 OpenWork 可扩展性的核心体现。
所谓"技能(Skill)",可以理解为给 AI 安装的"知识包"或"能力包"。每个技能就是一个包含特定指令和上下文的文件夹,告诉 AI 在遇到某类任务时应该怎么处理。
比如,你可以给 AI 安装一个"Excel 处理技能",让它知道如何正确地读取、解析、生成 Excel 文件。或者安装一个"代码审查技能",让它按照特定的规范去审查代码质量。
技能管理器支持三种方式添加技能:
- 从 OpenPackage 安装:类似 npm 或 pip,直接从包管理器下载
- 导入本地文件夹:把你自己编写的技能文件夹导入
- 手动放置:直接把技能文件夹放到
.opencode/skill目录下
这种设计让 OpenWork 不再是一个固定功能的工具,而是一个可以无限扩展的平台。
功能六:模板系统
如果你经常需要执行某些重复性的任务,OpenWork 的模板系统可以帮你大幅提升效率。
你可以把一次成功的会话保存为"模板"。下次遇到类似任务时,直接选择这个模板,AI 就会按照之前的模式来执行,不需要你再详细描述一遍。
模板保存在本地,你可以自由管理、编辑、分享给团队成员。
功能七:双模式运行
OpenWork 支持两种运行模式:
主机模式(Host Mode)
在这种模式下,OpenWork 会在你本地启动一个 OpenCode 服务器,以你选择的文件夹作为工作目录。所有计算都在本地完成(除了调用远程 AI API 之外),数据不会离开你的电脑。
客户端模式(Client Mode)
在这种模式下,OpenWork 只作为一个前端界面,连接到一个已经运行的 OpenCode 服务器。这个服务器可以在本地的另一个终端窗口里运行,也可以在远程的云服务器上。
客户端模式特别适合以下场景:
- 需要长时间运行的任务(可以在服务器上跑,关掉笔记本也不受影响)
- 团队共享一个计算资源
- 利用更强大的云端算力
第三章:安装部署完全指南
说了这么多原理,接下来进入实操环节。我会分别介绍面向普通用户的"一键安装"方法和面向开发者的"源码编译"方法。
3.1 方法一:直接下载安装包(推荐新手)
这是最简单的方式,适合只想快速体验功能的用户。
第一步:下载安装包
访问 OpenWork 的 GitHub Releases 页面:
https://github.com/different-ai/openwork/releases
找到最新版本(截至本文发布时是 v0.1.9),下载对应你系统的安装包:
- macOS (Apple Silicon):
OpenWork_x.x.x_aarch64.dmg - macOS (Intel):
OpenWork_x.x.x_x64.dmg
Windows 版本目前还在开发中,需要额外安装 OpenCode CLI 才能运行。
第二步:安装应用
双击下载的 .dmg 文件,把 OpenWork 图标拖到 Applications(应用程序)文件夹即可。
第三步:绕过 macOS Gatekeeper
由于 OpenWork 还没有完成 Apple 的签名认证,首次打开可能会被 macOS 拦截,提示"无法打开,因为无法验证开发者"。
解决方法:
- 打开"系统设置" → "隐私与安全性"
- 在下方找到"已阻止使用 OpenWork"的提示
- 点击"仍要打开"
或者用终端命令直接解除限制:
xattr -rd com.apple.quarantine /Applications/OpenWork.app
第四步:安装 OpenCode CLI
OpenWork 只是一个图形界面壳子,真正干活的是 OpenCode 引擎。所以你还需要单独安装 OpenCode CLI。
最简单的方法是用 Homebrew:
brew install anomalyco/tap/opencode
或者用官方安装脚本:
curl -fsSL https://opencode.ai/install | bash
安装完成后,验证一下:
opencode --version
如果正确输出版本号,说明安装成功。
第五步:配置 AI 模型提供商
OpenWork 支持多种 AI 模型提供商,包括:
- Anthropic(Claude)
- OpenAI(GPT-4)
- Google(Gemini)
- AWS Bedrock
- OpenRouter
- 以及更多……
你需要至少配置一个提供商的 API Key。以 Anthropic Claude 为例:
- 访问 https://console.anthropic.com/ 注册账号
- 在 API Keys 页面创建一个新的密钥
- 把密钥保存好(只会显示一次)
然后在终端设置环境变量:
export ANTHROPIC_API_KEY=sk-ant-xxxxx
建议把这行加到你的 shell 配置文件(~/.zshrc 或 ~/.bashrc)中,这样每次打开终端都会自动生效。
第六步:启动 OpenWork
双击 OpenWork 图标启动应用。
首次启动时,它会自动创建一个欢迎工作区,并引导你完成基本设置。按照提示操作即可。
3.2 方法二:从源码编译(面向开发者)
如果你想深入研究代码,或者需要进行定制化修改,可以选择从源码编译。
环境要求
- Node.js:v18 或更高版本
- pnpm:包管理器
- Rust 工具链:cargo、rustc
- OpenCode CLI:需要安装并在 PATH 中可用
第一步:克隆代码仓库
git clone https://github.com/different-ai/openwork.git
cd openwork
第二步:安装依赖
pnpm install
这会安装所有前端和 Tauri 相关的依赖包。
第三步:启动开发服务器
pnpm dev
这个命令会同时启动:
- Vite 开发服务器(前端热重载)
- Tauri 开发模式(桌面应用窗口)
如果你只想调试 Web 界面部分,可以单独运行:
pnpm dev:web
然后在浏览器访问 http://localhost:5173。
第四步:构建生产版本
如果你要打包发布版本:
pnpm build
这会生成优化后的前端资源和 Tauri 可执行文件。
3.3 常见安装问题排查
问题一:提示找不到 opencode 命令
确保 OpenCode CLI 已正确安装并添加到 PATH。运行 which opencode 检查路径。如果使用了自定义安装目录,需要把该目录加到 PATH 环境变量中。
问题二:应用启动后一片空白
可能是 Tauri 的本地资源加载出了问题。尝试:
- 完全退出应用
- 删除
~/.config/openwork目录(这会清除所有本地配置) - 重新启动应用
问题三:连接服务器失败
检查 OpenCode 服务器是否正常运行。在主机模式下,OpenWork 会自动启动服务器;在客户端模式下,你需要手动确保服务器已启动。
问题四:AI 响应报错
大概率是 API Key 配置问题。检查对应提供商的环境变量是否正确设置,密钥是否有效,