🐳 第八章 设计自己的Harness
📄 一句话概括

一个分数是模型与 Harness 一起跑出来的——比模型就固定 Harness,比 Harness 就固定模型。

📝 本节和前面几节的关系

8.5 把边界讲完,这一节回到【怎么衡量】:同一件事,分数到底算谁的。

一、一个数字说明问题

同一模型、同一任务、四套预设:

模型没换,成绩换了——所以分数不是模型的分数。

二、官方 Benchmark 为什么选 Minimal

2.5 讲过:Minimal 是留给基准测试的测量工具(控制变量/可复现/免争议)。

它的意义不在【跑得好】,而在【只留两件】——把变量收成一个,才能把成绩归给模型。

跑分不写环境,就没有可比性。

三、子条:用 Preset 做可重复的对照实验

《Model + Harness = Agent》这句等式,要比较时就得拆开比:

本课的方法正好成了工具:补丁 + dump + 只差几行。 本章实验 A 的 diff 是 24 行,实验 D 是 18 行——改动小到你敢声称【别的都没变】。

四、这条纪律的实际用途

不写清楚 Harness,三种常见结论都站不住:

先固定一边,再说另一边。

五、动手 Demo:模型分与产品分必须分开

同一模型、同一任务、四套预设:

presets = [("minimal", 2), ("standard", 19),
           ("ptc", 20), ("cordis", 20)]
for name, cnt in presets:
    print("  %-9s %d 件" % (name, cnt))
print("  同一模型、同一任务、四套预设 -> 四种成绩")
print("  比模型就固定 Harness, 比 Harness 就固定模型")

实跑输出:

--------------------------------------------------------------------
模型分与产品分必须分开
--------------------------------------------------------------------
  一个数字说明问题:同一模型、同一任务、四套预设。

  预设         件数     同一任务的模型往返
  -------------------------------------------------
  minimal      2        最少,但很多活干不了
  standard     19       基线
  ptc          20       往返少,中间结果不进上下文
  cordis       20       可以中途改 Runtime
  -------------------------------------------------

  官方 Benchmark 选 Minimal,就是为了**把变量收成一个**:
  比模型时固定 Harness,比 Harness 时固定模型。

  对照实验要做可重复,靠的正是本章这套【补丁 + dump + 只差几行】。

模型没换,成绩换了——所以那个分数不是模型的分数。 官方选 Minimal 做 Benchmark,图的是变量收成一个。 本章的【补丁+dump】正好是可重复对照实验的现成工具:diff 只有十几到二十几行。

30 秒实验

  1. 拿一个你关心的问题,先写下【固定哪一边】再开始比。
  2. 用补丁把两套配置的差分压到 20 行以内,看还剩哪些不同。
  3. 想一想:你以前说的【这个模型不行】,有多少其实是 Harness 的事。

常见误区

  1. 错误:跑分高就是模型强。——纠正:分数是模型与 Harness 一起跑出来的——不写清 Harness,分数没有可比性。
  2. 错误:对照实验要改动越少越好,所以随便跑跑就行。——纠正:改动少是为了能声称【别的都没变】——这句话是结论能成立的前提。
  3. 错误:Minimal 是因为它跑得最好。——纠正:Minimal 是测量工具——它的价值在【只留两件】,不在成绩。
自测三问(点开对答案) 1. 为什么模型分与产品分要分开? —— 因为**一个分数是模型与 Harness 一起跑出来的**——模型没换而成绩换了,就说明分数不只属于模型。 2. 做对照实验的两条路是什么? —— **比模型就固定 Harness**,**比 Harness 就固定模型**——一次只动一个变量。 3. 本课的什么方法正好适合做对照实验? —— **补丁 + dump + 对 diff**——本章实验的 diff 只有 18~24 行,小到能声称【别的都没变】。

相关笔记