--- title: 自我验证 tags: [核心概念, 验证, Harness] source: [LangChain, Anthropic] confidence_score: 高 last_updated: 2026-04-07 --- # 自我验证 **自我验证**(Self-Verification)是[[Harness-Engineering|Harness 工程]]中的关键技术,使智能体能够通过运行中的反馈自我改进。当今的模型是卓越的自我改进机器,但它们没有自然地倾向于进入这种**构建-验证循环**。 ## 核心概念 ### 最常见的失败模式 LangChain 团队观察到的最常见失败模式是:智能体编写解决方案、重读自己的代码、确认看起来没问题,然后停止。 测试是自主智能体编码的关键部分。它有助于测试整体正确性,同时为智能体提供信号来进行爬山优化。 ## 构建-验证循环 LangChain 向系统提示中添加了关于如何解决问题的指导: ### 阶段 1:规划与发现 阅读任务、扫描代码库,并基于任务规格和如何验证解决方案构建初始计划。 ### 阶段 2:构建 在考虑验证的情况下实现计划。如果测试不存在则构建测试,并测试愉快路径和边缘情况。 ### 阶段 3:验证 运行测试、阅读完整输出、与要求的内容进行比较(而不是与你自己的代码)。 ### 阶段 4:修复 分析任何错误、重新访问原始规格,并修复问题。 ## LangChain 的实现 ### PreCompletionChecklistMiddleware 除了提示外,确定性上下文注入有助于智能体验证它们的工作。LangChain 使用 `PreCompletionChecklistMiddleware` 在智能体退出前拦截它,并提醒它对任务规格运行验证通过。 这类似于 [Ralph Wiggum Loop|Ralph Wiggum 循环]],其中一个钩子在智能体退出时强制其继续执行,用于验证。 ![自我验证循环](../assets/self-verification-loop.png) ### 强调测试 LangChain 真正专注于测试,因为它在每次迭代中推动变化。他们发现,测试必须是智能体工作流程的核心部分,而不是事后想法。 ## 环境上下文工程 Harness 工程的一部分是**为上下文工程构建良好的交付机制。** Terminal Bench 任务带有目录结构、内置工具和严格的超时。 ### 1. 目录上下文与工具 `LocalContextMiddleware` 在智能体启动时运行,映射 `cwd` 和其他父+子目录。运行 `bash` 命令来查找工具如 `Python` 安装。上下文发现和搜索容易出错,因此注入上下文减少了这个错误表面并帮助**将智能体引导到其环境中。** ### 2. 教导智能体编写可测试的代码 智能体不知道它们的代码需要如何可测试。添加提示说它们的工作将根据程序化测试来衡量,类似于提交代码时。例如,提及文件路径的任务规格应该被精确遵循,以便解决方案在自动化评分步骤中工作。强调边缘情况的提示有助于智能体避免仅检查"愉快路径"情况。强制模型符合测试标准是避免随着时间推移"烂泥堆积"的强大策略。 ### 3. 时间预算 注入时间预算警告以推动智能体完成工作并转向验证。智能体在时间估计方面是出了名的糟糕,因此这种启发式在这种环境中有所帮助。现实世界编码通常没有严格的时间限制,但如果不添加任何约束知识,智能体就不会在时间范围内工作。 ## 循环检测 智能体一旦决定了一个计划就可能变得短视,导致"末日循环",对同一破碎方法进行小幅变异(在某些轨迹中超过 10 次以上)。 LangChain 使用 `LoopDetectionMiddleware`,通过工具调用钩子跟踪每个文件的编辑次数。它在对同一文件进行 `N` 次编辑后添加上下文如"……考虑重新考虑你的方法"。这可以帮助智能体从末日循环中恢复,尽管如果模型认为正确的话它可以继续沿着相同的路径前进。 重要提示:这是一种设计启发式,围绕当今感知的模型问题进行工程设计。随着模型改进,这些护栏可能会变得不必要,但今天帮助智能体正确和自主地执行。 ## 推理三明治 推理模型可以自主运行数小时,因此必须决定在每个子任务上花费多少计算。你可以在每个任务上使用最大推理预算,但大多数工作可以从优化推理计算支出中受益。 Terminal Bench 超时限制创造了一个权衡。更多推理有助于智能体评估每个步骤,但可以燃烧超过 2 倍以上的 token/时间。`gpt-5.2-codex` 有 4 种推理模式,`low`、`medium`、`high` 和 `xhigh`。 LangChain 发现推理有助于规划以充分理解问题,一些 Terminal Bench 任务非常困难。一个好的计划有助于更快地得到可行的解决方案。 后期验证也从更多推理中受益,以捕获错误并提交解决方案。作为一种启发式,选择 xhigh-high-xhigh"**推理三明治**"作为基线。 ![推理三明治](../assets/the-reasoning-sandwich.png) **在规划和验证上花费更多的推理计算** 仅在 `xhigh` 运行由于智能体超时而得分较差,为 `53.9%`,相比之下在 `high` 为 `63.6%`。在推理预算分割的试验运行中没有大的差异,因此坚持使用他们的方法,将分数推到 `66.5%`。 ## Harness 工程师的目的 **Harness 工程师的目的:准备和交付上下文,使智能体能够自主完成工作。** 智能体对其环境、约束和评估标准了解得越多,它们就能越好地自主自我指导工作。 ## 相关概念 - [[Build-Verify Loop|构建-验证循环]] - [[Reasoning Sandwich|推理三明治]] - [[Doom Loop|末日循环]] - [[Loop Detection|循环检测]] - [[LangChain Harness Engineering|LangChain Harness 工程]] ## 参考来源 1. LangChain - Improving Deep Agents with harness engineering 2. Anthropic - Harness design for long-running application development --- *最后更新:2026-04-07* *本文档由 [[WikiLLM]] 编译自多个来源*