吴恩达开源 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
2
3
4
5
6
7
8
┌────────────────────────────────────────────────┐
│ OpenWorker desktop app │ 原生 Shell + GUI
├────────────────────────────────────────────────┤
│ local agent server (Python) │ 引擎 · 工具 · 连接器
├───────────────┬────────────────┬───────────────┤
│ 你的文件 │ 你的工具 │ 你的模型 │ 一切都用你自己的密钥、
│ & 终端 │ 25+ 连接器 │ 任意厂商 │ 在你自己的机器上运行
└───────────────┴────────────────┴───────────────┘

几个值得关注的工程决策:

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
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/andrewyng/openworker
cd openworker

# 一次性引导,创建 .venv(Windows 上建议在 Git Bash 或 WSL 中运行)
bash packaging/setup_dev_env.sh

# 启动本地 agent server
.venv/bin/openworker-server --cwd ~/some/project --port 8765

# 第二个终端启动 UI
cd surfaces/gui && npm install && npm run dev

普通用户直接下载安装包即可:macOS(Apple Silicon)版本已签名公证并支持自动更新,Windows 10/11 x64 版尚未代码签名,SmartScreen 会告警。安全细节上,独立 server 每次启动生成一个仅当前用户可读的 token 文件,桌面版则只在内存里持有启动令牌、从不落盘。

后端模块的划分也能看出项目的野心:automation/ 配合 croniter 做定时任务调度,memory/ 提供跨会话记忆(8 月初刚合入),personas/ 用 YAML 清单定义角色,还有 risk.pypermissions.pyworkspace_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,就是一份现成的参考实现。

来源