dsh-eval-guard 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
Binary file
Binary file
Binary file
Binary file
package/lib/index.js CHANGED
@@ -1352,118 +1352,87 @@ const TASKS = [
1352
1352
  description: "夺旗 2–15 人 bot;解压 workspace.zip,提交 workspace/submission/bot.cpp。"
1353
1353
  }
1354
1354
  ];
1355
- /** Common workspace/clock sentence, keeping the original prompt's wording. */
1356
- function clockLine(minutes) {
1357
- return "本次是连续 " + String(minutes) + " 分钟的单次任务,请充分利用时间持续改进,不要提前交卷。";
1358
- }
1359
- /** The tank task definition. */
1355
+ /** The tank task definition (original prompt; only halftime mechanics removed). */
1360
1356
  const TANK_DEFINITION = {
1361
1357
  id: TANK_TASK,
1362
1358
  label: TANK_TASK_LABEL,
1363
1359
  description: TASKS[0].description,
1364
1360
  asset: path.join(packageRoot(), "assets", "tank", "workspace.zip"),
1365
- prompt(blacklist, options) {
1366
- const minutes = options.minutes ?? 90;
1361
+ prompt() {
1367
1362
  return [
1368
1363
  "按照要求编写尽可能强的坦克大战 bot。你的对手是其他顶尖 AI 模型写的 bot,它们可能主动设计战术。基准是一个中等强度、思路常规的 bot,它在正式比赛中是 0 分线;战胜基准不代表足够强,正式对手远强于基准。正式赛是 1 对 1 循环赛,用 Bradley-Terry 模型拟合实力值。",
1369
1364
  "",
1370
- "解压 workspace.zip,阅读 README.md 和 RULES.md,然后开始。本次是连续 " + String(minutes) + " 分钟的单次任务,从对话开始时计时。",
1365
+ "解压 workspace.zip,阅读 README.md 和 RULES.md,然后开始。",
1371
1366
  "",
1372
- "要点:",
1373
- "- 时间规则:连续 " + String(minutes) + " 分钟;clock.py 从解压那一刻开始计算,实际计时从对话开始计算,它只能作为参考,请尽快解压以减小误差;到点会被强制终止;",
1367
+ "比赛是连续 90 分钟的单次任务:",
1368
+ "- 你有 90 分钟修改 bot,从对话开始计时;到 90 分钟强制停止;",
1369
+ "- 最终只看 bot 的强度,提前交卷没有任何好处;觉得没什么可改了,先换一个思路再试;",
1374
1370
  "- 到点时 workspace/submission/bot.cpp 是什么就交什么:不要让它长时间停在编译不过的状态;",
1375
1371
  "- 允许使用本地工具、对战和复盘;禁止联网,禁止求助其他模型(包括启动子代理:subagent、Task / Agent 工具、后台并行代理之类),除主办方发给你的材料外禁止查看其他选手的资料;",
1376
1372
  "- 这台机器上同时运行着其他程序:只能结束你自己启动的进程(按进程号),不要按名字批量结束进程;",
1377
1373
  "- 只能读写当前工作区内的文件,包括 /tmp 在内的其他位置都不能访问;",
1374
+ "- clock.py 从解压那一刻开始计算,实际计时从对话开始计算,它只能作为参考,请尽快解压以减小误差;",
1378
1375
  "- 不要向我提问,也不要等待我确认。",
1379
1376
  "",
1380
- "完成后,用几句话简述你的策略。",
1381
- "",
1382
- "## 本次评测禁止调用的工具",
1383
- "",
1384
- blacklist.length === 0 ? "(无)" : blacklist.join("\n")
1377
+ "完成后,用几句话简述你的策略。"
1385
1378
  ].join("\n");
1386
1379
  }
1387
1380
  };
1388
- /** The warehouse single-run optimization task. */
1381
+ /** The warehouse single-run optimization task (original main-programmer prompt, minimal changes). */
1389
1382
  const WAREHOUSE_DEFINITION = {
1390
1383
  id: WAREHOUSE_TASK,
1391
1384
  label: WAREHOUSE_TASK_LABEL,
1392
1385
  description: TASKS[1].description,
1393
1386
  asset: path.join(packageRoot(), "assets", "warehouse", "workspace.zip"),
1394
- prompt(blacklist, options) {
1395
- const minutes = options.minutes ?? 90;
1387
+ prompt() {
1396
1388
  return [
1397
- "这是一场 AI 编程赛。你接手了一个代码混乱的老系统:src/ 里是一个仓储机器人调度仿真系统,功能正确,但运行很慢。你的任务是在输出与基线逐字节相同的前提下,让 src/ 尽可能快。",
1389
+ "这是一场 AI 编程赛。你接手了一个代码混乱的老系统:src/ 里是一个仓储机器人调度仿真系统,功能正确,但运行很慢。你的任务:在输出完全不变的前提下,让它尽可能快。",
1398
1390
  "",
1399
1391
  "当前目录里有 workspace.zip。请先自行解压,进入 workspace 文件夹,阅读 TASK.md,然后完全按照 TASK.md 的要求独立完成任务。",
1400
1392
  "",
1401
1393
  "要点(详见 TASK.md):",
1402
1394
  "- 只能修改 src/;编译命令固定为 g++ -O2 -std=c++20 src/*.cpp,只用 C++ 标准库;",
1403
1395
  "- 对任何合法输入(以 tools/check_input.py --full 为准),输出都必须与基线逐字节相同;SPEC.md 是过时的旧文档,一切以基线代码的实际行为为准;",
1404
- "- 本次是连续 " + String(minutes) + " 分钟的单次任务;clock.py 从解压那一刻开始计算,实际计时从对话开始计算,它只能作为参考,请尽快解压;",
1405
- "- 你的结果会与其他强 agent 在同一口径下比较,而不只是和基准比较;不要提前交卷,充分利用时间继续优化和验证;",
1396
+ "- 本次是连续 90 分钟的单次任务;clock.py 从解压那一刻开始计算,实际计时从对话开始计算,它只能作为参考,请尽快解压;",
1406
1397
  "- 只能读写当前文件夹里的文件;可以使用本环境的所有工具,但不能联网搜索;",
1407
1398
  "- 不要向我提问,也不要等待我确认,直到完成为止。",
1408
1399
  "",
1409
- "完成后请告诉我:src 文件夹的完整路径,并用几句话总结你做了什么。",
1410
- "",
1411
- "## 本次评测禁止调用的工具",
1412
- "",
1413
- blacklist.length === 0 ? "(无)" : blacklist.join("\n")
1400
+ "完成后请告诉我:src 文件夹的完整路径,并用几句话总结你做了什么。"
1414
1401
  ].join("\n");
1415
1402
  }
1416
1403
  };
1417
- /** Land bot task, adapted from the original participant prompt. */
1404
+ /** Land bot task: original participant prompt, unchanged. */
1418
1405
  const LAND_DEFINITION = {
1419
1406
  id: LAND_TASK,
1420
1407
  label: LAND_TASK_LABEL,
1421
1408
  description: TASKS[2].description,
1422
1409
  asset: path.join(packageRoot(), "assets", "land", "workspace.zip"),
1423
- prompt(blacklist, options) {
1410
+ prompt() {
1424
1411
  return [
1425
1412
  "这是一场正式的 AI 编程对抗赛,你的对手是其他顶尖 AI 模型写的 bot,它们会主动切断你、抢你的地。比赛结果会公开排名,请拿出你的最高水平。",
1426
1413
  "",
1427
- "请解压当前目录的 workspace.zip,进入 workspace 文件夹,按 TASK.md 的要求编写一个尽可能强的圈地对战 bot,保存为 workspace/submission/bot.cpp。" + clockLine(options.minutes ?? 90) + "只能读写当前文件夹里的文件,不能联网搜索,不要向我提问。",
1428
- "",
1429
- "## 本次评测禁止调用的工具",
1430
- "",
1431
- blacklist.length === 0 ? "(无)" : blacklist.join("\n")
1414
+ "请解压当前目录的 workspace.zip,进入 workspace 文件夹,按 TASK.md 的要求编写一个尽可能强的圈地对战 bot,保存为 workspace/submission/bot.cpp。时间预算约 60 分钟,请自己把握进度,做完就可以结束;超过 90 分钟会被强制停止。只能读写当前文件夹里的文件,不能联网搜索,不要向我提问。"
1432
1415
  ].join("\n");
1433
1416
  }
1434
1417
  };
1435
- /** Bomberman bot task, adapted from the original participant prompt. */
1418
+ /** Bomberman bot task: original participant prompt, unchanged. */
1436
1419
  const BOMBERMAN_DEFINITION = {
1437
1420
  id: BOMBERMAN_TASK,
1438
1421
  label: BOMBERMAN_TASK_LABEL,
1439
1422
  description: TASKS[3].description,
1440
1423
  asset: path.join(packageRoot(), "assets", "bomberman", "workspace.zip"),
1441
- prompt(blacklist, options) {
1442
- return [
1443
- "按照要求编写尽可能强bot,你的对手是全球其他顶尖ai,可能主动设计战术。基准只是很弱的bot,它在正式比赛为0分线。正式赛会对战多轮,用Bradley-Terry模型拟合实力值。",
1444
- "解压 workspace.zip,阅读 README.md 和 RULES.md,编写支持2–10人的炸弹人 bot。" + clockLine(options.minutes ?? 90) + "允许本地工具、对战和复盘,禁止联网、调用其他AI或查看其他选手资料。提交 submission/bot.cpp,简述策略。",
1445
- "",
1446
- "## 本次评测禁止调用的工具",
1447
- "",
1448
- blacklist.length === 0 ? "(无)" : blacklist.join("\n")
1449
- ].join("\n");
1424
+ prompt() {
1425
+ return ["按照要求编写尽可能强bot,你的对手是全球其他顶尖ai,可能主动设计战术。基准只是很弱的bot,它在正式比赛为0分线。正式赛会对战多轮,用Bradley-Terry模型拟合实力值。", "解压 workspace.zip,阅读 README.md 和 RULES.md,编写支持2–10人的炸弹人 bot。尽量60分钟完成,90分钟必须交卷。允许本地工具、对战和复盘,禁止联网、调用其他AI或查看其他选手资料。提交 submission/bot.cpp,简述策略。"].join("\n");
1450
1426
  }
1451
1427
  };
1452
- /** CTF bot task, adapted from the original participant prompt. */
1428
+ /** CTF bot task: original participant prompt, unchanged. */
1453
1429
  const CTF_DEFINITION = {
1454
1430
  id: "ctf",
1455
1431
  label: CTF_TASK_LABEL,
1456
1432
  description: TASKS[4].description,
1457
1433
  asset: path.join(packageRoot(), "assets", "ctf", "workspace.zip"),
1458
- prompt(blacklist, options) {
1459
- return [
1460
- "按照要求编写尽可能强的 bot,你的对手是全球其他顶尖 AI,可能主动设计战术。基准是一个中等强度、思路常规的 bot,它在正式比赛是 0 分线;战胜基准不代表足够强,正式对手远强于基准。正式赛会对战多轮,用 Bradley-Terry 模型拟合实力值。",
1461
- "解压 workspace.zip,阅读 README.md 和 RULES.md,编写支持 2–15 方的夺旗 bot。" + clockLine(options.minutes ?? 90) + "允许本地工具、对战和复盘,禁止联网、调用其他 AI 或查看其他选手资料。提交 workspace/submission/bot.cpp,简述策略。",
1462
- "",
1463
- "## 本次评测禁止调用的工具",
1464
- "",
1465
- blacklist.length === 0 ? "(无)" : blacklist.join("\n")
1466
- ].join("\n");
1434
+ prompt() {
1435
+ return ["按照要求编写尽可能强的 bot,你的对手是全球其他顶尖 AI,可能主动设计战术。基准是一个中等强度、思路常规的 bot,它在正式比赛是 0 分线;战胜基准不代表足够强,正式对手远强于基准。正式赛会对战多轮,用 Bradley-Terry 模型拟合实力值。", "解压 workspace.zip,阅读 README.md 和 RULES.md,编写支持 2–15 方的夺旗 bot。你有 60 分钟,只看最终 bot 的强度,提前交卷不加分,请充分利用时间持续改进;可以适当超时,但到 90 分钟会强制交卷。允许本地工具、对战和复盘,禁止联网、调用其他 AI 或查看其他选手资料。提交 workspace/submission/bot.cpp,简述策略。"].join("\n");
1467
1436
  }
1468
1437
  };
1469
1438
  /** All task definitions keyed by id. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-eval-guard",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "type": "module",
5
5
  "description": "Evaluation guard for DSH: workspace-only filesystem, no network/subagents, wall-clock limits, and task installation for the meow-ai-arena tank task.",
6
6
  "license": "MIT",