给搜索Agent装上「外脑」:Harness-1 让20B模型干翻闭源巨头
一句话总结:Harness-1 把搜索 Agent 从"记账员+推理员"的双重身份中解放出来——它让环境端负责管理候选池、证据图、验证记录,让20B的小模型只专注于做语义决策。结果:8个基准平均召回73%,超越多个闭源巨头,迁移能力更是源域的2.2倍。
一、痛点:为什么搜索 Agent 总是"脑子不够用"?
想象一个研究员在做文献综述。她需要:
- 从数据库里搜出相关论文
- 记住哪些看过了、哪些还没看
- 对比不同论文的结论,找出矛盾
- 验证某个关键数据是否被多个来源支持
- 决定什么时候搜集够了,可以开始写综述
这些任务中,第1步和第5步是语义决策——需要真正理解研究主题。而第2-4步是状态管理——记录、分类、交叉引用、验证。一个聪明但记忆有限的人,最大的瓶颈往往不是"理解",而是"记清楚自己都干了什么"。
现在的 AI 搜索 Agent 正是这个困境的放大版。传统训练方式把整个对话记录塞进模型上下文,让 RL 同时优化两种截然不同的事情:
- 语义决策:搜什么、保留什么、验证什么、何时停止
- 状态管理:候选文档池维护、重要性排序、跨文档关联追踪、已验证声明的记录
结果很糟:上下文膨胀导致优化条件变差,奖励信号稀疏(空集奖励无法区分失败原因),跨文档的结构信息被淹没在对话流里无法利用。
Harness-1 的核心洞察很简单:
能外包给环境做的工作,就别让策略模型操心。
二、核心创新:State-Externalizing Harnesses(状态外化工作台)
Harness-1 的设计哲学不是"让模型更聪明",而是"让模型更专注"。
它把搜索 Agent 的交互界面从"对话流"改造成一个结构化状态机:
┌─────────────────────────────────────────┐
│ 策略模型 (Policy, 20B) │
│ • 搜索什么 (what to search) │
│ • 保留/丢弃哪些文档 (keep/discard) │
│ • 验证什么声明 (what to verify) │
│ • 何时停止 (when to stop) │
└─────────────┬───────────────────────────┘
│ 结构化动作
┌─────────────▼───────────────────────────┐
│ Harness 状态机(环境端) │
│ • Candidate Pool P_t │
│ • Curated Set C_t + Importance I_t │
│ • Evidence Graph G_t │
│ • Verification Records V_t │
│ • Full-text Store D_t │
│ • Search History H_t │
│ • Budget Marker B_t │
└─────────────────────────────────────────┘
这不是一个 API 封装,而是一个**认知卸载(Cognitive Offloading)**的架构设计。让我逐个解释这些状态组件为什么重要:
1. Candidate Pool(候选池)
每次搜索后,所有结果不是直接塞进模型上下文,而是先进入候选池。系统会自动压缩(Sentence-BM25 保留 Top-4 句)和去重(MinHash 去重),然后呈现给模型一个结构化摘要。
模型不需要在 200 个 raw chunks 中大海捞针。它面对的是已经清洗过的候选列表,带着相关性分数和元数据。
2. Curated Set(精选集)+ 重要性标签
这是 Harness-1 最核心的设计。策略模型不是直接在候选池上做决策,而是维护一个最多 30 篇文档的精选集(Curated Set)。每篇文档被标记为四级重要性:very high / high / fair / low。
模型的决策包括:把哪篇从候选池加入精选集、把哪篇从精选集降级或移除、提升哪篇的重要性。这是一个显式的筛选过程,而不是传统 RAG 那种隐式的 top-k 截断。
消融实验直接证明了重要性标签的价值:如果把 FIFO 机制替代重要性标签,recall 下降 4.1%。因为模型失去了"这篇比那篇更重要"的判别能力,只能机械淘汰。
3. Evidence Graph(证据图)
当搜索涉及多跳推理时,一个关键挑战是:实体 A 在文档 X 中提到,实体 B 在文档 Y 中提到,但实体 A 和 B 的关系在文档 Z 中。传统方式下,模型需要自己记住这些跨文档关联。
Harness-1 的证据图自动维护一个轻量级的实体-文档双向映射。模型能看到:
- 哪些实体出现在哪些文档中
- 哪些文档是"桥接文档"(连接多个实体的关键文档)
- 哪些实体只有单篇文档支持(singleton,需要额外验证)
这不是完整知识图谱,而是专为搜索任务优化的结构化证据视图。隐藏证据图后,recall 下降 2.6%——别小看这个数,在信息检索的尾部,2.6% 可能就是找到关键证据和错过它之间的区别。
4. Verification Records(验证记录)
模型可以在任何时候提出一个待验证声明(比如"公司X在2023年的收入是Y"),并指定用哪篇文档来验证。Harness 会记录这个验证的结果:支持、不支持、或无法判断。
这个机制有两个作用:
- 给模型一个"我确认过这个信息"的安全感,减少幻觉
- 给验证过的声明额外奖励,鼓励主动验证而非盲目采信
如果禁用 verify 工具,recall 下降 3.1%。因为模型失去了高置信提升的验证支撑,只能依赖更保守的猜测。
5. Budget Marker(预算标记)
传统搜索 Agent 对上下文消耗没有显性感知,直到碰到硬截断。Harness-1 在每个回合后注入 [Token usage: 14,203/32,768],让模型始终知道自己还有多少预算。
当使用量超过软阈值(30,720 tokens),Harness 会提示模型开始精简或收尾。超过硬截断时,只有 prune 和 finish 动作被允许。这创造了一个预算感知的决策空间——模型必须在"搜集更多证据"和"保留上下文空间"之间做权衡。
三、训练方法:为什么 SFT + RL 在 Harness 里更有效?
Harness-1 的训练分两个阶段:
阶段一:SFT 热身(监督微调)
使用 Kimi K2.5 等强模型生成 899 条高质量搜索轨迹,过滤标准:
- 轨迹召回 > 50%(过程中至少碰到了半数目标文档)
- 输出召回 > 40%(最终精选集包含的目标文档比例)
- 低召回轨迹按比例混入(最多 5%),作为负例
- 探索好但收尾差的轨迹被排除(轨迹召回远高于输出召回,说明模型不会收敛)
SFT 不是为了让模型"学会正确答案",而是让模型学会正确的行为模式:并行工具调用、查询分解、精简决策。这些行为先验(behavioral priors)被写入接口,而不是让 RL 从零摸索。
阶段二:RL 优化(CISPO)
在 SFT 检查点(step-550)基础上,用 on-policy CISPO 进行强化学习。训练规模:128 条 query × 8 条 rollout = 1024 条/步,共 80 步,约 82K 总 rollout。
奖励函数是一个多目标组合:
R = 精选集质量(偏重召回)
+ 轨迹覆盖(过程中是否碰到过目标文档)
+ 答案证据(最终答案是否有目标文档支持)
+ 答案发现奖励(找到了答案就给额外奖励)
+ 工具多样性(防止策略坍缩为只搜不筛选)
- 答案遗漏惩罚(碰到了但没放进精选集)
- 回合惩罚(鼓励尽早收敛)
特别值得注意的是工具多样性奖励(w_div = 0.15)。没有它时,模型会迅速坍缩为"只搜索不筛选"模式——因为搜索是最直接增加轨迹召回的方式,而筛选和验证看起来"费力不讨好"。但 diversity 奖励迫使模型保持搜索-筛选-验证的均衡节奏,这是最终高 recall 的关键。
消融实验清楚显示了这个效果:
| 条件 | 工具多样性 | Curated Recall |
|---|---|---|
| 无多样性奖励 | ~3.5(坍缩) | ~0.53 |
| 有多样性奖励 | ~4.30(稳定) | ~0.60 |
四、实验结果:8个基准,全面碾压
核心数字
| 指标 | 数值 | 含义 |
|---|---|---|
| 平均 Curated Recall | 73.0% | 8个基准的平均召回率 |
| 相对优势 | +11.4 pts | 相比次强开源模型(Tongyi DR 30B, 60.3%) |
| 与闭源对比 | 超越 GPT-5.4, Sonnet-4.6, Kimi-K2.5 | 仅 Opus-4.6 (79.4%) 更高 |
完整排名
| 模型 | 规模 | 平均 Recall | 类型 |
|---|---|---|---|
| Opus-4.6 | 未知 | 79.4% | 闭源前沿 |
| Harness-1 | 20B | 73.0% | 开源小模型 ⭐ |
| GPT-5.4 | 未知 | 70.9% | 闭源前沿 |
| Sonnet-4.6 | 未知 | 68.8% | 闭源前沿 |
| Kimi-K2.5 | 未知 | 64.7% | 闭源前沿 |
| Context-1 | 20B | 61.6% | 开源小模型(基线) |
| Tongyi DR 30B | 30B | 60.3% | 开源中等模型 |
| GPT-OSS-120B | 120B | 59.0% | 开源大模型 |
| Search-R1 32B | 32B | 28.9% | 开源中等模型 |
| Qwen3 32B | 32B | 21.6% | 开源中等模型 |
最惊人的发现:迁移能力
Harness-1 的 RL 训练只在一个基准(SEC 金融财报)上进行。但它的测试横跨 8 个基准,包括 4 个完全没见过的迁移基准(LongSealQA、Seal0QA、FRAMES、HotpotQA)。
结果:
| 类别 | 平均增益 | 说明 |
|---|---|---|
| 源域(4个训练相关基准) | +7.9 pts vs Context-1 | 已经很强 |
| 迁移域(4个零样本基准) | +17.0 pts vs Context-1 | 更强 |
| 迁移/源域增益比 | 2.2× | 迁移反而更好 |
为什么迁移更强?因为策略学习的是在显式搜索状态上的操作——这些操作是跨领域通用的。"把这篇文档从候选池加入精选集并标记为 high"这个动作,在专利搜索和 Web 多跳 QA 中是一样的。而传统端到端训练的模型学习的是领域特定的模式,换个领域就抓瞎。
论文把这叫作:
"The policy is learning operations over a domain-general search state."
这是 Harness-1 最有价值的结果:显式搜索状态比隐式对话历史更易泛化。
消融实验:Harness 机制协同验证
在 BrowseComp+ 上,逐个禁用 Harness 机制:
| 禁用机制 | Recall 变化 | 失败模式 |
|---|---|---|
| 完整系统 | 0.584(基准) | — |
| - 重要性标签 | -4.1% | 无法区分优先级,机械淘汰 |
| - 句子压缩(原始片段) | +0.2%(但 FA -7.0%) | 上下文噪声淹没关键信息 |
| - 自动种子化 | -0.3%(FA -6.4%) | 早期探索更随机 |
| - 证据图 | -2.6% | 跨文档关联不可见 |
| - verify 工具 | -3.1% | 高置信提升缺乏验证支撑 |
| 全部禁用 | -12.2% | 策略退化为宽浅搜索,无法收敛 |
关键洞察:全部禁用 > 任何单一禁用,说明机制间存在协同效应。Harness 不是几个独立功能的叠加,而是一个有机整体。
五、数据效率:4K 训练 > 22万条训练的竞品
Harness-1 的训练数据量出奇地少:
- SFT:899 条过滤轨迹
- RL:4,352 条独特训练 query(128 × 80 步,但有很多重复被去重)
对比竞品:Search-R1 用了 8K 条,Qwen3 用了 221K 条。
Harness-1 的数据效率来自一个关键设计:行为先验被移入接口。SFT 阶段不是教模型"怎么找到答案",而是教模型"怎么使用这个工具集"。RL 阶段不是让模型从零学搜索策略,而是让模型在已有行为先验上优化语义决策。
这就像教一个人开车:你不是让他从理解内燃机原理开始,而是告诉他方向盘、油门、刹车在哪,然后让他在路上练习。Harness 就是那个"告诉他工具在哪"的接口。
六、局限:诚实评估
Harness-1 不是万能药,论文明确指出了几个局限:
1. 任务范围狭窄
面向的是证据检索(needle-in-haystack / multi-hop),不是开放域报告生成。如果你的目标是"写一份关于气候变化的政策综述",Harness-1 能帮你在海量文档里找到支撑证据,但它不会替你组织论述结构、权衡对立观点、生成可读文本。
2. 证据图过于简化
当前的实体提取只是轻量级 regex(正则匹配),不是完整的实体链接系统。如果两个文档用不同的名字指代同一个人("马云"和"Jack Ma"),Harness-1 不会自动把它们关联起来。这需要更复杂的实体消歧,论文把这叫作"未来工作"。
3. LLM 验证器会出错
验证模块本身依赖 LLM 判断"声明是否被文档支持"。在技术细节或模糊声明上,这个判断可能出错。一个错误的验证结果会给模型错误的安全感,导致它在错误证据上高置信收敛。
4. 句子压缩可能丢失上下文
Sentence-BM25 压缩保留了 Top-4 句子,但某些关键信息依赖 discourse structure(比如"虽然 A 看起来成立,但 B 实际上推翻了它"——如果 A 和 B 不在同一个 Top-4 句子里,模型可能只看到 A)。模型可以通过 read_document 获取全文,但 budget 有限,这个折衷不会消失。
5. 伦理风险
搜索 Agent 可能检索到敏感、版权或偏见信息。Harness-1 本身没有访问控制机制,需要在上层应用中做过滤和人工监督。
七、行业启示:接口设计即方法
Harness-1 的论文标题里有句话:
"The interface itself is part of the method."
这句话值得整个行业深思。
传统上,我们训练 AI 的方法是:给模型一个通用接口(比如文本输入/输出),然后扔海量数据让它自己学。Harness-1 走的是另一条路:先把问题理解清楚,然后设计一个结构化接口把"容易的部分"外包给环境,让模型只学"困难的部分"。
这个思路可以推广到很多场景:
- 代码 Agent:让环境维护 AST 和符号表,模型只负责生成修改建议
- 数据分析 Agent:让环境维护数据 schema 和统计摘要,模型只负责提出假设
- 医疗诊断 Agent:让环境维护病历时间线和检查指标,模型只负责诊断推理
不是每个问题都需要一个万亿参数的模型。有时候,一个设计精良的接口 + 一个专注的小模型,比一个通用的巨无霸更有效。
Harness-1 用 20B 参数超越了 120B 的 GPT-OSS-120B,也超越了 Kimi-K2.5 和 GPT-5.4 这样的闭源巨头。这个结果的工程意义远大于学术意义:它证明检索能力不是模型大小的函数,而是接口设计的函数。
八、结论:值得关注的方向
Harness-1 是 2026 年 AI 搜索领域最扎实的工程研究之一。它没有提出新的模型架构,没有训练更大的模型,而是重新设计了搜索 Agent 的交互界面——把状态管理从策略模型中剥离,让 RL 专注于语义决策。
结果是:8 个基准平均 73% 召回,超越多个闭源巨头,迁移能力比源域更强 2.2 倍。全部用 20B 参数和 4K 训练 query 完成。
对实际应用的建议:
- 如果你在做多跳文档检索(法律、金融、科研、合规),Harness-1 的架构值得参考
- 如果你在做通用问答,Harness-1 需要配合一个生成模型(如论文中的三阶架构:检索→整理→生成)
- 如果你关心数据隐私和部署成本,20B 模型可以在本地运行,不用调用闭源 API
代码和权重已开源:https://github.com/pat-jj/harness-1
参考链接:
- 论文 arXiv: https://arxiv.org/abs/2606.02373
- 代码仓库: https://github.com/pat-jj/harness-1
- Chroma Context-1 技术报告: https://www.trychroma.com/research/context-1
- Chroma 博客解读: https://atalupadhyay.wordpress.com/2026/03/27/chroma-context-1-the-self-editing-search-agent-that-changes-how-we-build-rag-systems/
- 相关论文《Storage Is Not Memory》: https://arxiv.org/html/2605.04897v1
#Harness-1 #搜索Agent #RL #StateExternalizing #Chroma #信息检索 #AIAgent
讨论回复
1 条回复推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。