news 2026/5/26 3:54:06

Direct Corpus Interaction (DCI) 论文理念助力Agent发展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Direct Corpus Interaction (DCI) 论文理念助力Agent发展

一、核心设计理念:接口翻转

DCI的根本设计思路是把语义理解的责任从索引层下移到LLM层

传统流程:

原始语料 → 切块 → 向量化/建索引 → top-k过滤 → LLM推理

DCI流程:

原始语料 ←→ LLM(直接用终端工具操作,自己决定搜什么)

没有任何embedding模型、向量索引或检索API介入。语料库始终完整可达,LLM自己承担"知道去哪找"的职责。


二、工具集设计:四类操作原语

论文明确列出了DCI提供给Agent的工具,分为四类:

操作类型具体工具用途
精确匹配greprg(ripgrep)精确字符串或正则表达式匹配
结构导航findglob文件发现、目录遍历
局部检视headtailsed、文件读取检查匹配位置的上下文
组合脚本轻量shell脚本、python -c多步骤逻辑、聚合计数等

这些工具的核心优势在于可管道化组合,例如:

  • 多条件约束:grep 'foo' file | grep 'bar'
  • 弱线索聚合:find . | grep 'report' | grep '2024'
  • 假设验证:grep -n 'keyword' file | head

三、两种Agent实现

论文实现了两个版本,设计目的不同:

DCI-Agent-Lite(极简版)

  • 基础框架:改自开源项目 Pi(一个极简终端coding harness)
  • 工具集:仅bash+read,无任何检索专用模块
  • 骨干模型:GPT-5.4 nano
  • 设计目的:干净地隔离"DCI接口本身的效果",排除harness工程的干扰
  • 特点:无离线索引、无dense retriever、无reranker

DCI-Agent-CC(强化版)

  • 基础框架:Claude Code(Anthropic官方CLI Agent)
  • 工具集:Claude Code默认工具集,但禁用了web-search、web-fetch、subagents,并屏蔽了数据目录直接访问(防止答案泄露)
  • 骨干模型:Claude Sonnet 4.6
  • 设计目的:探测DCI范式在最强harness下的性能上限
  • 特点:更强的prompt engineering、更鲁棒的工具编排、内置上下文管理

两者的共同点:都只通过终端工具操作原始语料,不调用任何向量检索API


四、上下文管理机制设计

这是DCI工程实现中最精细的部分,也是论文专门设计的。

问题grep/rg可能返回大量匹配行,文件读取会暴露长文本,长轨迹中这些观测快速堆积,超出模型上下文窗口。

解决方案:三层递进机制

第1层:截断(Truncation) 每次工具调用的结果,在写入上下文前按字符数上限截断 保留"这次调用发生了"的信息,控制单轮冗长度 第2层:压缩(Compaction) 纯内存操作,不调用LLM 当累积工具输出超过阈值(240K字符)时, 清空最老的若干轮工具结果内容,替换为短占位符 保留工具调用的结构(知道调用过什么),丢弃具体内容 第3层:摘要(Summarization) 压缩后上下文仍超限时,调用LLM生成搜索轨迹摘要 摘要替换已压缩的历史,保留最近20K tokens原始内容 连续失败3次后本轮停止尝试

五个档位的具体配置:

档位截断上限压缩摘要
L0
L150K字符
L220K字符
L320K字符
L420K字符

实验发现最优策略是L3(准确率77%),不是最激进的L4(73%)——说明压缩策略存在甜蜜点,过度压缩会丢失有用的中间搜索结构。


五、Prompt设计(附录C给出完整模板)

论文给出了两套指令模板:

QA任务的系统提示核心要点:

  • 明确限定只能使用ripgrep和bash,禁止调用Agent工具或子Agent,禁止网络搜索
  • 要求在单次回复中并行发出多条搜索命令(节省轮次)
  • 要求使用多样化关键词组合,最大化召回
  • 输出格式强制规范:Explanation+Exact Answer+Confidence(含文档路径引用)

IR排序任务的系统提示额外要求:

  • 召回和精度同等重要(因为NDCG对两者都惩罚)
  • 每轮搜索后反思空白点,发起补充搜索
  • 不许找到几篇就停,要穷举所有合理的搜索角度
  • 输出最多20篇文档,按相关性从高到低排列

六、评估体系设计

论文专门为DCI设计了两个过程指标来解释为什么它有效:

Coverage(覆盖率):轨迹有没有"触达"金文档

  • coverage_any:至少触达1篇金文档
  • coverage_mean:平均触达比例
  • coverage_all:触达全部金文档

Localization(局部化得分):触达金文档后,提取出的片段有多精准

  • 片段越短(相对于整篇文档),得分越高
  • 反映Agent是否在"精确提取证据"而不是"大段阅读文档"

这两个指标合起来揭示了DCI的工作原理:coverage_mean低于传统检索(找到的金文档总量更少),但localization远高于传统检索(找到的文档里提取的证据更精准),最终准确率反而更高。


总结:DCI设计的本质

论文的设计哲学可以用一句话概括:不要替LLM做检索决策,把工具给它,让它自己搜。具体体现为:不建任何索引、不做任何预过滤、把一套可自由组合的终端原语交给Agent、配合上下文管理让它能跑足够长的搜索轨迹。整个设计的复杂度其实很低——复杂的部分都外包给了LLM的推理能力。

参考链接

详见gzh:计算机知识的传播者

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 3:52:04

C++11——并发库介绍

说明&#xff1a;本篇旨在介绍并发库怎么使用&#xff0c;介绍的不会太全面。前置条件是了解 Linux/window 的相应的系统调用再看。这是文档&#xff1a;cplusplus。 1、<thread>库 1.1 说明 其实 C 的 <thread> 库就是对系统调用封装了一层&#xff08;其实不仅是…

作者头像 李华
网站建设 2026/5/26 3:50:10

STM32CubeMX保姆级教程:从零点亮STM32F103C8T6最小系统板的LED

STM32CubeMX零基础实战&#xff1a;点亮你的第一颗LED 拿到STM32开发板的第一天&#xff0c;就像站在乐高积木城堡前的孩子——那些密密麻麻的引脚和陌生的专业术语让人既兴奋又忐忑。本文将带你用最直观的方式跨出第一步&#xff1a;让板载的LED灯亮起来。这不是简单的步骤罗列…

作者头像 李华
网站建设 2026/5/26 3:48:47

没有银弹,从来就没有

我反复回想起Fred Brooks在1986年写的一段话。 他的论点很简单。没有任何单一发明、工具或技术能让构建软件变得 dramatically 更容易。进步确实在发生&#xff0c;但它永远是局部的&#xff0c;永远留下某些未解决的问题。 四十年后&#xff0c;我认为他是对的。而我认为我们…

作者头像 李华
网站建设 2026/5/26 3:45:59

用Python+skimage搞定图像纹理分析:从GLCM六种特征到实战代码避坑

Pythonskimage图像纹理分析实战&#xff1a;GLCM参数优化与特征工程避坑指南 当你第一次尝试用灰度共生矩阵&#xff08;GLCM&#xff09;分析医学影像中的肿瘤区域&#xff0c;或是检测工业零件表面的细微裂纹时&#xff0c;很可能会遇到这样的困惑&#xff1a;为什么相同的代…

作者头像 李华