SuperAPI AI 工具集

add-bench-scenario

通用与其它

查看项目

更新于 10-16 04:57

技能介绍

用途:指导在 remindb 的 benchmark 套件(internal/bench/)中新增一个场景,比较“用 remindb 工具完成 X 消耗多少 token”与“用 grep / cat / find 完成 X 会消耗多少 token”。注意这不是 Go 的 testing.B 基准(后者位于 pkg/*/bench_test.go)。输出是经 text/tabwriter 渲染的 token 节省表,由 remindb bench CLI 子命令调用,并由 scripts/bench-agents.sh 端到端执行。

主要能力:新增场景通常改两个文件,如需 CLI 标志则三个:internal/bench/scenarios.go 添加 benchXxx(ctx, session, srcDir, ...) (scenarioResult, error);internal/bench/bench.go 在 Run 中接线并追加到 results;必要时在 cmd/remindb 的 bench 子命令上暴露新 flag 并传入 bench.Config。场景函数需成对测量同一答案的两条路径:naive 路径(agent 用 shell 工具需读取的 token 数)与 remindb 路径(工具响应的 token 数),返回 scenarioResult{name, naiveTok, remindbTok};多输入场景返回 []scenarioResult,每行以输入为后缀命名。三条契约:两侧都用 tokens.Estimate(string);naive 基线要贴近真实替代方案(tree 用 find + cat *,search 用 grep + cat 匹配内容,而非仅 wc -c 或 grep);用 callTool(ctx, s, name, args) 而非裸 s.CallTool。

使用方式:参照 benchTree、benchSearch、benchFetch 编写;行名用小写、连字符,可按工具类别加前缀(如 search:rate-limit),长度控制在约 30 字符内。构建与运行:go build ./... && ./remindb bench --db <path> --dir <path>;完整套件用 scripts/bench-agents.sh。仅在场景需要 bench.Config 中不存在的输入时新增字段,并设置合理默认值以免破坏现有 bench-agents.sh。

限制与常见错误:两侧使用不同 tokenizer 会破坏对比;对 []byte 调用 tokens.Estimate 前需先转字符串;当前契约是 fail-fast,Run 返回首个错误,对有预期部分失败的模式应在场景内处理并输出 example:skipped;不要在场景内直接用 cfg.DBPath(stageBench 会把 DB 与源码复制到 /tmp,应使用 stage.dbPath);新增按 agent 输入的场景需更新 bench-agents.sh 的查询列表,否则 CI 式脚本不会覆盖。交叉参考:.claude/rules/go-concise.md、.claude/skills/add-mcp-tool/SKILL.md、internal/bench/render.go(表格渲染,通常无需改动)。具体价格等信息资料未提供。