
人工智能大模型AI AgentAgent 框架自主智能体工具调用代码智能体MCP Clients【免费下载链接】deepagentsThe batteries-included agent harness.项目地址https://gitcode.com/GitHub_Trending/de/deepagents点击查看免费下载本篇技术指南以 deepagents 评测仓库中cb-cloud-21任务为标本完整拆解 上下文检索评测集context-retrieval-evals中跨文件计数cross_file_counting类任务的设计与实现从任务指令、Harbor 任务目录结构、多文件合成语料到基于 LLM 的model_judge评分链路与难度标定机制。读完本文你将掌握如何阅读、运行并复现一个 Context-Bench 派生评测任务并理解其整份语料交付、Agent 自行检索聚合的设计意图。一、任务背景context-retrieval-evals 与 Context-Benchcb-cloud-21位于 libs/evals/datasets/context-retrieval-evals/ 数据集目录下是 deepagents 评测体系中30 个上下文检索任务之一。根据该数据集根目录的 README.md这 30 个任务全部派生自Context-BenchLetta 的letta-evals仓库中cloud套件其核心评测目标非常明确每个任务都会把**整份语料10 个文件**交付给 AgentAgent 无法预先推断哪些文件是关键必须自己检索、关联、聚合才能作答。这保证了评测的不是文件定位能力而是真正的多文件跨库检索与多跳推理能力。cb-cloud-21是该 30 任务集中被正式采样的一个对应filesystem_cloud.jsonl的第 21 条记录0-based 索引其question_type为cross_file_counting源难度为medium。二、任务指令解读cb-cloud-21 的题目长什么样任务的唯一题目文件是 instruction.md其全文如下How many total records (pets, credit cards, insurance policies, bank accounts, and internet accounts combined) does the person with the most vehicles among all residents of the same state as the owner of the pet named Dwayne have? Use only the files under /app/files. Write your final answer (and nothing else) to /app/answer.txt.这是一道典型的多跳跨文件计数题答案键ground truth为15记录在 tests/case.json 中{input: How many total records (pets, credit cards, insurance policies, bank accounts, and internet accounts combined) does the person with the most vehicles among all residents of the same state as the owner of the pet named Dwayne have?, ground_truth: 15}从题目结构可以拆出 Agent 必须完成的推理链在pets.txt中定位名为Dwayne的宠物找到其主人owner在addresses.txt中查该主人的居住州state找出该州所有居民在vehicles.txt中统计这些居民各自的车辆数量锁定车辆最多的人跨pets.txt、credit_cards.txt、insurance_policies.txt、bank_accounts.txt、internet_accounts.txt五个文件把此人名下的宠物、信用卡、保险单、银行账户、互联网账号全部计数并求和。指令的第二段规定了严格的执行边界只能使用/app/files下的文件最终答案且只能写答案本身写入/app/answer.txt。这既是可复现的 I/O 协议也是后面评分链路读取提交物的约定位置。三、Harbor 任务目录结构每个文件的职责cb-cloud-21作为一个自包含的 Harbor 评测任务目录内每个文件各司其职路径作用instruction.md任务指令题目 执行约束即上文全文environment/Dockerfile沙箱运行镜像基于python:3.12-slim构建期预装curl/ca-certificates并把语料COPY files/ /app/files/environment/files/10 个语料文本文件git-ignored运行时由 populate 恢复solution/solve.sh参考答案脚本直接把15写入/app/answer.txttests/case.json每题唯一的问题 答案键唯一被 git 提交的 per-task 文件tests/test.sh、judge.py、rubric.txt评分器模板git-ignored由 populate 从单一副本恢复task.toml任务元数据与网络策略声明3.1 沙箱环境为什么构建期就装 curlenvironment/Dockerfile 的注释揭示了设计动机FROM python:3.12-slim # Pre-install curl at build time (the build phase has network) so the # in-sandbox agents runtime bootstrap skips apt; runtime egress is then # all-HTTPS via the tasks network allowlist. RUN apt-get update \ apt-get install -y --no-install-recommends curl ca-certificates \ rm -rf /var/lib/apt/lists/* COPY files/ /app/files/即构建阶段有网络所以在镜像构建期就把 curl 装好使 Agent 在沙箱运行期无需执行apt从而让运行期的全部出站流量都收敛到任务网络白名单覆盖的 HTTPS 端点。该 Dockerfile 与.dockerignore均由生成器在 harbor_adapters/contextbench/adapter.py 中按模板写出见下文。3.2 task.toml元数据与网络白名单task.toml 是任务的身份证version 1.3 [metadata] source contextbench suite cloud difficulty medium source_difficulty medium question_type cross_file_counting [environment] network_mode allowlist allowed_hosts [astral.sh, *.astral.sh, github.com, *.githubusercontent.com, pypi.org, *.pythonhosted.org, api.smith.langchain.com, api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai, *.baseten.co, api.fireworks.ai, ollama.com, api.groq.com, integrate.api.nvidia.com, api.x.ai]关键点difficulty是权威难度桶source_difficulty保留 Context-Bench 原始标签作为溯源两者当前都是medium但经标定后difficulty可能被覆盖见第六节network_mode allowlist是白名单而非断网沙箱内的 langgraph/dcode Agent 必须访问包镜像pypi.org等和所选模型的 APIapi.anthropic.com、api.openai.com、openrouter.ai等才能完成引导与作答但任意网页访问被阻断从而防止 Agent 通过网络搜答案。从生成器源码 adapter.py 可以看到该白名单的完整生成逻辑——它覆盖了评测工作流可选的每一种模型供应商仅限 API 端点绝不包含答案源。四、多文件合成语料Agent 面对的信息海洋每个任务的语料都是完整的 10 个文本文件单一副本存放在 harbor_adapters/contextbench/vendor/files/addresses.txt 地址含 state 字段 bank_accounts.txt 银行账户含 balance credit_cards.txt 信用卡 employments.txt 雇佣信息 insurance_policies.txt保险单 internet_accounts.txt 互联网账号 medical_records.txt 医疗记录 people.txt 人物主档含 pers-XXXX 唯一 ID pets.txt 宠物含 owner 引用 vehicles.txt 车辆含 owner 引用以cb-cloud-21解题链涉及的几个文件为例其格式为实体块 键值字段pets.txt中Dwayne的记录约 3650 行处### pet-0609 (owner: pers-0327) pet_id: pet-0609 name: Dwayne species: Dog breed: Unknownvehicles.txt的块首格式### veh-0001 (owner: pers-0001) vehicle_id: veh-0001 make: Johnson LLC model: Fuchsia year: 2013 license_plate: FFS 836addresses.txt提供跨文件关联所需的state字段### addr-0001 (owner: pers-0001) address_id: addr-0001 street: 55075 Tammy Spurs city: Smithburgh state: Wyoming postal_code: 76537 country: United Statespeople.txt则用pers-XXXX作为全局实体 ID把各文件串联起来。语料规模相当可观整份语料约 6.47 万行例如people.txt有 1500 行、pets.txt5742 行、vehicles.txt6748 行、bank_accounts.txt14096 行——这正是评测的检索压力来源答案必须靠跨文件 join 与聚合得出任何单个文件都不足以直接作答。五、解题推演cross_file_counting 的标准动作把上一节的推理链落到语料格式上Agent 的求解过程可以概括为五步均需调用文件检索工具锚点定位在pets.txt检索name: Dwayne得到### pet-0609 (owner: pers-0327)锚定主人 IDpers-0327州域解析在addresses.txt检索owner: pers-0327的所有地址提取其state得到同州居民集合车辆排序在vehicles.txt中按owner:分组统计该州每位居民的车辆数找出车辆最多者题目未设平局说明直接取最大值跨文件计数以该居民 ID 为键分别在pets.txt、credit_cards.txt、insurance_policies.txt、bank_accounts.txt、internet_accounts.txt中统计其名下记录数求和输出五类记录数相加结果写入/app/answer.txt。作为对照参考答案脚本 solution/solve.sh 极其简洁——它代表标准答案而非解题过程#!/bin/sh set -eu printf %s\n 15 /app/answer.txt15即为五类记录的总和与tests/case.json的ground_truth一致。该脚本同样由生成器在 adapter.py 中以shlex.quote(answer)安全写入避免特殊字符注入问题。六、评分机制LLM model_judge 而非字符串比对一个重要的评测设计是cb-cloud-21 的成绩不是答案是否等于 15的字符串比对而是由 LLM 充当model_judge按照 rubr ic 打分。评分链路的三要素分别是tests/test.sh验证器入口仅一行直接调用python3 /tests/judge.pytests/judge.py在沙箱内对上游 Lettaletta-evals的RubricGrader的忠实复刻OpenAI provider 版本tests/rubric.txt逐字复刻自上游的评分 rubr ic单一副本在 harbor_adapters/contextbench/vendor/rubric.txt。judge.py的工作方式见 templates/judge.py从/tests/case.json读取input/ground_truth从/app/answer.txt读取submission用string.Formatter().vformat填充 rubr ic 模板无系统提示词、无包装调用 Chat Completions 接口强制json_schema响应格式{score: float in [0,1], rationale}温度规则与上游一致o1/o3/gpt-5系列推理模型使用temperature1.0这些模型 API 拒绝 0.0其余模型使用0.0score clamp(score, 0.0, 1.0)任何异常按上游规则记 0.0最多重试 5 次结果写入/logs/verifier/reward.txt。rubric 定义了明确的打分档位只有 0.0 / 0.5 / 1.0无部分分1.0 正确数字格式等价$145,315.33145315.33、数字单词等价two dogs2、姓名大小写不敏感、次要措辞差异可接受、单位可省略问车辆时可答44 vehicles0.5 仅拒绝Agent 明确拒绝作答如我没有权限且未尝试任务0.0 错误答案不同、找不到本应存在的答案、缺失关键数值、给出多个答案且未明确最终答案。此外评分使用的 judge 模型来自 harness 注入的环境变量JUDGE_MODELS默认回退gpt-5.6-luna提交物取自/app/answer.txt这两处是有意的偏差设定见judge.py文件头注释。七、难度标定与数据集维护从生成到冻结cb-cloud-21的medium难度并非拍脑袋。数据集 README 说明30 个任务是从 100 个源任务中代表性抽样而来抽样依据是 gpt-5.6-terra 与 gpt-5.6-luna 各 6 次 rollout 的配对结果difficulty与source_difficulty保存的是 Context-Bench 源难度分层2 easy · 10 medium · 18 hard而非事后按模型表现贴的标签。cb-cloud-21在配对标定中 Terra 与 Luna 均为 6/6 pass6类型为cross_file_counting见 datasets/context-retrieval-evals/README.md 的任务表与 calibration.json。数据集的单一来源single-sourced维护策略非常值得借鉴语料environment/files/下的 10 个文件在vendor/files/只有一份git-ignored运行时通过 populate 恢复到每个任务目录评分器test.sh/judge.py/rubric.txt在templates/与vendor/rubric.txt各只有一份同样是 git-ignored 的每任务不变量只有tests/case.json题目 答案键按任务提交。相关逻辑全部落在 adapter.pygenerate_task/populate_corpus/stamp_calibrated_tiers三个核心函数与 main.pyCLI 驱动中并有 test_contextbench_main.py 覆盖包括冻结 30 任务集合与 calibration 对齐、--populate从 vendor 恢复被 git-ignored 的语料与评分器、任务生成幂等性、白名单必须包含全部模型供应商、以及--stamp-tiers用标定结果覆盖difficulty同时保留source_difficulty溯源。八、本地运行与复现由于语料和评分器在 git 中被忽略本地运行前必须先 populate。数据集 README 给出的标准流程为# 从单一 vendored 副本恢复每个任务的语料与不变量评分器 uv run python -m harbor_adapters.contextbench.main --populate datasets/context-retrieval-evals # 然后按 Harbor 方式运行数据集 uv run harbor run --path datasets/context-retrieval-evals ...生成器 CLImain.py还支持按任务 ID 单独生成或按--limit批量生成前 N 个 cloud 任务例如# 只生成/重建 cb-cloud-21 uv run python -m harbor_adapters.contextbench.main \ --output-dir datasets/context-retrieval-evals --task-ids cb-cloud-21若需把标定后的权威难度写回会覆盖task.toml中的difficulty而保留source_difficultyuv run python -m harbor_adapters.contextbench.main \ --stamp-tiers datasets/context-retrieval-evals --calibration path/to/calibration.json在 CI 场景harbor.yml中构建任务镜像前会自动执行--populate保证每个任务的镜像都包含完整语料。九、小结cb-cloud-21 教给我们什么cb-cloud-21是一个浓缩了 deepagents 上下文检索评测全部设计原则的标本整份语料交付——Agent 必须先检索而非定位这是对真实世界多文件知识库的模拟跨文件计数——答案是五类记录之和要求检索、join、聚合三阶段能力白名单网络——允许 Agent 访问包镜像与模型 API但阻断任意网页杜绝作弊式答案查找LLM judge 评分——rubric 驱动的容错打分接受数字格式、措辞与单位差异而非僵硬字符串比对单一来源 标定闭环——语料与评分器只存一份per-task 仅提交case.json难度由标定数据回写。对于希望构建自己的多文件检索 多跳推理评测集的开发者cb-cloud-21所在的 context-retrieval-evals 数据集与其生成器 harbor_adapters/contextbench、评分复刻 templates/judge.py 构成了一个可以直接照搬参考的完整范式。赞分享人工智能大模型AI AgentAgent 框架自主智能体工具调用代码智能体MCP Clients【免费下载链接】deepagentsThe batteries-included agent harness.项目地址https://gitcode.com/GitHub_Trending/de/deepagents点击查看免费下载相关推荐deepagents 上下文检索评测任务深度解析以 cb-cloud-67 多跳链条题为例deepagents 上下文检索评测任务深度解析以 cb cloud 67 多跳链条题为例 本文以 deepagents 仓库中 Harbor 评测数据集 c人工智能大模型AI AgentAgent 框架自主智能体工具调用代码智能体MCP ClientsAI 技能BELLE-ChatGPT评测对比1000条中文指令任务上的响应质量分析BELLE ChatGPT评测对比1000条中文指令任务上的响应质量分析 引言中文大模型的实战考验 你还在为选择合适的中文大模型而烦恼吗在AI驱动的智能交人工智能大模型NLP微调预训练RLHF模型评测数据集多模态语音PowerInfer 长上下文召回评测llama-passkey 示例的 Passkey 检索任务原理与实战PowerInfer 长上下文召回评测llama passkey 示例的 Passkey 检索任务原理与实战 Passkey 检索任务是评估大语言模型在超长上人工智能大模型推理引擎本地部署上一篇image.nvim终极指南如何在Neovim中完美显示图像下一篇Twikit社区功能详解如何高效管理Twitter社区和成员 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考