Skip to content

agent/runtime: integrate Harbor SkillsBench as the first Harbor benchmark onboarding example #143

Description

@Shuo-O

Issue Draft: 接入 Harbor benchflow/skillsbench 作为 agent benchmark 范例

建议标题

feat(agent): integrate Harbor SkillsBench as the benchmark integration example

背景

agent 模块主链已经设计完成,后续需要一个“其他同学可以照着接”的 Harbor dataset 范例。

截至 2026-04-02,我建议优先选择 Harbor registry 上的 benchflow/skillsbench

  • Harbor 当前页面展示 87 个任务
  • 任务名称覆盖代码调试、文档处理、数据比对、仓库分析等真实工作流
  • 能比较自然地映射到 agent 模块的 installed_client + agent_runtime + agent_eval_kits 主链

注意:SkillsBench 官方站点文案仍写 84 个任务,因此本 issue 应以 Harbor registry 当前内容为准,不要求任务数和论文/官网完全一致。

为什么选 SkillsBench

从 Harbor registry 可见的任务名来看,这个数据集具备比较强的“典型性”:

  • react-performance-debugging
  • gh-repo-analytics
  • pptx-reference-formatting
  • pdf-excel-diff

从 SkillsBench 官方文档来看,它还包含一批需要外部 API 或较重资源的任务,例如:

  • gh-repo-analytics
  • scheduling-email-assistant
  • speaker-diarization-subtitles
  • trend-anomaly-causal-inference
  • video-tutorial-indexer

这意味着它能作为一个很好的接入样例,帮助我们把下面这些问题一次性走通:

  • Harbor dataset 的 sample 标准化
  • 多类型任务的 instruction / cwd / env 抽取
  • secret / heavy task 的排除策略
  • agent artifact 和 verifier contract 的统一输出

目标

benchflow/skillsbench 接到 GAGE 的 agent runtime 主链中,形成一份可运行、可测、可扩展的 benchmark 接入范例。

范围

本 issue 包含

  • 新增 skillsbench 对应的 benchmark kit
  • 新增最小 smoke dataset / smoke config
  • 跑通 installed_client 路径
  • 完成 verifier 接线
  • 增加最小单测和一条 smoke 回归
  • 产出一份面向后续接入者的 sample / config 约定

本 issue 不包含

  • 一次性跑完整个 SkillsBench 全量任务
  • 处理所有需要第三方 API key 的任务
  • 为所有 multimodal / heavy task 一次性补完基础设施

建议分阶段实施

Phase 1: 可稳定回归的 smoke 子集

先挑选一组“不依赖 secret、构建负担适中、能覆盖多种任务类型”的子集,跑通主链。

建议显式排除官方文档里已知的高风险任务:

  • gh-repo-analytics,需要 GH_AUTH_TOKEN
  • mhc-layer-impl,需要 Modal token
  • pedestrian-traffic-counting,需要模型 API key
  • pg-essay-to-audiobook,需要 OPENAI_API_KEYELEVENLABS_API_KEY
  • scheduling-email-assistant,需要额外 token 且有挂载约束
  • speaker-diarization-subtitles,Docker build 容易 OOM
  • trend-anomaly-causal-inference,需要 ANTHROPICOPENAI
  • video-filler-word-remover,需要 OPENAI_API_KEY
  • video-tutorial-indexer,需要 OPENAI_API_KEY

Phase 2: 扩大覆盖面

在 Phase 1 稳定后,再评估:

  • 是否纳入外部 API 任务
  • 是否增加多模态任务
  • 是否需要专门的 remote environment / artifact collector

建议实现落点

代码

  • src/gage_eval/agent_eval_kits/skillsbench/
  • src/gage_eval/role/adapters/dut_agent.py
  • 如需 native verifier,再评估是否新增 src/gage_eval/agent_runtime/verifier/skillsbench.py

配置

  • config/custom/skillsbench/smoke_installed_client_skillsbench.yaml
  • config/custom/skillsbench/smoke_skillsbench.jsonl

测试

  • tests/unit/agent_eval_kits/test_skillsbench_kit.py
  • 如需 verifier 单测,再加 tests/unit/agent_runtime/test_skillsbench_verifier.py

设计要求

sample contract

至少要明确:

  • instruction 从哪里取
  • cwd / workspace_root 从哪里取
  • env / metadata 怎么透传
  • 哪些 task 需要额外 runtime surface

runtime contract

必须明确:

  • agent_runtimes[].benchmark_kit_id = "skillsbench"
  • 使用哪种 environment kind
  • 初始 smoke 是否只要求 terminal + fs

verifier contract

必须明确:

  • SkillsBench 的成功/失败结果如何被 GAGE 统一成 eval_result
  • agent 产物如何映射到 verifier 输入
  • 是否先复用 judge_adapter,还是直接实现 dataset 专属 verifier

验收标准

  • smoke config 可解析、可启动
  • 至少 1 组 SkillsBench smoke task 在本地稳定跑通
  • 运行后能稳定产出 stdout.logtrajectory.json 和标准化 eval_result
  • 有最小单测覆盖 prepare_inputs / finalize_result / verifier input
  • 文档说明清楚哪些任务被 Phase 1 排除以及原因

开放问题

  1. SkillsBench 在 Harbor registry 和官方站点的任务数不一致,最终以哪个为准
  2. verifier 是优先对接 Harbor 原生 oracle,还是先做 GAGE 内部统一包装
  3. Phase 1 是否只做无密钥子集,还是允许通过环境变量注入少量 secret

参考链接

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions