Meta推出首款AI编程助手Muse Code,基于Muse Spark 1.2模型;评测对比发现其价格更低,但功能完整度和代码质量与Fable 5存在差距。
We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.
Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.
Follow TNS on your favorite social media networks.
Become a TNS follower on LinkedIn.
Check out the latest featured and trending stories while you wait for your first TNS newsletter.
Meta 于 8 月 5 日发布了 Muse Code,这是其首款 AI 编程 Agent,基于全新的 Muse Spark 1.2 模型。Mark Zuckerberg 表示,它可以"跨大型代码仓库处理完整的软件工程任务",大型任务"会分散到多个子 Agent 并行执行"。
Meta 的 AI 负责人 Alexandr Wang 在接受 CNBC 采访时直言不讳地阐述了战略差异:其核心卖点是"比 Claude 或 Codex 都更便宜"。
标准 muse-spark-1.2 的定价为每百万输入 token 1.25 美元,每百万输出 token 4.25 美元。作为对比,我的 Claude Code 运行的 Anthropic 模型 Fable 5 定价为 10 美元和 50 美元。然后还有"贡献者"档位,每百万 token 仅需 0.10 美元和 0.20 美元,Wang 称其"便宜 10 倍以上"。
他说得对,但这里有细则。"贡献者"意味着"你的内容可能被用于产品改进"。你的代码、你的 prompt、你的会话,所有这些都会成为 Meta 的训练数据。而且这个档位并不是藏在某个设置菜单深处——它是默认选项。
所以我测试的问题是 Wang 没有说完的那一半。更便宜,当然。但便宜是以什么质量为代价的?我给 Muse Code 和 Claude Code 布置了同样的三个编程任务,并追踪了每一个 token 的消耗。
安装很快。一条 curl 命令安装 Muse,通过你平时的 Meta 账号登录,它会一直拒绝运行直到你绑定一张信用卡。(Kimi 上个月也对我用了同样的招数。这些公司愿意让 AI 处理你的代码库,却不信任你收到账单。)定价表就显示在同一页面上——你添加信用卡的地方,我就是在那里发现默认档位的。
我在贡献者档位上运行测试,因为我的数据不值得保护。测试仓库是公开的开源代码。如果你的代码是专有的,你切换到标准档位,预期账单会接近 2 美元左右——而我只花了 6 美分。
我使用的是 dayjs,一个 2KB 的 JavaScript 日期库,是 Moment.js 的标准替代品。这是真正的生产级代码,拥有 773 个测试用例,日期计算会在你注意不到的地方出问题——直到某人的账单出错。
Muse Code(0.1.0 版)运行的是 Muse Spark 1.2 贡献者模型。Claude Code(2.1.2 版)运行的是 Claude Max 套餐上的 Fable 5。相同的 prompt、每个测试都是全新的文件夹和全新的会话,所以唯一的变量就是 Agent。以下是我运行的三个测试:
我对每个测试都记录了时间、token 数量和成本。
Prompt:This JavaScript library's test suite is failing. Run npx jest to see the failures. Find the bugs causing the failures, fix them, and get the full suite passing. Do not modify or delete any test files, do not skip tests, and do not change any public behavior beyond fixing the bugs. Explain each bug you found and your fix.
在这个测试之前,我在库中植入了三个隐蔽的 bug——那种粗心的重构会留下的那种——并清除了 git 历史,这样两个 Agent 都无法通过 diff 找到答案。这三个 bug 导致 773 个测试中的 17 个失败。
两个 Agent 都找到了全部三个 bug 并用库原本的代码修复了它们。日期差异中的舍入误差、一个插件中的边界检查反转、一周起始计算中的差一错误。两个 Agent 都正确解释了每个 bug。Muse 甚至在总结中称它们为"注入的 bug"。它知道自己正在被测试。
修复我的三个 bug 并不是完整的测试。在我的 Mac 上,还有两个不相关的测试也失败了,它们是有着时区假设的旧测试,每个 Agent 都需要决定如何处理这些不是自己造成的失败。Muse 识别出了它们,解释说它们不是真正的 bug,没有动它们。合理。Claude 找到了一种方法,在不修改测试文件的情况下让它们通过——通过一个设置变更。当 Claude 完成后,整个测试套件干净地运行了。两个 Agent 都修复了我的 bug。只有 Claude 留下了一个完全通过的测试套件。
Muse 用了 2 分 58 秒,消耗 225 万 token,花费 2 美分。Claude 用了 5 分 31 秒,消耗约 146 万 token,花费 3.02 美元。
Prompt:The file src/index.js contains this library's entire core: date parsing, the Dayjs class, and all of its methods inline in one 467-line file. Refactor it to improve readability and structure: move the parsing logic and any helper logic it needs into dedicated new modules, and break the large methods into smaller focused functions. Do not change any behavior or the public API. Every existing test must still pass (run TZ=UTC npx jest to check), and ./node_modules/.bin/eslint src/* must report no errors.
两个 Agent 都通过了两个必需的关卡,所有 773 个测试通过,零个 lint 错误。但它们在这些关卡下构建的东西完全不同。
Muse 提取了一个新模块,一个 25 行的解析文件,并将大方法拆分为原始文件内的小型辅助函数。"单体"从 467 行减少到 465 行。Claude 提取了三个模块——日期解析、区域设置处理和格式 token——核心文件从 467 行减少到 353 行。Claude 还检查了测试套件在移动任何代码之前导入了哪些内部文件,这样它移动的任何东西都不会意外破坏测试。
两个重构都通过了。一个读起来像是代码库被重新组织了(Claude)。另一个读起来像是被整理了一下(Muse)。
Muse 用了 1 分 44 秒,消耗 118 万 token,花费 1 美分。Claude 用了 6 分 9 秒,消耗约 44.8 万 token,花费 2.40 美元。
Prompt:This library's test suite passes when run with TZ=UTC npx jest, but fails when run in other time zones, for example TZ=America/New_York npx jest and TZ=Australia/Sydney npx jest. Investigate why, decide what the right fix is, and make the full suite pass in any timezone without weakening test coverage and without changing the library's public behavior. Explain your reasoning and the tradeoffs of the approach you chose.
这个测试没有标准答案,这就是我喜欢推理测试的原因。库的测试在某些时区通过,在其他时区失败——纽约时区 2 个失败,悉尼时区 3 个失败,伦敦时区没有失败。每个 Agent 都必须先弄清楚原因,再决定什么值得修复。两个都做对了。
失败的测试写得很差,所以两个都重写了它们使它们在任何地方都能工作。在这样做的过程中,两个 Agent 都独立发现了一个库中真正的 bug——一个夏令时错误,会在某些时区显示错误的时钟时间。两个都找到了,也都修复了。
但它们在如何修复写得差的测试上产生了分歧。每个都明确拒绝了对方选择的方法,且不知道对方的存在。Muse 重写了测试,用 dayjs 对比 Moment.js 进行校验。Claude 保留了原始期望值,使测试内部一致,认为固定值能捕获两个库都出错的情况。两种立场都是可以接受的。
你也可以从模型完成工作的方式中看出质量差异。Muse 删除了一个它认为冗余的断言,并在自己的几次编辑中留下了一些死代码。Claude 的更改是精确的,它除了执行必需的检查外还运行了套件的完整覆盖率检查。我在七个时区验证了两个 Agent 的工作,包括它们都没有测试过的时区。两个都站得住脚,773 个测试在所有时区都通过了。
Muse 消耗 552 万 token,花费 3 美分(这次没记住时间)。Claude 用了 9 分 8 秒,消耗约 129 万 token,花费 3.99 美元。
| 指标 | Muse Code | Claude Code |
|---|---|---|
| Bug 追踪 | 3/3 bug,套件通过 | 3/3 bug,任意时区套件全绿 |
| Bug 追踪数据 | 2m 58s,225 万 token,0.02 美元 | 5m 31s,146 万 token,3.02 美元 |
| 重构 | 通过关卡,1 个新模块 | 通过关卡,3 个新模块 |
| 重构数据 | 1m 44s,118 万 token,0.01 美元 | 6m 9s,44.8 万 token,2.40 美元 |
| 推理 | 发现隐藏 bug,留有死代码 | 发现隐藏 bug,精确 |
| 推理数据 | 时间未记录,552 万 token,0.03 美元 | 9m 8s,129 万 token,3.99 美元 |
| 总 token | 约 890 万 | 约 320 万 |
| 总成本(实际账单) | 0.06 美元 | 9.41 美元 |
关于这张图有几条说明。Muse 的成本是贡献者档位的价格。按 Meta 的标准费率计算,同样的三次运行大约需要 2 美元,算是便宜 5 倍而不是 150 倍。Claude 的成本是 Max 订阅内的 API 等价价格。而且这是三个数据点,不是基准测试。
在正确性上,两个 Agent 打平。找到的 bug 相同,通过的关卡相同。在最难的测试中,两个都独立发现了一个没有人告诉它们的库中真正的 bug。但没有人只凭表面正确性来评判一个工程师的工作,所以我不能说这两个是相等的。
深度和精细程度也很重要,这就是它们分出高下的地方。Claude 的重构重构了代码库,而 Muse 只是整理了一下。Claude 完成了整个 bug 追踪,而 Muse 只是完成了它。Claude 在推理测试上的更改是精确的,而 Muse 留下了死代码。这些在通过/失败的列中都不会显示。但当熟悉代码库的人看 diff 时,这些都会显现出来。
你在 token 上省下的,会在审查时间里还回去。
这就是折扣的问题所在。是的,Muse 明显更便宜。但我在这个实验中的每一次 Muse 运行都产生了表面看起来正确的工作,需要专家才能知道它底层是否完成了。如果你无法运行它然后信任结果,即使测试是绿的,那有什么意义?你在 token 上省下的,会在审查时间里还回去。
Wang 的便宜主张成立,而且还有余。但 Meta 没有说出口的是,便宜买到了什么——正确但不彻底的工作。
Muse Code 全新上线。我发现的差距是那种可以弥合的,而且 Meta 以前也弥合过差距。下次模型更新时我会重新运行这些测试。