吴恩达开源OpenWorker:住进桌面的AI同事,交付成果而非对话
吴恩达开源 OpenWorker:住进桌面的 AI 同事,交付成果而非对话
7 月 20 日悄悄上线,不到一个月拿下 14,600+ star、2,000+ fork——吴恩达(Andrew Ng)团队开源的 OpenWorker,正在把”AI 同事”从营销话术变成一个可以每天打开的桌面应用。 它的口号很直白:交付完成的工作(finished work),而不是一段聊天记录。
先做一个容易混淆的澄清:这个 andrewyng/openworker 与此前火爆的 different-ai/openwork(基于 OpenCode 的团队编程协作平台)是两个完全不同的项目,前者是通用桌面 AI 同事,后者专注编程场景,不要搞混。
背景:从”聊天框”到”数字员工”的范式转移
过去两年,大模型产品大多停留在对话框形态:你问,它答,剩下的活儿还是你的。而 Agentic AI 的终极目标是反过来的——你说结果,它把中间步骤全部走完。
OpenWorker 对自己的定位正是如此:一个住在你桌面上的开源 AI 同事。官方 README 给出的例子很生活化:”准备一份客户简报”、”整理我的日历”、”查一下这个版本在 Jira 和 GitHub 上分别卡在哪”。它的产出不是建议清单,而是:
- 一份排版好的文档、表格或网页,作为文件落在磁盘上
- 一条带好数据的 Slack 回复
- 一个已经更新完毕的日历
- 一个分诊完毕的收件箱
工作流分四步:你描述想要的结果 → 它拆解任务、跨桌面/文件/应用执行 → 遇到”后果性操作”(发消息、改日历、执行命令)时暂停并请求人工批准 → 最终交付成品。这套 human-in-the-loop 设计,是目前 Agent 产品从 Demo 走向可用的关键一环。
技术架构:三层设计的本地优先 Agent
OpenWorker 的架构图值得细看:
1 | ┌────────────────────────────────────────────────┐ |
几个值得关注的工程决策:
1. 引擎构建在 aisuite 之上。 aisuite 是吴恩达团队维护的轻量 Python 库,提供跨厂商的统一 chat-completions API 和带工具/工具箱/MCP 支持的 Agent 层。OpenWorker 最初就诞生于 aisuite 仓库内部,后来才独立成项目——官方原话是”这个仓库是 aisuite 能承载什么的一个活参考”。这也意味着模型完全可插拔:OpenAI、Anthropic、Google 原生 API,开放权重厂商,甚至用 Ollama 完全本地跑。
2. 本地优先的隐私模型。 Agent 循环、对话历史、连接器令牌、模型密钥,全部存在本地 secret store;唯一的云端组件是一个仅负责连接器 OAuth 握手的小服务,而且不注册、用手工创建的 API Key 也照样能用。对企业用户来说,这一点比多跑几个 benchmark 重要得多。
3. 三语言技术栈各司其职。 Python 后端(FastAPI + uvicorn 本地服务、Textual TUI、MCP 客户端、Playwright 浏览器自动化),React + Tauri 桌面壳(比 Electron 轻得多),再加一个 Rust 写的语音转文字 sidecar。从 pyproject.toml 能看到不少精细考量——比如 PDF 解析选了 pypdfium2 而不是 PyMuPDF,注释里写明原因是 AGPL 许可证不能进 DMG 安装包。
4. 25+ 连接器覆盖办公全链路。 GitHub、Slack、Jira、Gmail、Google Calendar、HubSpot、邮件、浏览器自动化等。比较有意思的是 Slack 集成的形态:在频道里 @OpenWorker,你桌面上的会话就会被唤起干活,结果作为话题回复返回——IM 变成了 Agent 的入口。
从源码跑起来
项目要求 Python 3.10+、Node 20+,桌面壳还需要 Rust 工具链:
1 | git clone https://github.com/andrewyng/openworker |
普通用户直接下载安装包即可:macOS(Apple Silicon)版本已签名公证并支持自动更新,Windows 10/11 x64 版尚未代码签名,SmartScreen 会告警。安全细节上,独立 server 每次启动生成一个仅当前用户可读的 token 文件,桌面版则只在内存里持有启动令牌、从不落盘。
后端模块的划分也能看出项目的野心:automation/ 配合 croniter 做定时任务调度,memory/ 提供跨会话记忆(8 月初刚合入),personas/ 用 YAML 清单定义角色,还有 risk.py、permissions.py、workspace_trust.py 这几个专门的风险分级与信任模块——Agent 安全正在从口号变成代码。
5. 依赖选型里的”默认值哲学”。 翻看依赖清单还能发现更多类似的取舍:网络搜索默认用 DuckDuckGo(ddgs),不强制用户去申请 Tavily 或 Brave 的 API Key;Windows 因为系统不带时区数据库,专门补了 tzdata,否则所有定时任务的命名时区会静默回退到本地时间;MCP 客户端锁死在 1.x 版本,因为 2.0 移除了 streamablehttp_client 会直接破坏现有连接。这些细节说明团队很清楚:一个要装到普通人电脑上的 Agent,”开箱即用”和”静默失败”之间只隔着几个依赖声明。
对比同赛道的玩家,OpenWorker 的差异点也很清晰:OpenClaw 走的是自托管服务端路线,强调”任何平台、任何系统”的全端覆盖;OpenWork 聚焦开发者团队的编程协作;而 OpenWorker 押注的是单机桌面场景——不需要服务器、不需要运维,下载安装、填个 Key 就能干活。三条路线背后其实是同一个判断:通用 Agent 的入口之争,才刚刚开始。
节奏与隐忧
项目目前处于公开 Beta,版本推进很快:7 月 22 日到 30 日连发 v0.1.4 到 v0.1.7 四个版本,贡献主要集中在 rohitprasad15 等少数核心成员手中,吴恩达本人以方向把控为主。隐忧也很明显:Windows 版未签名、功能仍在快速变动、官方明确表示会优先按内部路线图开发、不一定会合并方向外的 PR。
写在最后
OpenWorker 代表的方向值得所有开发者关注:**Agentic AI 的竞争正在从”谁的模型更强”转向”谁能让 AI 真正交付成品”**。它不追求炫酷的自主性表演,而是把本地运行、模型自由、人工审批这三个”朴素”的原则做成默认值——这恰恰是 AI 同事能被放进真实工作流的前提。对想理解桌面 Agent 架构的工程师来说,这个仓库加上 aisuite,就是一份现成的参考实现。


