吴恩达这个 agent 让我随便换模型,可我换不动

cover

哈喽,我是飞飞。

昨天我写了一篇,讲我把整条内容流水线全压在 Claude Code 上,账号真要出点事,那笔迁移债当天就得还。写完心里其实是空的,因为我没给出解法。

今天刷到一个东西,看着像是解法送上门了。

吴恩达团队开源了一个叫 OpenWorker 的桌面 agent。我去 GitHub 上数了数,仓库 7 月 20 日建的,到今天十天,10831 个 star、1432 个 fork,MIT 许可,Python 写的。

它最打眼的一条是:模型你随便挑。

OpenAI、Anthropic、Google、DeepSeek、Kimi、Qwen、MiniMax、Mistral、GLM、Grok,开箱就支持十一家,还能接 Together 和 Fireworks 上的开源权重模型,或者干脆用 Ollama 全跑在本地。你自己带 key,想换随时换。

我昨天那篇的病根,就是被一家焊死了。

所以我今天认真看了它一遍,看完的结论有点意外:这东西挺好,但它救不了我。

它到底是个什么东西

先把它是什么讲清楚。

它自己的说法是一个住在你桌面上的开源 AI 同事,交给你的是做完的活,不是聊天记录。README 里举的例子很具体:一份排好版的文档、一条带着数字的 Slack 回复、一个更新过的日历、一个整理干净的收件箱。

干活分四步。你说出你要的结果,比如「把这个客户的简报做出来」「帮我把日历捋顺」。它自己拆步骤,跨你的桌面、文件和已经连上的应用去干。任何有后果的动作之前它停下来问你一句。最后交成品,不是交一张待办清单。

能连的东西不少,25 个以上的集成,GitHub、Slack、Jira、Notion、Linear、Outlook、Gmail、Google Calendar 都在里面,另外你的终端和本地文件也算。任何能通过 MCP 接进来的工具都能插,MCP 说人话就是让 AI 调外部工具的那套插头标准,而且是逐个工具单独授权。

还有个细节我挺喜欢。它挂着无人值守跑的时候,遇到需要你点头的事,不自己动手,把要问的停在一个收件箱里等你回来

审批门这套东西我在这个号上写过太多回了,这次不展开。

昨天我刚说欠了一笔债

说回我自己。

我这条内容流水线挂着 13 个 skill,一个编排 8 个阶段的总调度。还有一份 52 万字节、127 条的写作规则库,和一份从 12KB 砍到 4KB 的 CLAUDE.md。

昨天那篇的结论是:这些东西全长在 Claude Code 上,账号哪天登不进去,这笔债就当天到期。

现在来了个不锁模型的壳。我头一个念头当然是,这不正好吗。

我把它的架构图看了一遍。三层:最上面是桌面壳,中间是跑在本机的 agent 服务,用 Python 写的,最下面接你的文件、终端、那 25 个集成和你选的模型。

看完我明白问题出在哪了。说白了,我看错了层。

换电方便,换插座要命

打个比方。

OpenWorker 跟我说的是:电你随便接,接哪家的都行,想自己发电用 Ollama 也行。这话不假,这一层它真的做通了。

可我那一屋子电器的插头,是照另一家插座的形状做的。它换的是供电,我要换的是墙上那个孔。

我那 13 个 skill 不是普通的提示词文件。它们是照着 Claude Code 认 frontmatter 的方式、读 skill 的顺序、hook 触发的时机,一点点抠出来的。说真的,连今天上午我还在修一个脚本,专门治规则库行号漂移。那玩意儿也是照 Claude Code 那套目录结构长出来的。

OpenWorker 一个都读不了。

它有它自己的 agent 引擎、自己的工具约定、自己的一套 connector 体系,connector 说人话就是接外部应用的那些现成插件。我搬过去,等于把这些东西照它的形状重做一遍。

它把换模型做成了零成本,可我那笔债不在换哪个模型那一层,在我照着某一家的脾气抠出来的那一层。

这跟我以前算过的账是一回事。之前有家公司叫 Lindy,把全部流量从 Anthropic 切到了 DeepSeek V4,账面上一年省几百万美元。可创始人自己说,迁移比预想多干了一百倍的活。省的是模型钱,付的是形状钱。

所以「不锁模型」和「不锁生态」是两件事。前者 OpenWorker 给了,后者它给不了,任何一个自带引擎的 agent 产品都给不了。

吴恩达自己指了那一层

最有意思的是,这个判断根本不用我来下。

README 快到末尾的地方有一段,说 OpenWorker 的引擎建在一个叫 aisuite 的库上面。aisuite 是吴恩达那边更早的项目,给各家大模型提供一套统一的调用接口,外加一层带工具和 MCP 支持的 agent 能力。

然后他写了这么一句:如果你想自己搭一个 agent harness 而不是用我们这个,从 aisuite 开始;这个仓库是 aisuite 能承载什么的一个参考实现。

harness 说人话就是套在模型外面的那层脚手架,决定 agent 怎么被调起来、工具怎么挂上去、活怎么一步步交接。我那 13 个 skill、那个 8 阶段编排,全都是 harness 层的东西。

我去查了 aisuite 的数据。15822 个 star,1673 个 fork,2024 年 6 月建的,比 OpenWorker 老两年,star 还更多。OpenWorker 原本就长在 aisuite 那个仓库里,后来才搬出来单开。

换句话说,底座比上层应用更老、更厚,而且作者自己把上层定位成一个「参考实现」。

这句话我读了两遍。它等于在说:产品你可以用,但真正该沉淀在你自己手里的东西在下面那一层。

我欠债的位置,正好就是他指的那一层。

十天开了三百多个 issue

得说点扫兴的,不然这篇就成安利了。

这仓库现在挂着 302 个 open issue,而它才十天。我翻了翻最近开的几条:Intel Mac 不支持、有人要求加中文、Ollama 的视觉模型不被调用、会话被打断之后会永久 400 失败。

它自己也没藏。README 顶上明写着 Beta,原话是「完全可用、会自己更新,我们正在打磨粗糙的边角」。Windows 的安装包还没做代码签名,装的时候 SmartScreen 会弹警告,签名在办。模型那一栏也标了,只有它验证过能干工具调用的那几个在推荐名单里,别的模型串你能填,但自担风险。

还有一条我觉得更值得注意。README 的贡献说明里写着一句:他们按内部的路线图和目标在开发。所以那些已经在开发中的、或者偏离他们方向的 PR,可能不会接。

MIT 许可是真的,代码是真的开放。但开源和共治是两件事。这条我写 K3 权重那次就记过一遍:看到「开源」两个字,先看清对方开的到底是什么。

顺带一个挺说明问题的信号,已经有第三方在做中文汉化包了,十几个 star。中文需求是真的,官方还没顾上。

我会不会装它

诚实说在前面:我还没装。 我这台 M1 的 Mac 符合它的要求,但写这篇的时候我只读了 README 和仓库数据,没跑过一次真活。所以这篇给你的是判断,不是实测报告。

会装,但不是拿它替我这条线。

它适合的活跟我这条线不重叠。我的流水线是文章生产,跑在终端里,输出是 markdown。OpenWorker 明显更适合跨办公工具那一摊:把 Jira 和 GitHub 上的状态凑成一份周报,把日历捋顺,盯着某个 Slack 频道出早报。这些活我现在压根没自动化,因为往 Claude Code 里接 Slack 和日历的 connector,比我写一个 skill 麻烦得多。

所以它对我是个补位,不是个替换。

真要说这东西改了我什么,是它让我把昨天那个问题问得更准了。我昨天以为我的债是「押在一家模型上」。今天看清了,模型那一层其实早就不锁了,ANTHROPIC_BASE_URL 指到别家这条路我跑通过,Ollama 拉本地模型我也跑通过。真正锁住我的是我照着一家的脾气写了 13 个 skill,而这一层没有任何产品能替我搬。

那我这周准备做的事就更具体了:把那 13 个 skill 拆开看,哪些是「规则」哪些是「胶水」。规则是可以搬走的,比如那 127 条写作经验、那份不许用中文破折号的硬扫描矩阵,它们跟哪个 harness 无关。胶水是搬不走的,frontmatter 怎么写、hook 挂在哪个事件上,换个壳就得重做。

这份清单我早该做了,昨天只是想到,今天被吴恩达那句话推了一把。

你那屋子插头什么形状

所以这篇给你的东西很具体。

你手上一定有一堆攒了很久的东西:调顺的提示词、写厚的规则文件、配好的自动化。今天可以做一件事,把它们分成两摊

一摊是不管换到哪都还成立的,比如你总结出来的判断标准、你踩过的坑、你的用词禁忌。这些是资产,值得从工具里搬出来,存成纯文本放你自己的仓库。

一摊是照某一家的形状长出来的,比如它认什么配置格式、钩子挂在哪。这些是负债,你换壳的那天要重付一遍。

分完你就知道自己真实的迁移成本有多少了。大多数人以为自己被模型锁住了,其实锁住你的是插头形状。

最后想问问你:你攒得最厚的那份配置,如果明天换个工具,有多少是能原样搬过去的?我猜比你以为的少,但也比你担心的多。

评论区说说你那份最舍不得的文件是什么。