七个 entity 与本篇构成一个完整的 harness 谱系:两个是本篇明确引用的(SWE-bench、Meta-Harness),三个是本篇诊断对象的原型(ReAct、AutoGen、Reflexion),两个是同代的工程侧对照(Cursor 的 dynamic context discovery、OpenHarness)。
| id | 关系 | 为什么真相关 | 在本篇论证里的位置 |
|---|---|---|---|
| 2310.06770 SWE-bench | cites | 把"执行即 oracle"确立为评测契约:解决判据是 FAIL_TO_PASS ∪ PASS_TO_PASS 全部通过,模型永远看不到测试 [2310.06770] | 本篇 Verify 阶段确定性传感器的评测侧原型;本篇也从 SWE-bench 侧转述了 Agentless "有竞争力且不需要复杂 agentic 控制" [2605.18747] |
| 2603.28052 Meta-Harness | cites | 把 harness 本身形式化为冻结模型下的代码空间 argmax,并端到端跑出三域数字 [2603.28052] | 本篇 Agentic Harness Engineering(harness 应被测量/演化/治理)主张的既存实现 [2605.18747] |
| 2308.08155 AutoGen | peer(多智能体框架) | 把对话本身当 control plane,去掉独立编排器,控制流由 auto-reply 隐式涌现 [2308.08155] | 本篇 Layer 3 批评的 message-passing MAS 的最广泛部署实例——本篇主张"防御性设计必须靠共享 artifact 而非消息传递" [2605.18747] |
| 2210.03629 ReAct | peer(推理+行动) | 把 thought 定义为 $\hat A = A \cup L$ 中对环境 no-op、只重写自身上下文的一等动作 [2210.03629] | 本篇 Layer 1 §2.1「纯文本推理几乎不给 harness 任何验证能力」的直接对象 [2605.18747] |
| 2303.11366 Reflexion | peer(verbal RL / 反馈回路) | 把标量奖励放大成自然语言教训存进有界记忆,策略 $\theta=\{M_a, mem\}$ [2303.11366] | 本篇主张 reflection 是 Verify 的后果而非独立阶段、且只有锚定可执行证据才可靠 [2605.18747];Reflexion 恰是把 reflection 当独立一等模块的范式 |
| blog-dynamic-context-discovery | peer(harness 工程) | 把 tool 输出、chat history、skill、MCP schema、terminal 全部落盘成文件,让 agent 用 grep/read 惰性取,MCP 重度会话省 46.9% token [blog-dynamic-context-discovery] | 本篇 Trend 6 把"context 管理机制层出不穷"读作缺失底座的代偿 [2605.18747];这里是同一模式的生产实测 |
| HKUDS-OpenHarness | peer(harness 代码) | 开源 Python harness:3 模式权限、hooks、MEMORY.md 持久记忆、native+Docker sandbox、swarm/coordinator 多 agent [HKUDS-OpenHarness] | 用来核对本篇 harness 机制清单在真实生产系统里的实际覆盖率。注意与本篇 Table 7 中唯一被标为 Full PEV harness 的 OpenHands 不是同一项目,命名极易混淆 [2605.18747] |
缺失依赖:本篇 L2 的 related 还列了 2310.02003、2603.03329、2604.25850、2604.08224、2507.19457,这五个 entity 在 KB 中没有 L2,已在 inputs_hash 记为 MISSING。其中最影响本综合完整性的是 2507.19457——它同时是 Meta-Harness 的对照对象,缺失使"harness 优化"这条线只有 Meta-Harness 一个数据点,下面关于 harness 态反馈压缩的判断因此建立在 n=1 上。
把表格的一列当分布读。 本篇的不可替代动作不是三层分类学,而是把约 25 个 MAS 按六维拆成 Table 9/10/11 之后,回头统计 Harness Substrate 列的取值分布,再把三个表面无关的现象(implicit convergence 最盛行、拓扑越来越复杂、context 机制层出不穷)收束到同一个缺失抽象上 [2605.18747]。被读的相关篇统计的都是别的东西:SWE-bench 统计任务与上下文长度 [2310.06770],Meta-Harness 统计候选 harness 的分数与文件访问量 [2603.28052],AutoGen 统计跨应用成功率 [2308.08155]。横向表征层级的普查确实是空白。
两个可直接照搬的工程刻度。 四级表征层级(File-only / Execution-based / Repository-based / Blackboard)与三级权限(read-only / sandbox-edit / full-access,最后一级强制挂人审 gate)[2605.18747]。OpenHarness 的三模式权限(default 问人 / auto 放行 / plan 禁写)与之部分同构,但语义轴不同——default 是"是否问人",不是"能改什么" [HKUDS-OpenHarness]。本篇按后果溢出范围(沙箱内 / 沙箱外)切的这一刀,确实比现有实现更细。
PEV 三段。 Plan/Execute/Verify 在 Reflexion 里已是 Actor / Evaluator / Self-Reflection 三个可换模块,且换 Evaluator 就能覆盖三类任务族 [2303.11366];在 SWE-bench 的评测流水线里已是 retrieve → generate → apply → run tests 的状态机 [2310.06770]。本篇的增量是把 escalation 与权限分层并进同一个控制过程,而不是发现这个回路本身。
code 让环境可检视。 本篇论证环境动力学写成代码因而可 fork、可 diff、可版本控制、可复现 [2605.18747]。blog 把这条推到极限:连 chat history 与 MCP tool schema 都落盘成文件,用标准 rg/tail/jq 访问,并明确论证价值来自没有引入新抽象 [blog-dynamic-context-discovery]。这条比本篇更早、带 A/B 数字,本篇未收编。
AHE。 Meta-Harness 已给出优化目标、算法、预算(约 20 轮内评估约 60 个 harness)与三域结果 [2603.28052]。本篇的 AHE 一节是同一主张的规范性版本,增量在 change contract(声明改了哪个组件、针对哪个失败模式、预测什么改进、保持哪些不变量、什么评测能证伪它、怎么回滚)[2605.18747]。
矛盾 1 — harness 是瓶颈,还是 backbone 是瓶颈。 本篇的前提命题 #1 是一次归因转移:自主性瓶颈不只在基座模型,也在把输出连到长程动作与持久状态的那层系统 [2605.18747]。Reflexion 的 backbone 消融直接冲击它:starchat-beta 从 0.26 到 0.26,方法在能力阈值以下完全无效,自诊断能力是涌现的、任何回路工程都补不回来 [2303.11366]。而 AutoGen 的证据方向相反:多 agent 相对单 agent 的 F1 增益在 GPT-3.5 上 +35%、在 GPT-4 上只有 +8%,弱 backbone 处 harness 收益更大 [2308.08155]。
矛盾根源:本篇把两类性质不同的机制混在一个"harness"里。能力替代型机制(角色分解、工具、确定性传感器、权限门)在弱模型上就有效——AutoGen 的 F1 增益属此类,本篇自己举的 AgentCoder 案例更是极端:承重的 Test Executor 不是 LLM 而是一段普通 Python 脚本 [2605.18747]。能力放大型机制(reflection、critique、causal 归因)依赖 backbone 的自诊断能力——Reflexion 的 $M_{sr}$ 要做反事实定位与改写 [2303.11366],Meta-Harness 的 proposer 要跨轮对比 trace 隔离 confound [2603.28052],两者都在阈值之上才成立。本篇的归因转移在第一类上成立,在第二类上不成立,而它没做这个区分。
矛盾 2 — imagined execution 够用,还是压缩反馈会塌。 本篇 Trend 3 转述 QualityFlow 的 imagined execution 在 MBPP 上达 98%+ precision/recall(LLM 逐步模拟解释器、不真跑代码),据此开出的处方是"语言推理走快路径、执行只在语言模拟想象不出的失败模式上作为 oracle" [2605.18747]。Meta-Harness 的接口消融给出反向证据:把原始 trace 压成 score 或 score+summary,median 从 50.0 跌到 34.6 / 34.9,且 summary 完全不能恢复 trace 的诊断信号 [2603.28052]。
矛盾根源:尺度不同,本篇没有区分。Trend 3 说的是任务态单次判定(一个函数过不过测试,失败模式浅);Meta-Harness 说的是harness 态跨轮因果归因(把下游失败归因到很多步之前的设计决策),这一层压缩反馈会直接塌掉。两者在各自尺度上都对,但本篇把处方写成了普适的"快路径优先"。另有一层本篇引用时未提:Reflexion 报 MBPP Python 的自生成单测假阳率 16.3%,而 HumanEval Python 只有 1.4% [2303.11366]——98%+ 是在一个已知偏松的判据上取得的。
矛盾 3 — 执行反馈是差异化优势,还是执行反馈单独无用。 本篇把 linter/test/CI 这组确定性传感器当作 harness 的承重构件,并要求 agentic critique 解读传感器输出而不是替代它 [2605.18747]。Reflexion 在 HumanEval Rust 最难 50 题上的消融给出强弱排序:base 0.60 → 去掉 reflection 0.60(零增益)→ 去掉 test-gen 0.52 → 全量 0.68 [2303.11366]。即:光有执行 oracle 的盲重试增益为 0,全部增益来自对 oracle 输出的语言解读。
矛盾根源:本篇的方向对(critique 解读而非替代),但暗含的强弱排序反了——在这个消融里 critique 是承重的那一半,传感器只是使能条件。本篇无法定位这个比例,因为它 0 实验、0 消融,正文所有数字都归属被引文献 [2605.18747]。
矛盾 4 — file-only 是最弱层级,但 file-only 在生产上赢了。 本篇把 File-only 放在四级表征的最低端,右侧花哨的自适应拓扑被读作代偿而非进步 [2605.18747]。blog 的做法恰是 file-only 的极端形态,且拿到了 A/B 显著的 46.9% token 下降 [blog-dynamic-context-discovery]。
矛盾根源:两个排序的目标函数不同。本篇的层级是表达力 / 可查询性排序;blog 的指标是上下文成本,其价值恰恰来自不引入新抽象、任何模型都已会用文件工具 [blog-dynamic-context-discovery],而本篇想要的形式化底座必然引入新抽象与新适配成本。两者不冲突,但"层级"这个词暗示了单调优劣,这是修辞越界。
1. 中心 gap 无计数,而分类边界由作者定义。 本篇自己承认「多数文献停留在 implicit/file-only」没有给出任何计数或百分比,可核对的只有点名的 7 个系统加三张有重叠的表 [2605.18747]。拿 OpenHarness 做一次单点检验:它有 sandbox、三模式权限、hooks、跨会话持久记忆、swarm/coordinator 多 agent [HKUDS-OpenHarness],但 subagent 是新进程 + 全新 API 会话,父子间没有可查询的共享程序状态 [HKUDS-OpenHarness],循环终止靠 max_turns(默认 8)而非验证 [HKUDS-OpenHarness]。一个 13K star 的生产 harness 干净地落在 file-only + implicit convergence——这支持本篇的 gap 判断,但同时削弱它的因果解释:OpenHarness 的 max_turns 是显式的成本与安全预算,不是"没有判据只好数轮数"。本篇命题 #7 的因果链(缺表征 ⇒ 只能固定轮次停机)漏掉了这个竞争解释。
2. 归因转移是全篇前提,却是全篇最未被检验的一条。 本篇 0 实验 [2605.18747],因此无法给"harness 侧改进的边际收益 vs backbone 侧"任何比例。而所需的两张网格在相关篇里现成:AutoGen 的 backbone × 单/多 agent 对照 [2308.08155]、Reflexion 的 backbone × Actor 类型 sweep 与能力阈值 [2303.11366]。读了 478 篇却没做这个二维读表,是本篇最可被追问的省略。
3. "code 优于纯文本推理"只算了收益,没算代价。 本篇论证 executable / inspectable / stateful 是功能性属性 [2605.18747]。ReAct 的人工标注是这条断言最直接的定量检验,结论是双刃:接地把 hallucination 从 CoT 失败的 56% 压到 0%、假阳性从 14% 压到 6%,但 reasoning error 从 16% 升到 47%,另有 23% 失败来自检索无信息 derail 了推理 [2210.03629]。ReAct 把这命名为 factuality ↔ flexibility 权衡,代价是 3 倍量级的。本篇的 Layer 1 论证没有这一项。
4. "终止由验证决定,不由模型置信度决定"在整个 cluster 里 0 命中。 本篇的 PEV 规范明确要求这一点 [2605.18747],但被读的实现无一符合:SWE-bench baseline 是单次贪心生成,连循环都没有,唯一恢复是 harness 的机械 patch 修复 [2310.06770];AutoGen 用 max_consecutive_auto_reply 加 system message 里说 "TERMINATE" [2308.08155];Reflexion 用 $\Omega \in [1,3]$ 的记忆窗与最大 trial 数 [2303.11366];OpenHarness 用 max_turns [HKUDS-OpenHarness];Meta-Harness 用固定约 20 轮 [2603.28052]。本篇自己的 Table 7 里 15 行也只有 1 行覆盖全 PEV [2605.18747]。一个在 n≈6 的实现样本里零命中的规范性主张应当被读作 roadmap,而本篇的措辞时常写得像对现状的描述。
5. "确定性传感器"被当作 given,但它是昂贵的人工品。 本篇把 linter / test / CI / fuzzer 列为确定性传感器 [2605.18747]。可是 agent 自生成的测试并不确定:Reflexion 报 MBPP 16.3% vs HumanEval 1.4% 的假阳率差,并被迫把设计偏向"宁可假阴不要假阳"(假阴只是多反思一轮,假阳会导致错误提交)[2303.11366]。而让"执行"真正可信的代价,SWE-bench 已经量过:逐 release 手工构建 conda 可执行环境、逐仓库写 log parser、diff log_pre / log_post 认证至少一条 fail→pass [2310.06770]。Verify 的可靠性本身需要预算,本篇没有这一栏。
6. 四级表征层级缺"刻意分区"这一格。 AutoGen 的消息可见性隔离(board agent 与某玩家的对话对另一玩家不可见;role-play 使各 agent 记忆隔离)被其作者称为多 agent 正确性的隐形前提,用来防分心、幻觉与走捷径 [2308.08155]。这是故意不共享状态,与本篇"底座越形式化、越共享越好"的单调轴正交,四级层级里没有位置放它。
7. 唯一的形式化支点单薄,而现成的补法就在被引篇里。 本篇承认 $\lvert B_k - S_k \rvert$ 的量纲未定义、绝对值号是隐喻性的,且这是全篇关于状态的唯一形式支点 [2605.18747]。SWE-bench 恰好给了一个可计算的状态签名:FAIL_TO_PASS ∪ PASS_TO_PASS 的逐测试通过/失败向量,判据完全确定 [2310.06770]。在这个空间里 $\lvert B_k - S_k \rvert$ 可以直接定义为汉明距离。本篇引了 SWE-bench,却没做这个连接。
时间线上,本篇是收尾而非开局。 ReAct(2022-10)把推理并进动作空间,thought 对环境 no-op、只重写上下文 [2210.03629] → SWE-bench(2023-10)把执行确立为评测 oracle,并把瓶颈从"生成 snippet"移到"在一片上下文海里定位",最好模型 oracle 检索下也只解决 4.8% [2310.06770] → AutoGen 与 Reflexion(2023)分别给出 message-passing 编排与 verbal 反馈闭环 [2308.08155] [2303.11366] → 2026 年 harness 本身成为一等对象:Meta-Harness 直接搜索它 [2603.28052],Cursor 在生产里重写它的上下文层 [blog-dynamic-context-discovery],OpenHarness 用 8 周 13K star 把它开源化 [HKUDS-OpenHarness]。本篇出现在这条曲线的实践收敛之后。
它的角色是命名者与诊断者,不是范式发起者。 三条判据:它规定的三级权限,OpenHarness 已用 default/auto/plan 近似实现并出货 [HKUDS-OpenHarness];它主张的 AHE,Meta-Harness 已带三域数字实现完毕 [2603.28052];它 Trend 6 判为"代偿"的 context 工程,已经是带 A/B 显著性的产品特性 [blog-dynamic-context-discovery]。采纳证据的方向是反的——不是本篇提出后被采纳,而是本篇总结了已被采纳的东西并指出其共同缺陷。
唯一可直接采纳的产物是那个诊断问题。 「看一个多智能体编码系统,先问它的共享程序状态是什么、agent 能不能查询它」[2605.18747]。这一条足以在几分钟内给任意系统定位,且对本 cluster 里的系统都给出非平凡答案:AutoGen 的答案是"各 agent 各自的对话上下文,且刻意互相不可见" [2308.08155],OpenHarness 的答案是"父子进程各自的 API 会话 + 一份 MEMORY.md" [HKUDS-OpenHarness],blog 的答案是"整个文件系统,但只有一个 agent 在读" [blog-dynamic-context-discovery]。三个答案都落在本篇诊断的最弱层级。
引用价值高,实现价值为零。 478 条引用、0 实验、0 代码,唯一配套产物是一份论文清单仓库 [2605.18747]。相比之下 cluster 里每一篇都带可复现产物或生产数据:SWE-bench 开源了数据与 harness [2310.06770],Reflexion 开源了代码与 prompt [2303.11366],AutoGen 开源了框架 [2308.08155],OpenHarness 是 MIT 的 3M 字符生产代码 [HKUDS-OpenHarness]。因此本篇在 KB 里的正确用法是索引与诊断清单,而不是方法来源。
1. 用 Meta-Harness 的搜索器去搜表征层级,而不是搜 prompt 与检索代码。 Meta-Harness 搜的是单文件、任务间 reset 状态的 harness 程序 [2603.28052],从未把"共享状态表征"本身放进搜索空间;本篇给了四级层级作为现成的离散搜索维度 [2605.18747]。把 substrate 层级作为 proposer 可改的组件、以多 agent 任务收敛率为 reward,产出的正是本篇自承可以做而没做的那张 systems × representation-level 列联表 [2605.18747]。
2. 机制 × backbone 强度的二维网格。 行是 harness 机制(角色分解 / 确定性 oracle / 权限门 / reflection / causal 归因 / 自适应拓扑),列是 backbone 强度分档,格子填增益。两条轴都有现成方法论:AutoGen 的 backbone × 单/多 agent 对照 [2308.08155] 与 Reflexion 的 backbone sweep 加阈值现象 [2303.11366]。这既直接检验本篇前提 #1,也能把上面"能力替代型 vs 能力放大型"从假设变成可证伪结论。
3. 可 grep 的 blackboard。 本篇的 Blackboard 层级 [2605.18747]、blog 的"文件系统即惰性上下文" [blog-dynamic-context-discovery]、Meta-Harness 的非 Markov 文件访问(每轮中位读 82 个文件)[2603.28052] 三者从未被合并。现状是:L2MAC 的 file store 永不覆盖写但只服务单条顺序 agent 链 [2605.18747],blog 是单 agent 惰性检索,Meta-Harness 的非 Markov 访问只发生在 outer-loop proposer 侧。合成物是"多 agent 并发读写、按需 grep、永不覆盖写"的共享黑板——本 cluster 里最明确的可造物。附带要解决 blog 完全没碰的两件事:并发写冲突,以及读时的快照语义(不然 agent 就是在基于过期视图工作,正是本篇借 SyncMind 想量化的那个问题)。
4. 静默无效动作的传感器。 本篇指出 acting 的失败可以是无效状态转移或静默执行错误,机器人去抓一个够不着的物体不会抛任何 runtime exception [2605.18747]。它的文本对应物在 cluster 里出现过两次:ReAct 之前的 Act-only 基线对着 sinkbasin 1 反复 take 而观测恒为 "Nothing happens" 却不换策略 [2210.03629];Reflexion 的主导基线失败类是幻觉持有某物 [2303.11366]。三者是同一个缺失传感器:动作执行后状态是否真的改变了。这是一个不需要形式化底座就能加的 no-op 检测器(比对动作前后的状态签名),却在被读的所有系统里都不存在。
5. 把 oracle 可靠性做成 Verify 的一等门控变量。 Reflexion 给了 per-benchmark 的假阳/假阴不对称设计与具体数字 [2303.11366],SWE-bench 给了让执行判据可信所需的工程量 [2310.06770]。把"该 domain 自生成 oracle 的假阳率"作为决定 Verify 能否自动 Accept、还是必须走 Escalate 的输入,是本篇 escalation 边 [2605.18747] 目前唯一缺的定量参数。
6. 给 $\lvert B_k - S_k \rvert$ 一个度量空间并检验其预测力。 用 SWE-bench 的逐测试状态向量作为 $S_k$ 的可计算代理 [2310.06770],定义汉明或加权距离,然后问一个可证伪的问题:belief 偏离幅度能否在失败发生前若干步预测失败?本篇自承这是它唯一的形式支点且量纲未定义 [2605.18747],补这一步的成本极低而收益是把中心论断从修辞变成可测量。
7. 分区 × 共享的联合设计维度。 AutoGen 的可见性隔离是刻意的不共享且被其作者视为正确性前提 [2308.08155],本篇的轴是刻意的共享。真实 MAS 需要同时要两者:哪些 artifact 全局可查询、哪些必须 agent 私有以防分心与走捷径。cluster 里没有任何工作给出这个划分的原则,甚至没有把它当成一个设计维度——这是本篇分类学最干净的一个空格。