Files
my_wiki/wiki/practices/LangChain-Harness-Engineering.md
T

164 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "LangChain Harness 工程实践"
type: practice
confidence: medium
source: "https://blog.langchain.com/improving-deep-agents-with-harness-engineering/"
author: "LangChain"
published: 2026-02-18
last_updated: 2026-04-11
tags:
- practices
- harness-engineering
- langchain
raw_sources:
- path: raw/Improving Deep Agents with harness engineering.md
hash: "sha256:f4a56bcffd1e84cdd233d516c35d6e79650d1c889a2f730f7b4bc69ed143e9ba"
---
# LangChain Harness 工程实践
## 页面定位
本页是 LangChain 团队 Harness 优化实践案例页:Terminal Bench 2.0 排名提升的关键改进(自我验证与追踪)。负责该案例的方法与数据;通用 Harness 定义与六大维度见 [[Harness-Engineering|Harness 工程]] 核心页。
本文记录了 LangChain 团队如何通过仅改进 Harness,将他们的编码智能体在 Terminal Bench 2.0 上从第 30 名提升到第 5 名。核心要点:**自我验证和追踪帮助巨大**。
## 核心成果
- **基准测试**Terminal Bench 2.0
- **提升幅度**:从 52.8 分提升到 66.5 分(+13.7 分)
- **模型保持不变**gpt-5.2-codex
- **仅修改 Harness**:系统提示词、工具、中间件
![基准测试结果](../assets/Screenshot-2026-02-12-at-12.25.20---PM-1.png)
---
## Harness 工程的目标
Harness 的目标是塑造模型固有的尖峰智力以适应我们关心的任务。**Harness 工程**是关于系统的,你在模型周围构建工具以优化目标,如任务性能、token 效率、延迟等。设计决策包括系统提示词、工具选择和执行流程。
但你应该如何改变 Harness 以改进智能体?
在 LangChain,他们使用 [Traces](https://docs.langchain.com/langsmith/observability-quickstart) 来大规模理解智能体失败模式。今天的模型在很大程度上是黑盒,它们的内部机制难以解释。但我们可以在文本空间中看到它们的输入和输出,然后将其用于我们的改进循环。
---
## 实验设置与 Harness 上的旋钮
使用 Terminal Bench 2.0(一个现在标准的基准测试来评估智能体编码)。它有 89 个任务,涵盖机器学习、调试和生物学等领域。使用 Harbor 来编排运行。它启动沙箱(Daytona),与智能体循环交互,并运行验证 + 评分。
每个智能体操作都存储在 LangSmith 中。它还包括延迟、token 计数和成本等指标。
### 我们可以转动的旋钮
智能体 Harness 有很多旋钮:系统提示词、工具、钩子/中间件、技能、子智能体委托、记忆系统等等。LangChain 有意压缩优化空间,专注于三个:**系统提示词、工具**和[**中间件**](https://docs.langchain.com/oss/python/langchain/middleware/overview)(他们对模型和工具调用周围钩子的术语)。
从默认提示词和标准工具+中间件开始。这在 GPT-5.2-Codex 上得分 52.8%。一个可靠的分数,刚好在今天排行榜前 30 名之外,但有增长空间。
![实验设置与追踪](../assets/Screenshot-2026-02-16-at-12.50.00---PM.png)
### 追踪分析器技能
LangChain 希望追踪分析可重复,因此将其做成了智能体技能。这作为他们的**跨运行分析错误并对 Harness 进行改进**的方案。流程是:
1. 从 LangSmith 获取实验追踪
2. 生成并行错误分析智能体 → 主智能体综合发现 + 建议
3. 聚合反馈并对 Harness 进行有针对性的更改
这类似于 [boosting](https://en.wikipedia.org/wiki/Boosting_\(machine_learning\)),它专注于先前运行的错误。人类在第 3 步中可能非常有帮助(尽管不是必需的)来验证和讨论提议的更改。过度拟合到任务的更改对泛化不利,并可能导致其他任务的回归。
![LangSmith 追踪分析器技能](../assets/langsmith_trace_analyzer_skill.png)
---
## 实际改进智能体性能的因素
自动化追踪分析允许 LangChain [调试智能体出错的地方](https://www.langchain.com/conceptual-guides/agent-observability-powers-agent-evaluation)。问题包括推理错误、不遵循任务指令、缺少测试和验证、超时等。
### 构建与自我验证
今天的模型是卓越的自我改进机器。
**自我验证允许智能体通过运行内的反馈自我改进。** 然而,它们没有自然倾向进入这个**构建-验证循环。**
最常见的失败模式是,智能体编写了一个解决方案,重新阅读自己的代码,确认看起来没问题,然后停止。测试是自主智能体编码的关键部分。它有助于测试整体正确性,同时为智能体提供信号以进行爬山优化。
LangChain 在系统提示词中添加了关于如何解决问题的指导:
1. **规划与发现**:阅读任务,扫描代码库,基于任务规范和如何验证解决方案构建初始计划。
2. **构建**:考虑验证来实现计划。如果测试不存在则构建测试,测试快乐路径和边缘情况。
3. **验证**:运行测试,阅读完整输出,与要求的内容进行比较(不是与你自己的代码比较)。
4. **修复**:分析任何错误,重新审视原始规范,并修复问题。
他们真正专注于测试,因为它在每次迭代中推动更改。发现除了提示词之外,确定性上下文注入有助于智能体验证它们的工作。使用 `PreCompletionChecklistMiddleware` 在智能体退出前拦截它,并提醒它对任务规范运行验证传递。这类似于 [Ralph Wiggum Loop](https://ghuntley.com/loop/),其中一个钩子强制智能体在退出时继续执行,他们用它来进行验证。
![自我验证循环](../assets/self-verification-loop.png)
---
### 为智能体提供关于其环境的上下文
Harness 工程的一部分是**构建一个良好的上下文工程交付机制。** Terminal Bench 任务带有目录结构、内置工具和严格的超时。
1. **目录上下文与工具**`LocalContextMiddleware` 在智能体启动时运行以映射 `cwd` 和其他父/子目录。运行 `bash` 命令来查找工具,如 Python 安装。上下文发现和搜索容易出错,因此注入上下文减少了这个错误表面并帮助**将智能体引导到其环境中。**
2. **教智能体编写可测试的代码**:智能体不知道它们的代码需要如何可测试。添加提示词说它们的工作将根据编程测试来衡量,类似于提交代码时。例如,提到文件路径的任务规范应该完全遵循,以便解决方案在自动化评分步骤中工作。强调边缘情况的提示词有助于智能体避免只检查"快乐路径"情况。强制模型符合测试标准是避免随着时间推移"残渣 buildup"的强大策略。
3. **时间预算**:注入时间预算警告以推动智能体完成工作并转向验证。智能体在时间估计方面出了名的差,因此这种启发式在这种环境中有帮助。现实世界的编码通常没有严格的时间限制,但如果不添加任何约束知识,智能体就不会在时间范围内工作。
智能体对其环境、约束和评估标准了解得越多,它们就能越好地自主自我指导工作。
> **Harness 工程师的目的**:准备并交付上下文,以便智能体可以自主完成工作。
---
### 鼓励智能体退后一步并重新考虑计划
智能体一旦决定了一个计划可能会短视,导致"末日循环",对相同的破碎方法进行小的变化(在某些追踪中 10+ 次)。
使用 `LoopDetectionMiddleware` 通过工具调用钩子跟踪每个文件的编辑计数。它在对同一文件进行 `N` 次编辑后添加诸如"……考虑重新考虑你的方法"之类的上下文。这可以帮助智能体从末日循环中恢复,尽管如果模型认为正确,它可以继续沿着相同的路径前进。
重要提示。这是一种设计启发式,围绕今天感知到的模型问题进行工程设计。随着模型改进,这些护栏可能会变得不必要,但今天有助于智能体正确且自主地执行。
---
### 选择在推理上花费多少计算
推理模型可以自主运行数小时,因此必须决定在每个子任务上花费多少计算。可以在每个任务上使用最大推理预算,但大多数工作可以从优化推理计算花费中受益。
Terminal Bench 超时限制创造了一个权衡。更多推理帮助智能体评估每个步骤,但可能燃烧超过 2 倍的 token/时间。`gpt-5.2-codex` 有 4 种推理模式:`low``medium``high``xhigh`
发现推理有助于规划以完全理解问题,一些 Terminal Bench 任务非常困难。一个好的计划有助于更快地达到可行的解决方案。
后期验证也受益于更多推理以捕获错误并提交解决方案。作为一种启发式,选择 xhigh-high-xhigh"**推理三明治**"作为基线。
![推理三明治](../assets/the-reasoning-sandwich.png)
仅在 `xhigh` 运行得分很差,为 `53.9%`,因为智能体超时,相比之下在 `high` 运行得分为 `63.6%`。在推理预算拆分之间的试运行中没有大的差异,因此坚持使用将分数推到 `66.5%` 的方法。
模型的自然方法是**自适应推理**,在 [Claude](https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking) 和 [Gemini](https://ai.google.dev/gemini-api/docs/thinking) 模型中看到,模型决定在推理上花费多少计算。
在多模型 Harness 中,平衡推理预算可以表现为使用大模型进行规划并[交接](https://docs.langchain.com/oss/python/langchain/multi-agent/handoffs)给小模型进行实现。
---
## 构建智能体 Harness 的实用要点
智能体的设计空间很大。以下是 LangChain 从实验和整体构建 deepagents 中得出的一些一般原则:
1. **代表智能体进行上下文工程**。上下文组装对于今天的智能体仍然很困难,尤其是在看不见的环境中。用目录结构、可用工具、编码最佳实践和问题解决策略等上下文引导模型,有助于减少搜索不佳和规划中可避免错误的错误表面。
2. **帮助智能体自我验证其工作**。模型偏向于它们第一个看似合理的解决方案。强烈提示它们通过运行测试和改进解决方案来验证其工作。这在没有人类在循环中的自主编码系统中尤其重要。
3. **追踪作为反馈信号**。追踪允许智能体自我评估和调试自己。一起调试工具和推理很重要(例如:模型走错路径是因为它们缺少工具或关于如何做某事的指令)。
4. **在短期内检测并修复坏模式**。今天的模型并不完美。Harness 设计者的工作是围绕今天的缺点进行设计,同时为未来更智能的模型做计划。盲目重试和不验证工作是很好的例子。这些护栏几乎肯定会随着时间推移而消失,但要在今天构建健壮的智能体应用程序,它们是值得实验的有用工具。
5. **为模型定制 Harness**。[Codex](https://developers.openai.com/cookbook/examples/gpt-5/codex_prompting_guide/) 和 [Claude](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) 提示指南显示模型需要不同的提示。使用 Claude Opus 4.6 的测试运行在早期 Harness 版本中得分 `59.6%`,有竞争力但比 Codex 差,因为他们没有与 Claude 运行相同的改进循环。许多原则可以推广,如良好的上下文准备和对验证的关注,但为你的任务运行几轮 Harness 迭代有助于跨任务最大化智能体性能。
在 Harness 设计中还有更多开放研究要做。有趣的途径包括多模型系统(Codex、Gemini 和 Claude 一起)、用于持续学习的记忆原语,以便智能体可以在任务上自主改进,以及跨模型测量 Harness 更改。
对于改进智能体的外层循环,LangChain 正在研究像 [RLMs](https://alexzhang13.github.io/blog/2025/rlm/) 这样的方法来更有效地挖掘追踪。他们将继续改进 Harness 并公开分享他们的研究。
---
## 相关研究
- [[Harness-Engineering|Harness 工程]]
- [[OpenAI-Codex-Harness-Engineering|OpenAI Codex Harness 工程]]
- [[Long-Running-Harness-Design|长运行应用的 Harness 设计]]