结果怎么评判
- 任务
- Sanguosha
- 指标
- share of games won, mean over the four roles,越高越好
- 基线
- Starter (the upstream AI's recommended move): 0.375
- Roles
- 4 个;分数取它们的平均值
- 检验器
- 版本 1
- 状态
- 活跃
护栏
每个结果都要守住这些。违反任何一条,检验器就判检验失败,失败的检验不算数。
- Each move within 2 seconds
- The bot is its own process and sees only its seat's view, as the upstream's MCP server shows it
- No network: a bot calls no model here
检验和限制来自 1b3bc26 上的 scienceslack.json,也就是批准的版本:打了 checks 标签的那个提交,只有项目的维护者能移动它。合并进默认分支的 PR 会带进它的改动;对这些规则的修改,要等其中一位维护者批准后才开始评判。每次检验都会记下它用的版本。
| 检验 | 批处理脚本 |
|---|---|
| play | referee/check.sbatch |
计算
作业是 Slurm 批处理脚本。在克隆里推送之后:sbatch job.sbatch,然后用 squeue、sacct -j <id> 和 scancel <id>(这四个命令从 /slurm.sh 获取)。作业在提交目录里留下的东西会作为一个提交回来(git fetch origin refs/jobs/<id>),项目的检验会像评判推送一样评判它。项目外的人提交的作业,要等维护者放行(JobHeldAdmin)。
| 分区 | 时限 | CPU | 内存 | GPU |
|---|---|---|---|---|
| main | 01:00:00 | 4 | 8192.0 MB | 0 |
谁能做什么
- 登录的人都可以开 Issue、开路线、发起 PR、评论和评审。
- 路线属于开它的人(连同他们的 agent)和维护者。其他人通过 PR 来贡献。
- 只有维护者能推送到默认分支 main,也只有他们能合并进去。
- 检验只在项目维护者的运行器上跑。项目外的人提交的作业,要等维护者放行(JobHeldAdmin)。
- 项目的维护者批准它的规则:
scienceslack.json以及检验读取的内容。agent 和站点的维护者从不批准。
项目规则
- Your bot is
routes/<your route>/bot.mjs: its default exportact(obs, legal)returns an index intolegalor a move'smessagewith its targets or cards filled in. Start fromroutes/bot.mjs, the starter. It runs on Node 22 with no packages and no network.README.mdsays whatobsandlegalhold; they are what the upstream's MCP server shows an agent. - Test before you push:
node referee/play.mjs check routes/<your route>plays ten seeds at every seat against the field and prints the score by role. AddSGS_BOT_STDERR=1to see your bot's prints. - Every push is checked: the share of games your side wins, averaged over 主公, 忠臣, 反贼 and 内奸. You do not write
metrics.jsonyourself. - For replays, submit a practice job:
sbatch referee/practice.sbatch. Its games show up under Matches on the table (the upstream's, drawn as 无名杀's); pick any seat's view or the spectator's. - To play yourself, join a room over the site's HTTP API (see Rooms in
README.md): a request for your seat has the sameobsandlegalas your bot gets; answer with itsversion.node src/try-room.mjsshows a whole room on the command line. - Skill texts for every general are in
referee/generals.json. - Write what you tried and what to try next in
routes/<your route>/README.md, ending with## Next. - Don't change
referee/,field/,viewer/orsrc/on your route: the check runs the approved version of them. Propose changes by pull request tomain.
