ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何用 researcher sdk-runner 跑技能路由基准测试,并用 dry-run 与预算闸门控制调用成本?

2026/9/15 20:55:20 拓冰建站 浏览量
如何用 researcher sdk-runner 跑技能路由基准测试,并用 dry-run 与预算闸门控制调用成本? 如何用 researcher sdk-runner 跑技能路由基准测试并用 dry-run 与预算闸门控制调用成本【免费下载链接】Agent-Skills-for-Context-EngineeringA comprehensive collection of Agent Skills for context engineering, multi-agent architectures, and production agent systems. Use when building, optimizing, or debugging agent systems that require effective context management.项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-Skills-for-Context-EngineeringAgent-Skills-for-Context-Engineering 仓库里的技能语料库带有一套分阶段基准测试其中 Stage 2 的“技能路由基准”router benchmark会真实调用 LLM它把 15 个技能的 activation description 混排后交给模型看模型能否把给定 prompt 路由到正确的技能。每一次 SDK 调用都消耗 Cursor credits所以文档把成本控制作为 runner 的一等公民正式调用前必须通过 dry-run 查看计划与成本预估并且除非显式传入--max-runs、--max-budget-usd或--unsafe-no-cost-caprunner 直接拒绝发起任何 SDK 调用。本文的任务就是在researcher/benchmarks/sdk-runner/下完整跑通路由基准并在花掉额度之前把调用量与成本锁死在预算内。前提条件来自 sdk-runner README 与 package.jsonNode.js 需要 20 以上engines: node 20一个已启用 Privacy Mode 的 Cursor 账号文档要求在跑基准前开启让 eval 流量不进入训练数据以及从 Cursor Dashboard 的 Integrations 页面获取的 API key。准备安装依赖并配置 Cursor 凭据cd researcher/benchmarks/sdk-runner npm install export CURSOR_API_KEYcursor_...API key 用你自己的 key 替换引号内的占位内容。runner 只从显式的环境变量读取CURSOR_API_KEY并把 key 原样传给每次 SDK 调用避免跨租户误用。日志里只会打印 key 的指纹最后 4 位。可选地先做一次类型检查确认代码可编译npm run typecheck先跑 dry-run不花钱地查看执行计划与成本预估dry-run 不要求 API key也不调用 SDKnpm run router:dry-run执行 runRouter.ts 中的--dry-run分支后会依次打印fixture 路径、模型列表、每个 (prompt, model) 的重复次数reps、seed、并发度、resume 状态以及计划规模与成本预估——planned runs、单次调用的估算 token输入 4000 / 输出 400、每个 run 的最大尝试次数MAX_FORMAT_ATTEMPTS为 2用于 format-failure 重试、max SDK invocations计划数 × 2 的最坏情况和est. worst-case total cost。随后输出Dry-run: no SDK calls made.并附带第一条计划项、该次复制下混排后的技能顺序和一条样例 prompt最后以退出码 0 结束。dry-run 也接受同样的参数可以用它预览缩小后的计划例如只看单个模型、只跑 1 个 repnpm run router:dry-run -- --models composer-2 --reps 1这样在正式花钱之前你能确认 fixture 里有多少条 prompt、模型列表是否正确、预估成本是否落在可接受范围内。用 --max-runs 与 --max-budget-usd 设置预算闸门不带任何成本闸门直接执行npm run router:run会被 common.ts 中的resolveConfig拒绝Refusing to run without a cost cap. Pass --max-runs or --max-budget-usd or --unsafe-no-cost-cap.即使传了闸门执行前还有两道硬性检查最坏情况调用数计划数 × 2 次尝试超过--max-runs时抛出Worst-case SDK invocations N exceeds --max-runs M. Increase --max-runs or lower the plan size.预估总成本超过--max-budget-usd时抛出Forecast X USD exceeds --max-budget-usd Y。也就是说闸门在计划阶段而不是跑一半时就会把超预算的 sweep 拦下来。runner 内部的成本常量在 runRouter.ts 中可见单次调用按 4000 输入 / 400 输出 token、每 run 0.012 美元、最多 2 次尝试来估算。仓库当前 fixture 是 50 条 prompt见 router/README.md单模型 3 reps 即 150 个计划 run按 4 个模型全量跑则是 600 个计划 run、最坏 1200 次 SDK 调用。正式执行的命令在 router 基准自己的文档中给出的主路径是npm run router:run -- --max-budget-usd 5开发阶段想只看一个模型时把--models加进去npm run router:run -- --models composer-2 --reps 3 --max-budget-usd 5--models默认值就是composer-2--reps默认 3--seed默认 1控制技能顺序的确定性混排与同分裁决。已发布的 4 模型全量 sweep 复现命令见 2026-05-19 报告node --experimental-strip-types src/runRouter.ts --models claude-opus-4-7,composer-2,gemini-3.1-pro,gpt-5.5 --reps 3 --seed 1 --max-budget-usd 15如果要提速可以用--concurrency 4之类的有界并发默认 1文档建议 4 到 8并提醒遵守 Cursor 速率限制。正式执行路由基准并观察进度带闸门执行后每个计划项完成时打印一行进度包含序号、模型、prompt id、rep 号、状态、耗时与剩余时间估计。状态取自 runRouter.ts 的记录定义finished、format_failure模型输出解析不出严格 JSON重试一次后仍失败才计为失败不给坏输出奖励分、model_unavailable该模型当前不可用记录下来继续跑等。默认行为是 resume目标目录里已有结果文件的计划项会被跳过只有剩余项会被执行启动时会打印resume: N prior results found, M runs remaining。想忽略已有结果、全部重跑时显式加--no-resume。这一点对成本控制同样重要——中断后重新执行同一命令不会把已完成的调用再付一遍钱。验证结果summary、历史文件与渲染报告一次完整执行结束后验证点有三处运行目录researcher/benchmarks/router/results/date-seed/gitignored下的summary.json包含时间戳、repo commit SHA、fixture SHA、seed、模型列表、reps、prompt 数以及每个模型的total、format_failure_rate、top1_accuracy、top3_accuracy。每次运行会向researcher/reports/router-history.jsonl追加一行摘要用于跨 run 的纵向比较该文件同样被 gitignore。终端最后打印summary:对象和raw results in runDir路径。如果要生成带 bootstrap 95% 置信区间、按技能混淆矩阵和最难 prompt 清单的发布级报告用仓库自带的渲染脚本路径按仓库根目录给出python3 researcher/scripts/render_router_report.py \ --results researcher/benchmarks/router/results/date-seed \ --fixture researcher/benchmarks/router/prompts.jsonl \ --output researcher/benchmarks/router/results-published/date.mddate-seed换成你的实际运行目录名例如2026-05-19-1。render_router_report.py 的说明指出输出会被提交、原始 per-run JSON 保持 gitignored。对比基线可以直接看 results-published 目录 下已发布的报告例如 2026-05-19.md 记录了 600/600 可用记录、0 次 format failure、各模型 top-1 在 0.840 到 0.920 之间。可复现性方面每次运行记录 runner 包版本、API key 指纹、运行时的 repo commit SHA、解析出的模型 id、fixture 修订 SHA、seed 与完整配置快照第三方可以用node src/runRouter.ts --config captured-config.json精确复现一次 run。限制与边界成本闸门是执行前的计划级检查--max-budget-usd约束的是预估成本--max-runs约束的是调用次数两者任一触发都会让 runner 拒绝启动而不是中途停止。--unsafe-no-cost-cap能绕过闸门但它把成本保护完全关闭只在明确需要时才用。路由基准Stage 2单次调用较小PLAN.md 估算全量一次在 5 美元以内、不利汇率下 5–15 美元而 Stage 3 effectiveness 基准npm run effectiveness:dry-run/npm run effectiveness:run单任务 token 量级大得多估算 50–200 美元/次本文的路由命令不适用于它成本预估要单独跑 dry-run 查看。模型目录随时间不稳定某个模型不可用时记录为model_unavailable并继续跨版本比较结果时要留意各 run 记录里解析出的模型 id。结果目录researcher/benchmarks/router/results/与历史 JSONL 均不入库只有人工筛选后的报告进入results-published/所以本地跑完想看可分享的产物需要走上面的渲染脚本。【免费下载链接】Agent-Skills-for-Context-EngineeringA comprehensive collection of Agent Skills for context engineering, multi-agent architectures, and production agent systems. Use when building, optimizing, or debugging agent systems that require effective context management.项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-Skills-for-Context-Engineering创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考