中文 | English
一个让大模型当「交警」的基准测试:在没有红绿灯的繁忙十字路口,模型只能通过结构数据化观测交通状况, 然后使用 tool_call 来调度车辆与行人, 最终余额就是得分。
天梯榜单在这里: https://silicon-conductor-bench.kcores.com/
工具选择与调用可靠性,信息收集,验证提交,空间与规则推理,时间上的预判与节奏控制,中断后的恢复,异常处置链,成本约束下的动作效率
模型需要同时看6个事情: 上下文里能不能保住车辆与车道身份,注意力会不会偏科,工具调用准不准,观测—试算—提交的序列是否像样,空间与因果推理是否成立,以及在抢行、事故和扣费下的博弈是否划算
- 下游溢流与死锁:出口满了还放车,车就会卡在路口中央锁格。
- 异构车流:乘用车、出租车、小巴、公交、校车、货车、危化品罐车、摩托车、特殊车辆,长度、起步和计价各不相同。
- 行人与横道几何:每条路线经过进口侧和出口侧两条斑马线,判断错了就会撞人。
- 司机抢行:耐心耗尽的司机会闯红灯、跟车闯入、加塞。
- 突发事件:抛锚、事故、紧急车队,需要派拖车、清障、绕行。
- 部分可观测与中断恢复:路口中心占用要付费查询,闯红灯等事件会打断睡眠。
模型可用的工具包括 inspect_junction、inspect_lane_queue、inspect_crosswalk、inspect_guidance、inspect_incident、dry_run_admit、commit_schedule、dispatch_tow_truck、order_accident_clearance、dispatch_emergency_convoy、guide_inbound_lane_change、reroute_queue_around_stall、set_lane_detour、hold、sleep 等。事故、抛锚、紧急车和车道诱导相关工具只在当前态势需要时出现。每次决策和每次非终结工具调用都要扣费。
项目同时内置了 random、longest-queue、hold、balanced、balanced-bus 等基线策略,以及一个能看到未来需求的 search 规划器,用来估计分数天花板。
需要 Node.js 22 或更高版本。
npm install
cp .env.example .env # 填写 OPENAI_API_KEY、OPENAI_BASE_URL、OPENAI_MODEL
npm run bench -- --ticks 400 --seed 63916 --plain任何 OpenAI 兼容接口都可以接入。连跑多场:
npm run bench:runs -- --parallel 6 --runs 3 --env .env.deepseek-flash --env .env.deepseek-v4-pro -- --seed 63916 --plain跑基线测试(不调用模型):
DOTENV_CONFIG_PATH=.env.baseline-balanced npm run bench -- --ticks 200 --seed 63916 --plain每场的 API 日志、报告和回放写在 logs/。打开 3D 回放页面:
npm run replay:dev完整的参数、计分规则、观测格式、失败续跑和产物说明见 USAGE.zh.md。
开局余额 INITIAL_BALANCE(默认 1000),最终余额就是得分。车辆驶离路口按乘员计收入,合法放行的行人过街有奖励;延误、上游积压、事故锁格、撞人、未服务车辆、每次决策和工具调用都会扣分。所有数值都可以在 .env 里调整,模板见 scripts/env.template。
欢迎提交新模型的跑分。只需要用种子 63916, ticks 200 (--ticks 200 --seed 63916) 跑 3 场,然后把 logs/ 里的产物作为 PR 提交。
-
复制
.env.example为.env.<模型名>,填好接口地址、密钥和模型名,其余规则参数保持默认。 -
跑 3 场:
npm run bench:runs -- --runs 3 --env .env.<模型名> -- --seed 63916 --plain
-
确认 3 场都已写出报告。有失败的场次时,用
npm run bench:runs -- --list-failed查看并续跑。 -
把这 3 场在
logs/下生成的文件(api-log_*、report_*、replay_*、run_*等)提交到 PR。logs/在.gitignore里,需要用git add -f logs/<文件名>添加。
不要提交 .env.* 文件,里面有你的 API 密钥。PR 描述里请写明模型名、服务商和 .env 里改过的非默认参数(比如 OPENAI_MAX_TOKENS)。