免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

吴恩达开源 OpenWorker:一个交付成品而不是对话的 AI 智能体桌面应用

发布日期:2026-07-24 07:18:42 浏览次数: 2554
作者:01麻瓜社

微信搜一搜,关注“01麻瓜社”

推荐语

吴恩达开源OpenWorker:AI智能体从对话转向交付成品,本地运行支持多模型,看其差异化实现。
核心内容:
1. 交付成品的产品定位与工作流(任务拆解,输出可直接用文件)
2. 多类型agent设计及特性(chat/code/cowork/myhelper)
3. 本地优先与多模型兼容的技术架构

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

7 月 23 号,吴恩达在 X 上宣布开源了 OpenWorker - 他和 Rohit Prasad 一起做的一个开源的 AI 智能体桌面应用。用它自己 README 里的话,它交给你的是成品,而不是一份待办清单 - 一份排好版的文档、一条带着真实数字的 Slack 回复、一个理顺的日历、一个筛过的收件箱。


现在的智能体早就不只是聊天了 - Claude Code、Codex、OpenClaw、Hermes 这些做的都是实打实的活:读写文件、执行命令、调用工具。往下拆,agent 干的事无外乎就这几类。所以有意思的问题不是“能不能干活”,而是每一家把这套底层动作做成了什么样 - 差异化恰恰藏在实现方式里。OpenWorker 是桌面应用(macOS 和 Windows)、MIT 协议、代码全开,我把仓库拉下来读了一遍后端,这篇就顺着代码看它在几处关键特性上的实现选择:交付成品的产品形态、分层的风险模型、无人值守、self-wake、本地优先。期望对大家有帮助。




OpenWorker README 里的工作流示意图 - 提问、本机干活(任意模型:云端 / 开源权重 / 全本地)、接你的工具、把成品发回。

交付成品,而不是对话

OpenWorker 的定位差异,在于它把“产出物”当成一等公民。你告诉它一个结果 - “准备一份客户简报”“把我这周的日历理一理”“看看这个版本在 Jira 和 GitHub 上到哪一步了” - 它把任务拆成步骤,跨你的文件、终端和已连接的应用去做,最后落地成文件:文档、表格、报告、网页,都是你能直接打开的成品。

后端为不同场景准备了几种 agent,它们共享同一套引擎,但工具集和人格不同:

  • chat - 纯对话,没有文件和 shell 权限,适合随手问答。
  • code - 编码用的,带单目录工作区、文件读写、git、持久 shell 和 todo,系统提示词把它约束成一个“先读懂再改、改完要验证”的资深工程师。
  • cowork - 面向一次性的知识工作,产出一份具体交付物(备忘、分析、方案、数据),带多目录工作区。
  • myhelper - 一个长期在线的个人助理人格,跨时间保持在一条连续线程上,记得住要紧的事,应用里和消息里都能找到它。

值得留意的是 code agent 的系统提示词里已经写进了并行读取的约定 - 多个互不依赖的 read/grep 请求要在一个批次里一起发,而不是一次一个。这类工程习惯直接写进了 prompt,而不是指望模型自己想到。

本地优先,模型随你挑

OpenWorker 跑在你的机器上,不把你锁死在任何一家模型上。你自带 API key - OpenAI、Anthropic、Google 都行,或者用 Ollama 完全本地跑。你的 key、对话、文件都留在本机,数据只经过你自己选的模型和集成往外走。

开箱支持的 provider 相当全:OpenAI、Anthropic、Google Gemini、Inkling(Thinking Machines)、GLM(智谱)、DeepSeek、Kimi(月之暗面)、Qwen、MiniMax、Mistral、Grok(xAI),加上通过 Together 和 Fireworks 接入的开源权重模型,以及本地的 Ollama。

实现上有个干净的设计。所有模型调用都走一个 ProviderRouter,它按模型字符串的 provider: 前缀分发到对应的 provider 客户端:ollama:llama3.3 走 Ollama(用它 OpenAI 兼容的 /v1),裸的 gpt-5.5 走默认的 OpenAI。客户端是按需懒加载并缓存的,改了 key 或换了 Ollama 地址就 invalidate() 掉缓存,现有会话不用重建就能拿到新配置。换模型这件事,因此可以在会话中途随时切。

分层的风险模型

一个真去动你文件、发你消息、跑你终端命令的 agent,最怕的就是它自作主张。OpenWorker 在这里做得很细,值得单独讲。

它先给每个工具标注了一个“风险类别”(RiskClass),这是工具本身固有的副作用等级:

  • READ - 没有副作用,永远放行。
  • WRITE_LOCAL - 改动工作区,按路径范围 + 模式来卡。
  • EXEC - 执行命令,按模式来卡。
  • EXTERNAL - 副作用发生在机器之外(发消息这类),这是无人值守 inbox 的挂钩点。




coworker/risk.py 一共 58 行:四个风险类别、一张按名字固定的基础表、一个 classify()。左侧文件树也顺带露出了整个后端 coworker/ 包的结构。

在这之上是运行模式(Mode),决定了同一个风险类别怎么处理:

  • discuss - 只读对话,不改动、不进规划流程。
  • plan - 只读,外加一套规划契约(探索 → 提方案 → 执行)。
  • interactive - 默认模式,读操作自动放行,写操作和命令要你批准。
  • auto - 全放行,但写操作仍然限制在路径范围内。
  • custom - interactive 加上一份自动放行的工具白名单。

真正巧妙的是“任务级常驻规则”。当一个外部动作(比如往某个 Slack 频道发消息)被你批准后,引擎可以把“这个工具 → 这个目标”记成一条本次任务内的常驻规则,下次同样的目标就不再反复问你。但这条捷径只对 EXTERNAL 风险开放,绝不给 shell 和写文件 - 也就是说,跑命令这件事永远会问你,一次都不放过。安全的边界卡在最危险的动作上,而不是图省事全放开。

内置的 ops 人格把这套安全约束又用自然语言强化了一遍:先调查再动手、优先只读和可逆的步骤、任何有后果或不可逆的操作(重启服务、改基础设施、删数据)都要先说清楚再拿批准,而且明确要求把来自工具、日志、网页、文件、消息的内容当作不可信的数据,而不是指令。这一条正好挡住 prompt 注入。

无人值守

“交付成品”真正要跨过的坎,是让它在你不盯着的时候也能干活,同时又不失控。OpenWorker 用三块设计凑齐了这件事。

第一块是无人值守 inbox。当一个会话在无人看管的情况下跑,遇到需要批准的写、发、shell 动作时,它不会自作主张,而是把这些请求“停”在一个 inbox 里,等你回来处理。审批请求带着 tool_call_id,是幂等的,因此可以安全地持久化和恢复。

第二块是定时自动化。一个常驻在服务里的调度器负责跑周期任务 - 早间简报、每周报告、对某个频道的长期盯守。它的策略也考虑到了现实:宕机期间错过的任务,重启后补跑一次(run-once-catch-up),不会把积压的全堆上来;如果上一次还没跑完,这一次就跳过,不叠加(skip-on-overlap)。每次运行都带完整的执行记录落到应用里。

第三块最有意思,叫 self-wake。它把一个“一直在线”的 agent 变成了“挂起 / 恢复”:会话可以主动休眠,运行时在触发条件满足时再把它唤醒,空闲期间几乎零开销。触发有两种 - 定时器(sleep_for / sleep_until),和“等某个后台任务跑完”(wake_on)。它和定时调度器共用同一个 tick 循环:每一拍检查有哪些唤醒到期了,把对应会话恢复起来。一个要等三小时后再继续的任务,因此不用真的占着一个进程空转三小时。

接入你的工具

OpenWorker 自带 25+ 个集成,覆盖了日常工作里常见的那批:GitHub、Slack、Jira、Notion、Linear、HubSpot、Outlook、monday.com、Gmail、Google Calendar,还有 Datadog、PagerDuty、Asana、Salesforce、Zendesk、Confluence、ClickUp、Discord、Telegram 等等,外加你的终端和本地文件。

除了内置连接器,任何能通过 MCP(Model Context Protocol)访问的工具都能插进来,而且是逐工具粒度的控制。MCP 的配置刻意做成了和 Claude Desktop、Cursor、Codex 互通 - 用的就是同一份 mcpServers JSON 格式,你从别处复制过来直接能用。配置分两层:全局的 ~/.config/coworker/mcp.json 和工作区级的 .coworker/mcp.json,同名时工作区覆盖全局。配置里的 ${VAR} 引用在加载时通过 SecretStore 解析,token 不会明文躺在配置文件里。HTTP transport 的 MCP 服务还支持 OAuth 2.1 + PKCE 加动态客户端注册的浏览器授权。

一个具体好用的场景是“从 Slack 工作”:你在频道里 @OpenWorker,它会在你桌面上开一个会话,用你本机的工具完成任务,结果作为线程回复发回来。集成不是单向的读,而是双向的工作入口。

Skills 与 Personas

OpenWorker 直接采用了 Anthropic 的 SKILL.md 格式来做技能扩展。一个 skill 就是一个文件夹,里面有 SKILL.md(YAML frontmatter 声明 name、description、可选的 allowed-tools)加一段 markdown 正文,外加可选的资源和脚本。它用的是“渐进式披露”:会话开始时只把技能目录(名字 + 描述)注入上下文,完整正文按需通过 load_skill 工具再加载。这样一堆技能不会一次性把上下文撑爆。

Personas 则是把 agent 的身份、推荐模型、默认权限模式、推荐连接器打包成一份带 frontmatter 的 markdown。内置的 ops 人格就是个好例子 - 它声明了自己适合 claude-opus-4-8 或 gpt-5.5、默认 interactive 模式、核心推荐 GitHub / Slack / Datadog 连接器,正文则是一整套“运维工程师该怎么谨慎干活”的行为准则。给不同工种配不同人格,比让一个万能 prompt 硬撑要清楚得多。

建立在 aisuite 之上

OpenWorker 的引擎建立在吴恩达团队的 aisuite[1] 上 - 一个轻量的 Python 库,提供跨 provider 的统一 chat-completions 接口,以及一层带工具、工具箱和 MCP 支持的 agents 抽象。OpenWorker 最早就是在 aisuite 仓库里孵化的,后来才搬到独立的家。




仓库主页:后端 Python 占大头、前端 TypeScript,贡献者里能看到 Rohit Prasad 和 Andrew Ng。

反过来说,如果你想自己搭一套 agent 骨架,而不是直接用这个应用,README 明确建议从 aisuite 起步,把 OpenWorker 这个仓库当成“aisuite 能撑起多复杂的东西”的参考实现。引擎那层也不含糊 - 流式输出是把 provider 的阻塞式生成桥接到异步循环上,中断可以从任意状态(流中、工具执行中)随时打断并把用户已经看到的内容如实持久化,会话挂起后能做幂等的持久化恢复,还支持在一轮进行中插入 steering 消息纠偏。这些是“桌面 agent 用起来顺手”背后真正吃工程量的地方。

现在它还在 open beta,应用会自更新,所以修复能很快到达安装。想跑的话,桌面版直接下载,或者从源码起 - 后端一个常驻的本地 agent 服务(Python),前端是 React UI 加一个 Tauri 壳。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅