Skip to content

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

@Shuo-O

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions