关于构建和提升智能体框架可靠性的文章及来自我工作的大量数据集。
摘要
作者分享了一篇关于构建可靠智能体框架的文章,包括来自4,000次运行的基准测试,以及计划发布一个开源的深度研究和构建应用,强调了质量测试和对AI智能体开发的见解。
我为这个社区(以及其他自托管社区)开发东西已有近5个月了。个人而言,我认为它可能是目前最接近Manus和Perplexity部分功能的开源等效物。这项工作非常繁重,我正处于发布的最后阶段。简而言之,它是一个深度研究+构建+智能体应用。它基本上是范围蔓延的定义。从最初构建index.htmls和基本深度研究报告的东西,到在我当前的基准测试中,与Gemini、Claude和ChatGPT的深度研究报告相当,并且在构建NextJS网站等方面似乎与其他应用如Bolt、Lovable和Replit持平。这项工作带来了大量的学习、痛苦和token使用。我想写一篇文章,分享我现在构建智能体框架的哲学,以及来自我约4,000次运行的数据,尝试让这个家伙正确构建东西。我可能也会把深度研究运行包括进去。本质上,我想要达到的基准是,让一个智能体执行300次随机网站的构建而不失败。如果框架失败一次,计数器就重置为0。以下是数据的首次迭代。我仍在整理确切的智能体转录,以便发布原始数据和那些深度研究项目。在完成这个实际项目后不久,我就会发布这些。https://github.com/Dyluhn/disco-wave-history 最后,我想解决一些我认为是“房间里的大象”的问题。我完全理解这个领域已经被框架+聊天界面彻底淹没了。如果当我发布这个东西时,它没有得到使用,那完全没问题。我不是为了赚取任何收入。事实上,仅推理成本就让我花费了数千美元。我不在乎回收成本。没有订阅或捆绑的废话,Apache 2.0许可证立即生效。我真正关心的是,不发布更多低质量的软件。我每天看到许多例子,有人在推广一些最糟糕的垃圾软件;巨型6k+ LOC文件,仓库测试最少,界面充斥着表情符号等...我发布这个部分是为了证明,是的,我测试了它,不,我不是在一个周末内构建并发布它的。我相信我已经达到了自己的质量标准。好了,现在开始写文章。提前警告,这相当长,我已经在上面发牢骚了几分钟;如果你不感兴趣,这是你转到下一篇文章的信号!谢谢大家。合理的墙壁我运行的第一次可靠性测试是在2026年6月9日:Qwen3.6 27B,在我自己的硬件上运行,整晚放在构建循环中。它从零开始构建了一个28 KB的网站,并且完美构建。然后它尝试编辑刚刚构建的东西,但失败了。它读取了文件。又读了一遍。它一直在礼貌地阅读,但毫无进展。一小时后,我回来,心想:“搞什么鬼?”显然的结论是模型不够好。而且由于Claude对开源模型的奇怪、薄纱般的、种族主义倾向的心态,那个混蛋也被说服了。正确的结论是,我给了它一个编辑工具,该工具在想在两行代码之间插入代码时要求精确的字符匹配,文件读取会静默地修剪长内容,而循环将阅读视为进展。于是我思考了。如果我需要锤子而你给我扳手,我这个固执的家伙会用扳手敲钉子。所以,我让编辑工具更宽容,添加了不烂的行目标操作,分页读取,并添加了一个在读取连续无变化时触发的提示。同一个模型。突然间,它编辑的方式就像它构建一样。四个月和大约3,900次记录的运行后,模型本身是根本原因的失败次数为零。不是“很少”。是零。每一个导致运行结束的失败都可以追溯到我拥有的边界:产品、框架或基础设施。这个统计数据是整个哲学的精髓。本文的其余部分是相信它的机制,或者至少我尽力告诉你为什么你应该相信它。Plinko问题当你构建一个智能体循环时,你是在将一个随机概率机器困在一个期望特定输出的确定性系统中。想想Plinko。把球扔进去,它会掉落,根据横档、物理原理、空气和你释放时的旋转,你会得到一个结果,从该排列可能的所有结果中抽样。那么如何每次得到特定的结果呢?你使用漏斗。类似于渐进披露的相反(退行披露?):你在结构上去除落入错误孔洞的能力,并去除让模型相信该孔洞存在的上下文(我的冰锥在哪里?)。你在那里放置一堵墙,放置的位置恰好阻挡那个孔洞,在那一行,而不是其他行,角度使球反弹回你想要的结果。更多指令添加更多横档;球仍然会到达几何形状发送它去的地方。困难的是合理的墙壁。错误是上游问题同样的想法适用于失败。当错误出现时,诱人、低努力的问题是“我该做什么来修复这个错误?”有成效的问题是:这上游是什么原因导致的?为什么会出现这个错误?当它发生时,我们如何使其可恢复?以及我们如何从存在中消除它发生的可能性?在那四个月里,每一个有效的修复都是在拥有失败的边界上,每次产品迭代只有一个根本原因修复,从不掩盖症状的创可贴。我实际上不得不花一个月的时间来重构这个项目的大约一半,因为我应用创可贴的愚蠢。别像我这样。模型不是在捣乱当模型彻底失败,或不断尝试做你不想它做的事情时,模型几乎从来不是在捣乱。大多数情况下你给了它错误的指令。其余时间它遇到了错误,而错误只是竖起了一堵没有几何形状的墙。不透明的墙不会漏斗;它会分散。球在随机方向上弹开,你称随机性为“模型错误”,在你这样称呼它后,你盯着显示器低声诅咒。真的,我相信即使是像Gemma E4B这样的模型,也可以通过有效的工程设计,构建一个框架使其输出像Qwen 27B一样工作。随着模型变小,这变得更难,直到你试图在瓶子里接住一只猴子-莎士比亚-打字机。但这是可以做到的。发光的错误,发光的一切工具结果是模型唯一的感官器官。在智能体循环中,错误绝对不能是不透明的。不仅仅是错误:每个工具结果都应该辐射下一步所需的上下文。以下是我的项目中写入文件返回的内容:wrote 1659 bytes to src/engine/state.js applied — lines 1-40 now read: 1 // Game state machine — pure logic, no DOM/three.js. 2 3 export const GameState = { 4 MENU: 'menu', 5 PLAYING: 'playing', ⋮ [total lines: 55] [complete — 1659 bytes, sha256 e9f03157248c. The file now contains EXACTLY the content you supplied, verbatim; only the head is echoed above to save context. A read-back to confirm this write is unnecessary.] 字节数,文件实际的前几行带行号,总长度,哈希,和一个明确的“读回是不必要的”。最后一行是一堵墙。它在开始之前就阻止了验证读循环。这个工具的糟糕版本只说已写入更改,没有其他。模型看不到文件,所以它做了唯一合理的事情:读回检查。每次。
相似文章
Building an Advanced Agentic Harness
A technical blog post that walks through building a production-grade agentic harness around a basic LLM loop, covering typed tools, plan DAGs, tiered memory, verification hierarchies, budgets, and tracing.
我分析了246个代码仓库和57篇论文,关于AI代理框架。以下才是实际有效的做法
对246个开源仓库和57篇关于代理框架的论文的分析,突出了最佳实践,如人工编写上下文、限制工具和增量测试,以提高AI代理的性能。
过去6个月我构建了6个智能体工具框架,它们都需要一个数据库
作者讨论了构建六个AI智能体工具框架的过程,并强调需要一个专用数据库来追踪智能体的执行、状态和学习成果,而不仅仅是依赖可观测性工具。
如何构建可靠的代理工具框架(阅读约48分钟)
这篇文章作为构建可靠代理工具框架的事后分析和指南,详细介绍了从omp到omp²的架构经验教训,并倡导有效管理复杂性的设计原则。
@dair_ai:大家要学会构建自定义 harness!这里有一篇来自 Google 的关于递归式 agent harness 的高推荐论文。G…
Google Cloud AI Research 提出 Harness2,一种递归式 agent harness 优化框架,可在无验证器的开放世界场景中通过任务级与 harness 级递归自我改进,在 WorkBuddy-Bench、JobBench 和 LAB 上持续提升 GLM-5 与 Gemini 3.5 Flash 的表现。