大多数 “vs” 页面并不是比较。它们是三篇产品介绍拼在一起。一个工具是作者已经在用的,另一个只开到够截图。任务做到一半会改,价格从记忆里抄。评论区随后争论一场从未真正发生的比较。

Claude Radar 还是会发表比较。从不把工具名字并排放,只是躲开这件事。诚实的版本更慢:固定一项任务,固定停止条件,写下操作者做了什么,并拒绝那些看起来像证据、其实不是的主张。

这篇文章就是那套方法:第二个人只凭这一页就能照着做的协议。耗时、金额、胜率,要等到有公开测试仓库、并有记录了执行日期的测试之后。

工具合集的问题

编程代理不是相机。你不能把两台支上三脚架,去拍同一面砖墙。操作者在回路里:提示词、打断的瞬间、不许工具碰的文件、被判定为“差不多了”的测试。回路看不见,比较就成了性格测验。

合集还会混类。终端代理、带行内补全的编辑器、浏览器里的应用构建器,都可以“写一个待办应用”。留下的仓库种类、测试种类、第二天要接着做的工作并不相同。把它们当可互换的产品,得到的是标志网格和一段含糊的收尾。

如果第二个操作者无法只凭这一页重跑这次比较,那就是一篇带比较标题的日记。

我们宁可少发。日记标成日记,比较标成比较。这份协议属于后者。

比较什么,不比较什么

这份杂志英语优先,面向全球。重心是 Claude Code,因为这是这份杂志的主题。Cursor、Codex 和 vibe coding 工具也在同一视野里,因为读者确实在它们之间走动。自动化目录、模板市场、“1,000 个工作流”目录以后可以当旁注,如果建造者的工作撞上它们。它们不是这份杂志的主线。

比较要上这个站,必须同时满足:

  • 读者要做的是能跑的软件,不是幻灯片。
  • 每套工具都能对准同一份公开测试仓库。
  • 我们能说出不是“感觉更快”的完成标准。
  • 我们愿意公开失手,而不只是表现好的那一次。

唯一来源是营销页、记着的发布演示或社交帖,就不属于这里。官方文档会带检索日期引用。我们不会把它洗成基准。

共享测试仓库

第一批编辑比较都应从一个小型公开 Web 应用开始——同一仓库、同一组失败测试、同一份 README。测试仓库的要点不是把场面做得很像电影,而是把条件对齐。若 Run A 是“凭记忆重建生产单体”,Run B 是“搭一个计数器”,我们比较的是两件不同的工作。

测试仓库应当故意无聊:

  • 小到一次能读完。
  • 公开,读者能克隆。
  • 没有客户秘密、生产日志和私人名字。
  • 运行开始时已有因已知原因失败的测试。
  • 与本杂志自己的代码无关,免得按它是否奉承我们来打分。

第一份公开测试仓库会以提交哈希链到每一篇使用它的比较。哈希出现之前,比较停在方法,而不是结果。

协议

这些步骤写出来是为了能被抄走。已发表的比较若跳过某步,应写明哪一步、为什么——不要藏进更顺的叙事。

  1. 记录工具。 记下工具名、渠道或构建标识、工具暴露的模型选择、编辑器或 CLI 版本、操作系统,以及开始日期。工具不暴露版本,就写下这一点。不要估。
  2. 重置测试仓库。 从约定提交开始。没有残留的 node_modules 小聪明,没有藏着的 WIP,没有与本次比较无关的技能或规则文件。起始树也是方法的一部分。
  3. 交出同一份提示词包。 每次运行一包,放在文章或旁边的文件里。没有“我私下也说了”。操作者必须加约束,那是干预(第 4 步),不是秘密序言。
  4. 给干预设上限。 事先决定提示词包之后允许多少轮操作:一个数字,不是“看起来对了为止”。每次干预记一行:说了什么、为什么、是否泄漏了另一次运行得不到的信息。
  5. 在同一完成标准停下。 第一份测试仓库我们期望:约定测试通过,应用能在本地提供服务,没有为了截图好看偷塞功能。上限内到不了,就是未完成,不是诗意的“几乎”。
  6. 看另一份日志之前,先存自己的。 写 Run A 时当作没有 Run B。再反过来。两份都存好,才能放进一张表。偷看,是日记假装成试验的办法。
  7. 把限度写在表旁边。 列不出自己没测什么的比较页,还没准备好。

提示词包示例

下面的包是语气和范围的样本。想自己试这次运行,可以复制。本地尝试不是已发表的结果。

白话任务:给一个小型 TypeScript 应用加上会话笔记解析器,让原始文本变成结构化笔记,测试已经写好形状。

You are working in a small public web app at the tagged commit.

Add `src/notes/parseNote.ts` so the tests in
`src/notes/parseNote.test.ts` pass. Do not add features
the tests do not describe. Do not rewrite unrelated files.

Constraints:
- TypeScript, no new dependencies.
- Refuse sample data that looks like a real person.
- If a test is unclear, stop and ask one question.
  Do not invent a business rule.

Stop when `npm test` is green for that file, or when you
cannot proceed without a decision from me. Write a short
summary of files touched and any test you could not satisfy.

包所指向的测试应已在测试仓库里,这样工具就不是在给自己的作业打分。

我们将记录什么

这张表是以后比较页的合同。已发表稿件里的空格表示“我们没测这个”,不是“还行”。我们不会用形容词填满。

标准 记录什么 不会推断什么
完成与否 约定测试是否在干预上限内通过。 该工具“更擅长工程”。
到可运行的时间 若选择测时间,在一台点名机器上从开始到停止的实际耗时。 团队产能,或疲惫的下午也会得到同样结果。
修改质量 diff 大小、动过的文件、仍通过的测试、明显无关的重写。 品味、资历或“干净架构”。
操作者投入 我们实际发出的干预次数与文本。 操作者整体的水平。
成本 仅工具暴露的计量用量,带日期和套餐名。否则:“未披露”。 你的月账单,或按标价排名。
失败形态 停在哪里、弄坏了什么、如何恢复——或没恢复。 模型的性格。
配置摩擦 安装、登录、项目钩子,写成清单。 更长的配置总是更差。

已发表的比较会包含什么

比较离开候选名单时,页面应带有:

  • 测试仓库哈希和提示词包。
  • 第 1 步记录的工具清单。
  • 两边的日志,或不丢掉失手的公平摘录。
  • 标准表,空格保持空。
  • 用于套餐名或限额的官方文档链接,带检索日期。
  • 更正栏,哪怕只写“尚无”。

以后若加联盟链接或赞助,会标注并放在计分表之外。商业关系之后移动的名次是更正,不是刷新。

限度

这套协议已经有偏,我们宁可给偏见起名,也不掩饰。

  • 一份测试仓库不是整个行业。 小型 TypeScript 应用里的解析器,几乎说明不了原生移动、数据笔记本或百万行单体仓库。
  • 操作者是变量。 另一个人会更早打断,或完全不打断。我们可以记下打断,不能把自己减掉。
  • 工具会动。 记录了执行日期的测试,就是那一天的结果。我们不会把旧表悄悄改妆成时事。
  • 暴露的计量不完整。 若产品把用量打进席位套餐、看不出分项费用,我们不能发明成本列。
  • 比较尚未开跑。 空表在有记录了执行日期的测试之前保持空。
  • 独立是做法,不是心情。 名字里有 Claude,并不等于给这个工具加分。比较读起来像在偏袒某个工具,就是方法失败了。

来源政策

我们区分四种来源,不让它们混在一起:

  1. 官方文档 — 带 URL 和检索日期引用或改写。价格与限额数字来自这里,否则不出现。
  2. 我们的测试仓库与日志 — 公开到可以检查。客户私活不进。
  3. 其他新闻与一手帖 — 当它们是关于世界的主张来源时链接,不用来代替我们跳过的运行。
  4. 营销语言 — 只能当作厂商说法的引文,绝不当测量。

我们不会刮私人聊天、贴内部手册,或把社交截图当成版本号。若存在联盟或赞助关系,会在带该链接的页面上写出名字。

更正政策

已发表的比较若错了,页面公开改。

  • 事实错误(错误版本、错误套餐名、读错测试)在顶部或更正栏加注日期,并改正文。
  • 新的运行是新的运行。不声明就覆盖旧表。
  • 不会在商业交易、厂商邮件或流量糟糕的夜晚之后悄悄重排名次。
  • 若一句话挡不住这套协议,我们删那句话,不删难堪。

尚未发表任何比较,所以没有可更正的。预先留下更正栏,是为了以后发表的页面也按同一方式更正。