
deepagents 上下文检索评测任务 cb-cloud-1 深度解析跨文件检索、聚合与平局决胜【免费下载链接】deepagentsThe batteries-included agent harness.项目地址: https://gitcode.com/GitHub_Trending/de/deepagents导读cb-cloud-1 是 deepagents 仓库 context-retrieval-evals 评测数据集中的 30 个任务之一属于 Context-Bench 衍生任务。本任务要求 Agent 在 10 个文本文件、超过 6.4 万行记录构成的全量语料中通过宠物 → 主人 → 州 → 同州居民 → 车辆数聚合 → 年龄平局决胜的多跳推理链定位唯一答案。本文以 cb-cloud-1/instruction.md 为骨架结合其task.toml、tests/case.json、Harbor 适配器源码与模型评分器实现完整还原该任务的指令语义、数据格式、生成机制、运行与评分闭环读完你将能理解这类整库投喂、禁止预判的检索评测是如何设计、生成与打分的。任务指令的完整语义cb-cloud-1/instruction.md全文只有两句话却是整个评测的契约Among all people who live in the same state as the owner of the pet named Dawn, who owns the most vehicles? If theres a tie, who among them is the oldest? Use only the files under /app/files. Write your final answer (and nothing else) to /app/answer.txt.第一句是问题本体在宠物名为 Dawn 的主人所在州这一集合内找出拥有车辆数最多的人若并列则取其中年龄最长者。第二句是输出契约包含两条硬性约束语料边界只能使用/app/files下的文件——即沙箱内的只读语料禁止任何外部来源答案通道最终答案必须原样写入/app/answer.txt不允许附带任何解释或额外内容。这两条约束直接决定了下游评分器verifier的读取方式评分器只读取/app/answer.txt一个文件见 judge.py 中对_SUBMISSION_PATH Path(/app/answer.txt)的定义。因此指令中的and nothing else不是修辞而是评测通道的硬性约定。问题的推理链拆解结合任务对应的标准答案 tests/case.json答案是Tammy Roberts。完整推理需要跨 4 类记录文件做连接join对应问题类型comparison_tiebreak定位宠物主人在 pets.txt 中name: Dawn对应的记录是### pet-0746 (owner: pers-0401)即主人 ID 为pers-0401定位主人所在州在 people.txt 中pers-0401是Haley Perez再到 addresses.txt 中查pers-0401的地址记录addr-0814读取其state字段聚合同州居民的车辆数需要以州为连接键找出所有居住在该州的居民再到 vehicles.txt 中按owner统计每人名下车辆条目数平局决胜如果最大车辆数有并列需要回查 people.txt 中的DOB字段比较年龄取最年长者。从语料格式看10 个.txt文件使用统一的标题行 键值行半结构化格式。例如 people 文件以### 姓名 (ID: pers-XXXX)为记录头、DOB行携带出生日期vehicles 文件以### veh-XXXX (owner: pers-XXXX)为记录头。这种格式既不完全是结构化 JSON也不是自由文本恰好考验 Agent 的文本解析与跨文件实体对齐能力。任务在评测数据集中的定位cb-cloud-1 并非孤立文件而是 30 个代表性样本之一。根据 context-retrieval-evals 数据集 README任务源自Context-Bench的cloud套件合成的人/车/宠物/账户记录由 harbor_adapters/contextbench 从 vendored 的filesystem_cloud.jsonl100 条记录生成cb-cloud-i对应第i条记录0 起每个任务都携带完整 10 文件语料约 64.7K 行Agent 无法通过文件名预判哪些文件相关必须真实检索、连接、聚合30 个任务按 Context-Bench 源难度分为 2 easy · 10 medium · 18 hardcb-cloud-1 属于 easy 档问题类型为comparison_tiebreak。cb-cloud-1 的元数据见 task.tomldifficulty easy、source_difficulty easy后者保留 Context-Bench 原始标签用于溯源、question_type comparison_tiebreak。语料与验证器的单一来源single-sourcing设计一个值得注意的实现细节是每个任务的语料和验证器文件并不提交在任务目录内而是单一来源、按需再生。语料唯一副本在libs/evals/harbor_adapters/contextbench/vendor/files/10 个 txt共 64657 行通过populate_corpus恢复到每个任务的environment/files/验证器tests/{test.sh, judge.py, rubric.txt}的唯一副本在templates/与vendor/rubric.txt每个任务逐字节相同每个任务唯一提交的只有tests/case.json问题 标准答案。因此在本地运行前必须先 populate官方给出的两步命令是uv run python -m harbor_adapters.contextbench.main --populate datasets/context-retrieval-evals uv run harbor run --path datasets/context-retrieval-evals ...对应的实现见 adapter.py 的populate_corpus它会扫描数据集目录下所有source contextbench的任务目录复制语料与验证器不变项CI 在构建任务镜像前也会自动执行--populate。沙箱环境与网络策略任务的运行环境由 environment/Dockerfile 定义基础镜像python:3.12-slim构建阶段预装curl与 CA 证书构建期有网络使沙箱内 Agent 的运行时引导跳过 apt运行期网络出口因此全部为 HTTPSCOPY files/ /app/files/将语料以只读形式挂入沙箱。网络模式在task.toml中配置为network_mode allowlistallowed_hosts只放行包镜像站pypi.org、astral.sh等和模型 API 端点api.anthropic.com、api.openai.com、openrouter.ai等任意网页访问仍被阻断从而防止 Agent 通过网络查询答案。这一设计的用意在 adapter.py 生成逻辑的注释 中有明确说明。评分机制非字符串等价的模型裁判评测并不使用字符串相等来判断对错而是忠实复刻了 Letta letta-evals 的model_judge评分器实现在 templates/judge.py读取/tests/case.json中的input/ground_truth与/tests/rubric.txt通过string.Formatter().vformat替换{input}/{ground_truth}/{submission}生成裁判提示词调用 OpenAI 兼容 Chat Completions强制json_schema响应格式{score: float in [0,1], rationale}按上游规则选择温度o1/o3/gpt-5系列推理模型用 1.0这些模型拒绝温度 0.0 的 API 请求其余用 0.0分数clamp(0.0, 1.0)任何异常按 0.0 计裁判调用带 5 次重试。评分规则本身在 vendor/rubric.txt 中只取三档 0.0 / 0.5 / 1.01.0最终答案与预期匹配且对数值格式$145,315.33145315.33、数字单词two dogs2、人名大小写、次要措辞差异、隐含单位均容忍0.0答案不同、声称找不到而答案实际存在、部分答案遗漏关键值、给出多个答案且未明确最终答案0.5仅限明确拒绝作答的情形。评分只看最终答案而非中间推理过程有错但答案正确仍得 1.0过程完美但答案错误仍得 0.0。验证器入口test.sh只是调用python3 /tests/judge.py并将得分写入/logs/verifier/reward.txt。参考答案与已知表现每个任务附带参考实现 solution/solve.sh仅用于校验与对照并非 Agent 行为上限#!/bin/sh set -eu printf %s\n Tammy Roberts /app/answer.txt该任务在 calibration.json 校准记录中的表现可作为参照pass_at_bare为 0.83336 次 rollout 通过 5 次terra_pass_at_bare与luna_pass_at_bare均为 0.8333是 30 个样本中两个模型都达到 pass6 的任务之一。需要注意该数值来自特定的配对校准运行gpt-5.6-terra 与 gpt-5.6-luna各 6 次 rollout是选择证据而非排行榜目标。在 deepagents 评测工作流中的落地cb-cloud-1 只是入口。要把它跑起来完整链路是生成任务目录uv run python -m harbor_adapters.contextbench.main --populate datasets/context-retrieval-evals恢复语料与验证器对应 adapter.py 的generate_task/populate_corpus运行评测uv run harbor run --path libs/evals/datasets/context-retrieval-evals ...Harbor 按 dataset.toml 扫描任务目录、构建沙箱镜像、注入 Agent 与评分环境评分沙箱内 Agent 把答案写入/app/answer.txt随后 verifier 通过judge.pyrubric.txt的模型裁判打分结果汇总多任务结果汇入 calibration.json 与 README 任务表 展示各任务的通过率。小结cb-cloud-1 用极简的两行指令承载了一条完整的跨文件多跳推理评测链路全量 10 文件语料杜绝文件名预判、半结构化文本考验解析与实体对齐、comparison_tiebreak问题类型要求聚合加平局决胜、模型裁判评分容忍措辞差异却不放过答案错误。对于想要理解或扩展 deepagents 上下文检索评测的开发者它是整套 30 任务数据集的最小而完整的切片——从 adapter.py 的生成逻辑、judge.py 的评分实现到 rubric.txt 的判分细则都能以此为起点逐一展开。【免费下载链接】deepagentsThe batteries-included agent harness.项目地址: https://gitcode.com/GitHub_Trending/de/deepagents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考