返回

文章详情

Yadda 3.0.0:人工智能代理时代的BDD

Hacker News2026年8月15日 13:43

我刚刚将Yadda 3.0.0发布到npm。对任何不熟悉它的人来说,Yadda是一个JavaScript的BDD库。像Cucumber一样,它将普通语言规范映射到可执行代码,但它是从头开始设计的,不那么专断地规定这些规范的书写方式。这意味着,您可以写成:邦维特岛大学提供计算机科学的学位课程 入学要求为ABB 史蒂夫是A-Level毕业生 史蒂夫在物理科得了D 史蒂夫在数学科也得了D 当史蒂夫申请在邦维特岛大学学习计算机科学时 邦维特岛大学拒绝了他的申请 而不是写成:给定一个大学,邦维特岛大学和邦维特岛大学提供计算机科学学位课程,入学要求为ABB,并且一个A-Level毕业生,史蒂夫,史蒂夫在物理学中得到D,史蒂夫在数学中也得到D,当史蒂夫申请在邦维特岛大学学习计算机科学时,邦维特岛大学拒绝了申请。这两个都是可执行的规范。我发现第二个可读性更好。那么Yadda 3有什么变化呢?Yadda 3.0大部分是现代化工作。Yadda已经存在很长时间,而该代码库积累了与JavaScript生态系统的部分集成和工具,这些部分现在本身已成为历史奇迹。Yadda 3是纯Node版本,移除了浏览器打包和过时的集成,如CasperJS、PhantomJS、Bower和Component,将测试套件移至node:test,采用Biome和lefthook,现代化源代码至ES6语法,并添加了当前的示例,包括Playwright和Puppeteer。同时,它还提供了TypeScript定义。这些都很有用,但写起来并不是特别有趣。我认为与此次发布更为重要的有两个方面。大部分代码由Claude编写 我用Claude Code和Opus 4.8对Yadda进行了现代化。Yadda 3.0的史诗,是由Claude撰写的,它将工作分成了一系列故意分开的阶段:移除过时的功能,更新工具链,机械地格式化与行为变化分开,现代化源代码,探索API变化,更新示例和CI,然后完成元数据、文档和TypeScript定义。我们在实施每个阶段之前进行了规划,然后我基本让Claude自己处理这些工作。它犯的错误非常少,更令人印象深刻的是识别出了一些相当微妙的边缘案例,这些在看似机械的现代化过程中很容易被忽视。我几乎没有进行干预。一个重要因素是Yadda已经有一个全面的测试套件。我还故意避免让Claude在同一步骤中修改生产代码和相应的测试。如果一个代理同时改变了这两者,绿色测试套件将变得更弱,因为它在实施的同时可以自由改变“正确”的定义。将这些变化保持分开给Claude提供了一个更为坚实的外部约束。从开始工作到发布包大约用了一天的时间,同时我还在做其他事情。今年年初,我写了一篇关于为什么对氛围编码的体验如此两极分化的实验。我的结论是结果在很大程度上取决于代理的使用方式。一个受到严格约束和监督的Claude能够非常快地产生极好的结果。然而,在自由发挥时,它容易产生架构漂移、不必要的代码和操作债务。那只是七个月前,而能力已经发生了巨大的变化。即便如此,说Claude现在可以在几乎没有干预的情况下编写这些代码,几乎触及了正在发生的变化的表面。编码不再是瓶颈 为了理解这一切的趋势,帮助放弃关于单个开发者与单个编码代理进行对话的思维,而是考虑几个代理并行工作。目前已经有几种方法可以做到这一点。您可以简单地运行多个Claude Code会话。Git工作树允许每个代理针对一个隔离的工作副本工作。这样的工具如cmux使运行多个Claude会话更易于管理,而Claude Code Agent View则提供了查看多个会话正在做什么以及哪些需要注意的另一个方式。所有这些都使您比串行工作更快地构建,但我很快遇到了另一个限制:我自己管理并行工作的能力。我可以轻松同时处理三项任务,有时四或五项。超过这一点,我开始失去对每个代理在做什么、做了哪些决定、哪个任务在等待我以及我下一个需要审查的内容的上下文。在这一点上,模型并没有过载,机器也没有过载。瓶颈是协调工作的人员。我已经深信良好的协调是下一个重要

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡