来源:HN (126pts)
URL: https://data4sci.com/blog/building-an-advanced-agentic-harness
精读日期:2026-08-07
模型:DeepSeek V4 Flash(AI 生成,人工未审校)
正文获取:全文

一、核心论点/事实

  • 核心问题:如何将单个 LLM 调用转化为一个可靠系统,使其能够规划、行动、恢复,并证明做了正确的事?答案是组合(composition)
  • 生产级 Agent(如 Claude Code、Devin、Cursor、Hermes)通过为基本循环包裹结构(任务规划、并行执行、预算、记录器、事后复盘)来保持系统快速、安全、可调试、可度量,而非替换核心模型。
  • 每个原语(primitive)都针对一个特定的、可预测的失败模式:LLM 生成无效工具参数 → 类型化工具+验证;顺序执行慢 → 依赖图+并行执行;上下文窗口被垃圾填满 → 多层级记忆+检索预算;坏输出静默传播 → 验证层级;单一提示词试图做所有事 → 角色拆分;成本失控 → 多维预算+优雅降级。
  • 示例任务:城市对比 Agent(3 个城市 × 3 个属性 = 9 个独立查询 + 1 个聚合报告),9 个查询可完全并行,聚合依赖全部查询完成,形成 DAG 结构。
  • 工具成本差异显著:人口/时区查询为内存字典读取(近零成本),城市摘要和最终聚合调用 LLM(高成本),构成真实的预算压力测试场景。
  • 通过 LLM 抽象基类 + 确定性 Mock 实现完全可复现的实验环境,分离"编排错误"与"模型规划错误"。

二、方法/架构拆解

架构分层(自底向上):

1. LLM 抽象层:定义基类统一不同 LLM SDK 调用接口,同步调用包装在线程中;提供确定性 Mock(规划时返回规范计划、摘要时返回模板化单行摘要、评判时返回规则化通过/失败判定),保证实验可复现。

2. 类型化工具层:每个工具参数声明为 Pydantic 模型,一个定义驱动运行时验证、JSON Schema 生成(兼容 Anthropic/OpenAI tool-use API)、文档生成、成本挂钩(cost_hint)。失败在验证层拦截,避免昂贵工具调用和副作用。

3. 工具注册表:4 个工具、3 个成本层级——get_population/get_timezone(免费字典查询)、get_summary(token 密集型 LLM 调用)、generate_report(最终聚合,最昂贵)。LLM 本身被视为普通工具,可独立缓存、限流、替换内部模型。

4. 规划器 + DAG 执行器:规划器一次性输出完整依赖图(而非逐步行动),执行前先验证图结构(不存在节点 ID、循环依赖等幻觉);执行器为 level-synchronous DAG walker——计算就绪集(依赖全部完成且自身待执行的节点)、并发启动、标记完成/失败、循环直至无进展。

5. 关键实现决策

  • asyncio.to_thread 将同步工具函数运行在线程池中,无需重写为 async 或耦合 async SDK。
  • 信号量(semaphore)限制并发数,防止 50 节点计划同时触发 50 个 LLM 调用导致限流或成本飙升。
  • 刻意不做动态调度器(work-stealing、优先级队列),level-synchronous 并行对 API 调用型 Agent 已捕获大部分收益:顺序执行墙钟时间≈延迟之和,并行≈最大延迟+聚合步骤。

验证层级(Verification Hierarchy):程序化检查(如确认每个请求的城市都出现在报告中)作为最底层验证,之上叠加 LLM 评判等更复杂的验证手段。

三、值得注意的局限/争议

作者承认的局限:

  • 调度器刻意简化,非完整动态调度器(无 work-stealing、优先级队列),对更复杂工作负载可能不够。
  • 评测套件(eval suite)、检索基准(retrieval benchmarks)、专业化 worker 池将在未来文章中完整展开,本文未覆盖。
  • 查找工具使用 mock 字典,LLM 部分可切换真实模型或确定性 mock,但真实场景的完整验证留待后续。

AI 判断的局限/争议:

  • 规划器一次性输出完整图的可靠性存疑:LLM 规划复杂任务时,一次性生成完整 DAG 的准确率可能随节点数增长而急剧下降,本文未讨论规划失败后的重规划策略。
  • 验证层级的具体实现细节缺失:文章提到"验证层级"但未展开其具体层级结构、各层触发条件、以及验证失败后的恢复机制。
  • 记忆(tiered memory)部分被截断:文章提到多层级记忆和检索预算,但正文未完整展示实现细节。
  • 成本预算的"优雅降级"策略未明确:多维预算的具体维度(token、时间、金钱?)和降级路径(跳过哪些步骤?)未在正文中完整呈现。
  • 单任务演示的普适性存疑:城市对比任务结构清晰、依赖关系简单,真实 Agent 任务往往包含条件分支、循环、动态规划,level-synchronous 模型可能不够。

四、与 RRLab 研究的关联

  • Harness 工程:本文的"薄编排器 + 可测试原语"组合模式可直接借鉴——类型化工具(Pydantic 模型驱动验证+Schema 生成)、DAG 规划+验证+执行、线程池包装同步工具、信号量限流,都是生产级 Harness 的必备组件。RRLab 可参考其"每个原语对应一个已知失败模式"的设计哲学,构建更健壮的 Harness。
  • 多模型协同:LLM 抽象基类 + 确定性 Mock 的设计使模型可替换、可测试;"LLM 也是普通工具"的理念支持内部模型独立缓存、限流、替换,为多模型协同(不同任务用不同模型)提供了清晰的接口边界。
  • 模型评测:确定性 Mock 分离"编排错误"与"模型规划错误"的思路,可用于构建更精准的评测体系——先验证 Harness 正确性,再单独评测模型能力。成本分层(cost_hint)也为评测中的资源消耗度量提供了参考。
  • Agent 落地:预算控制(多维+优雅降级)、并发限流、失败验证前置(验证层拦截而非深入数据库查询)、程序化验证(城市是否出现在报告中)都是 Agent 生产落地的关键工程实践,RRLab 可将其融入实际 Agent 系统的部署方案。
  • AI 原生产品:事后复盘(after-action review)和飞行记录器(tracer)理念——让每次任务可重建、可审计——是 AI 原生产品信任和合规的基础,RRLab 可借鉴其可观测性设计思路。

本笔记由 DeepSeek V4 Flash 自动生成,未经人工审校。原文链接:https://data4sci.com/blog/building-an-advanced-agentic-harness