makecindy / makecindy/cindy

建立 Cindy Agent Benchmark:同模型横向对比 Cindy 配置与主流 Agent

Open
#127 0 comments 0 reactions 1 assignee Claimed by @dashhuang View on GitHub
enhancement
Dominant language
TypeScript
Stars
2.7k
Forks
401
Avg merge
21h 48m
Merged PRs (30d)
776

Description

## 背景

[Maka Agent vs Kimi Code 的测试](https://x.com/jakevin7/status/2078726365894021482)使用 Terminal-Bench 2.1,在同一个 Kimi K3、相同 max thinking budget 下比较不同 harness:

- 全量 89 题:Maka 69.7%,Kimi Code 59.6%(+10.1 pp)
- hard 子集 30 题:Maka 63.3%,Kimi Code 43.3%(+20.0 pp)
- paired single run,使用 Harbor reward 判定 Pass@1
- 两侧约束到约 35 output tok/s
- 原作者明确标注为 descriptive、not statistical

我们需要建立 Cindy 自己的、可重复执行的 agent benchmark,而不是只复刻一次结果。它要能回答两个问题:

1. **同一个模型下,Cindy 的不同配置哪个更好?**
2. **同一个模型下,Cindy 与主流 agent 的 harness 能力差多少?**

## 核心口径

主实验矩阵固定为:

`variant × model × task × repetition`

- `variant`:一个外部 agent,或一个有明确名称和配置指纹的 Cindy profile。
- `model`:精确到 provider、模型版本、endpoint/context/thinking 配置,不使用会漂移的裸 alias。
- `task`:固定 dataset revision 中的 task ID。
- `repetition`:同一 cell 的重复编号。

主榜是 **same-model harness benchmark**。所有 paired comparison 必须保持相同的 model、task 和 repetition;某个 agent 不支持指定模型时标记为 `unsupported`,不能偷偷换成该 agent 的原生模型。

可以另做“各 agent 默认/推荐模型”的产品榜,但它回答的是整体产品能力,不能与同模型 harness 榜混算或据此归因 harness 优劣。

## Benchmark 题目从哪里来

主数据集使用官方 [Terminal-Bench 2.1](https://www.tbench.ai/news/terminal-bench-2-1),通过 [Harbor dataset `terminal-bench/terminal-bench-2-1`](https://hub.harborframework.com/datasets/terminal-bench/terminal-bench-2-1/6)执行。

Terminal-Bench 2.1 共 89 题。每道题自带:

- 隔离的 container 环境与初始文件
- 给 agent 的自然语言任务
- 结束状态 verifier/tests
- reference/oracle solution

规则:

- 正式结果只使用固定 revision 的官方题目,不把 Cindy 自己编写的题混入主榜。
- pilot 可从 89 题中选 4~8 题,但 task ID、抽样规则和随机种子必须在运行前写入 manifest。
- hard-30 子集必须在运行前冻结精确 task ID 和公开筛选规则。优先依据本轮测试之外的公开 historical solve rate 选最低 30 题;禁止根据本轮结果事后挑题。
- 数据集 revision、task list、verifier 与 container digest 必须进入结果产物。

## 第一批对比对象

### Cindy variants

- `cindy-production`:当前线上默认配置,作为基线。
- 后续 profile 每次只改变一个可归因维度,例如 tool profile、planning/permission mode、memory/context 策略、compaction 策略或 system prompt。
- 每个 profile 记录 Cindy commit、agent backend/binary version、config digest、tool surface digest、system prompt digest。
- system prompt 变体需先取得产品负责人同意;报告只保存 digest,不公开 prompt 正文。

### 外部 agents

首批适配目标:

- Kimi Code CLI
- Claude Code
- Codex CLI
- Gemini CLI

每个 adapter 必须声明 `supportedModelIds`。只在所选模型的支持交集内生成比较矩阵;不支持的组合在 plan 阶段直接拒绝。

## 公平性约束

同一 paired cell 必须保持:

- 同一精确模型 route、context limit、thinking/reasoning budget
- 同一 task container、初始文件、CPU、内存、网络策略和 deadline
- 同一 provider 账号/限流等级;必要时统一 throughput cap
- 同一环境级权限。agent 自带的 prompt、tool definitions 和调度策略属于被测 harness,不做人工抹平,但必须记录指纹
- 两个 arm 交错/随机顺序执行,减少 provider 时间漂移和机器热状态影响

禁止把 desktop 中运行的 Cindy 与 container 中的 CLI 比较。Cindy 也必须通过 `cindy-headless` adapter 在 Harbor task container 内运行。

## 结果与指标

### Primary

- Pass@1(Harbor verifier/reward)
- 全量 89 题通过率
- 预注册 hard-30 通过率
- 同 model/task/repetition 的 paired wins / losses / both-pass / both-fail

### Secondary

- finished-in-time pass rate
- deadline-killed 数量与通过率
- infra-invalid 数量和覆盖率(不混入普通失败)
- duration / time-to-completion
- input、cache-read、output tokens 与 cost
- 失败类型和逐题结果
- 多次 repetition 时给出置信区间;单次运行必须明确标注 descriptive、not statistical

重试策略必须预先声明。原始 attempt 不可覆盖;infra-invalid 可以按固定策略补跑,但不能人工挑选最好结果。

## 执行阶段

### Phase 0:执行链路验证

- Harbor oracle 跑通前 5 题,确认 dataset/container/verifier 正常。
- 实现 `cindy-headless` Harbor adapter。
- 对每个外部 agent 跑单题 smoke test。
- 验证 timeout、trace、usage、reward 与 infra-invalid 都能正确归一化。

### Phase 1:低成本 pilot

- 1 个模型(优先 Kimi K3,以便复刻原帖口径)。
- `cindy-production` vs Kimi Code。
- 预注册 4~8 题,至少覆盖 coding、system、data/file 与 security 类别。
- 先跑 1 次 repetition;链路稳定后再决定是否补到 3 次。

### Phase 2:完整复刻

- 固定 Kimi K3 与 exact CLI/Cindy revisions。
- 跑 Terminal-Bench 2.1 全量 89 题。
- 输出全量和预注册 hard-30 结果,并与原帖口径并排展示。

### Phase 3:扩展矩阵

- 增加 Cindy 单变量配置实验。
- 增加主流 agents 与更多模型。
- 对重要组合执行至少 3 次 repetition,形成可比较的稳定结果。

## 交付物

- [ ] Secret-free benchmark manifest:固定 dataset、model routes、variants、repetitions、资源与 deadline
- [ ] Immutable plan:展开全部 cell,并有 manifest digest
- [ ] `cindy-headless` Harbor adapter
- [ ] 外部 agent adapters 与 supported-model validation
- [ ] 每次 attempt 的原始 trace/log/reward/usage/identity
- [ ] 归一化结果 JSONL
- [ ] 可审计报告:absolute scores、paired outcomes、hard subset、timeouts、infra-invalid、usage/cost
- [ ] 可复现命令、版本清单与预算预估
- [ ] runner/report 单元测试

## 验收标准

- [ ] 不兼容的 agent/model 组合在执行前失败,不发生隐式换模。
- [ ] Cindy 与外部 agent 在同一个 Harbor task container 契约下运行。
- [ ] 所有 paired 结论都能追溯到相同 model/task/repetition 的原始结果。
- [ ] timeout 与 infra-invalid 不会被静默算作普通失败。
- [ ] manifest 和公开报告不含 API key、token、prompt 正文等敏感信息。
- [ ] 完成 Phase 1 pilot,产出可复跑的 plan、raw results 和 report。
- [ ] 在开始全量付费运行前给出 cell 数量、token/cost 上限和停止条件。

## 非目标

- 不用单一 benchmark 宣称 Cindy 在所有真实用户任务上更强。
- 不把不同模型能力差异包装成 harness 提升。
- 不为了得到更好数字修改 verifier、事后删题或人工修分。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.