再试用一个5K星开源cowork different-ai/openwork
different-ai/openwork 又是一个开源cowork项目,旨在提供一个功能强大的、可扩展的 AI 工作流系统,定位为 Anthropic Claude Cowork 的开源替代品。该项目构建于 OpenCode——一个开源的 AI 编码代理——之上,通过提供一个精致的图形用户界面(GUI),将复杂的命令行操作转化为非技术用户也能轻松上手的引导式工作流。
OpenWork 的核心目标是将“代理式工作”产品化,摆脱传统开发者工具中常见的终端界面和复杂的配置。它通过一个原生的桌面应用程序,为用户提供选择工作区、启动任务、观察进度、批准权限以及复用模板和技能等一系列流畅体验。
根据其 GitHub 仓库信息,该项目广受欢迎,拥有超过 5,600 个 Star 和近 400 个 Fork,显示出其在开源社区中的高度关注度和活跃度。
| 项目定位 | |
| 核心目标 | |
| 技术形态 | |
| 许可证 |
2. 技术架构与实现
OpenWork 采用了一套现代化的、跨平台的技术栈,通过 pnpm workspace 管理的 monorepo 架构,将前端 UI 和桌面端外壳清晰地分离为两个独立的包。
2.1. 整体架构
项目的核心架构分为两部分:
packages/app: 负责用户界面的 Web 应用。它使用 Solid.js 作为前端框架,并借助 Vite 进行构建。这部分代码是纯粹的 UI,可以独立在浏览器中运行(dev:web模式),也可以被嵌入到 Tauri 的 WebView 中。packages/desktop: 负责构建原生桌面应用的 Tauri 外壳。它包含src-tauri目录,其中存放着所有 Rust 后端代码和 Tauri 的相关配置。这部分代码负责与操作系统交互、管理窗口、处理原生 API 调用以及启动和管理底层的 OpenCode 引擎。
2.2. 技术栈详情
| 桌面框架 | ||
| 前端框架 | ||
| 后端语言 | ||
| 构建工具 | ||
| 样式方案 | ||
| 状态管理 | @solid-primitives/storage、@solid-primitives/event-bus 等库进行状态管理。 | |
| 包管理器 |
2.3. 与 OpenCode 的集成
OpenWork 的核心功能依赖于其底层的 OpenCode 引擎。它通过 @opencode-ai/sdk 与 OpenCode 服务器进行通信。集成方式主要有两种:
Host 模式: OpenWork 在本地启动一个 OpenCode 服务器实例,该实例绑定在本地回环地址(如 127.0.0.1),UI 通过 SDK 与其通信。这种模式让用户可以在自己的机器上离线运行 AI 任务。Client 模式: OpenWork 作为一个远程客户端,连接到一个已经存在的 OpenCode 服务器。这种模式使得移动端(未来规划)或轻量级客户端可以控制一个远程的、更强大的主机来执行任务。
通信主要通过 SSE (Server-Sent Events) 实现实时更新,确保 UI 能够流式显示 AI 的响应、任务计划的变更和权限请求。
3. 开发配置 (package.json) 分析
项目的 package.json 文件揭示了其现代化的开发工作流和对代码质量的重视。
3.1. Monorepo 与脚本
根目录的 package.json 主要定义了工作区(workspace)的脚本,通过 pnpm --filter 命令将指令分发到 app 或 desktop 包。这种结构使得开发者可以方便地对整个项目或特定部分进行操作。
pnpm dev | |
pnpm dev:ui | |
pnpm build | |
pnpm test:e2e | |
pnpm typecheck | |
pnpm bump:* | patch, minor, major 三种级别的版本号自动提升脚本,简化了发布流程。 |
3.2. 核心依赖
packages/app 的依赖项清晰地展示了其技术选型:
solid-js: 核心前端框架。@tauri-apps/api: 提供从前端调用 Rust 后端原生功能的接口。@tauri-apps/plugin-*: 使用了一系列 Tauri 官方插件,如dialog(文件对话框)、opener(打开外部链接)、process(进程管理)和updater(应用自动更新),增强了桌面应用的原生能力。@opencode-ai/sdk: 用于与 OpenCode 引擎交互的核心 SDK。lucide-solid: 提供了一套美观的图标库。
packages/desktop 的依赖则非常精简,仅包含 @tauri-apps/cli 作为开发依赖,用于驱动 Tauri 的开发和构建命令。
4. 特点与使用方法
OpenWork 不仅仅是一个 OpenCode 的图形界面,它还引入了自己独特的设计理念和功能,旨在提升用户体验。
4.1. 核心特点
可扩展性: 用户可以通过安装 skills和plugins来扩展 OpenCode 的能力,OpenWork 提供了图形化的技能管理器来简化这一过程。可审计性: 所有的任务执行步骤、工具调用和 AI 思考过程都被记录下来,形成一个清晰的时间线,方便用户审计和理解 AI 的行为。 权限管理: 遵循最小权限原则,任何需要访问文件系统或执行敏感操作的行为都必须得到用户的明确授权。UI 会弹出清晰的权限请求对话框。 模板化: 用户可以将常用的工作流保存为模板,方便一键启动,极大地提升了效率。 工作区 (Workspace): 这是 OpenWork 引入的一个新概念,通过一个 .json文件定义一个项目所需的所有 OpenCode 原语(如技能、插件等),简化了项目的配置和分享(此功能仍在开发中)。
4.2. 使用方法
对于最终用户,使用流程被设计得非常简单:
下载与安装: 从 GitHub Releases 页面下载对应操作系统的安装包(如 .dmgfor macOS)并安装。选择工作区: 打开应用后,选择一个本地文件夹作为项目的工作目录。 发起任务: 在输入框中输入自然语言描述的任务目标。 监控与交互: 应用界面会实时显示 AI 的执行计划(Todo List)、当前的执行步骤和思考过程。当需要权限时,会弹出对话框等待用户批准。 复用与分享: 用户可以将成功的任务流保存为模板,供未来使用。
对于开发者,项目提供了完整的本地开发指南,仅需安装 Node.js、pnpm 和 Rust 工具链即可开始贡献。
5. 总结与展望
OpenWork 是一个雄心勃勃的项目,它成功地将 OpenCode 这一强大的开发者工具,通过精心设计的 UI 和交互体验,带给了更广泛的非技术用户群体。它不仅是 Claude Cowork 的一个开源替代品,更在可用性、安全性和可扩展性方面展现了自己独特的设计哲学。
该项目在技术选型上非常现代,Tauri + Solid.js + Rust 的组合在保证高性能的同时,也提供了优秀的开发体验。其清晰的 monorepo 架构、完善的开发脚本和对测试的重视,都为项目的长期健康发展奠定了坚实的基础。
展望未来,随着“工作区”概念的完全实现和移动端 Client 的推出,OpenWork 有潜力成为连接 AI 代理能力与普通用户日常工作流的重要桥梁,真正实现“人人可用”的 AI 自动化。
6. 试用
构建在opencode之上,首次启动如下
界面十分简洁
授权弹出
步骤太多就成这样了,UI需要优化下
最后
效果挺不错
这个虽然UI简单,但操作流畅,首次试用感觉很稳定,效果也不错。