dsh-eval-guard 0.2.3 → 0.3.1

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.
Files changed (221) hide show
  1. package/README.md +91 -13
  2. package/assets/commit0/instance.json +30 -0
  3. package/assets/commit0/workspace.zip +0 -0
  4. package/assets/featurebench/hidden/test_regression.py +690 -0
  5. package/assets/featurebench/instance.json +16 -0
  6. package/assets/featurebench/workspace.zip +0 -0
  7. package/assets/swe-bench-pro/hidden/test.patch +36 -0
  8. package/assets/swe-bench-pro/instance.json +10 -0
  9. package/assets/swe-bench-pro/workspace.zip +0 -0
  10. package/eval/README.md +18 -0
  11. package/eval/arena/arena/README.md +21 -0
  12. package/eval/arena/arena/bt.py +104 -0
  13. package/eval/arena/arena/clock.py +15 -0
  14. package/eval/arena/arena/core.py +265 -0
  15. package/eval/arena/arena/run.cmd +24 -0
  16. package/eval/arena/arena/run.sh +11 -0
  17. package/eval/arena/arena/schedule.py +79 -0
  18. package/eval/arena/arena/tournament.py +183 -0
  19. package/eval/arena/bomberman/bots/README.md +16 -0
  20. package/eval/arena/bomberman/bots/deepseek-v4.1-flash.cpp +447 -0
  21. package/eval/arena/bomberman/bots/doubao-seed-2.1.cpp +542 -0
  22. package/eval/arena/bomberman/bots/glm-5.3.cpp +406 -0
  23. package/eval/arena/bomberman/bots/gpt-6-astra.cpp +768 -0
  24. package/eval/arena/bomberman/bots/gpt-6-sol.cpp +444 -0
  25. package/eval/arena/bomberman/bots/kimi-k3.cpp +432 -0
  26. package/eval/arena/bomberman/bots/mimo-v2.6-pro.cpp +529 -0
  27. package/eval/arena/bomberman/bots/opus-5.5.cpp +548 -0
  28. package/eval/arena/bomberman/bots/qwen-3.8-max.cpp +836 -0
  29. package/eval/arena/bomberman/tournament/README.md +11 -0
  30. package/eval/arena/bomberman/tournament/bt.py +56 -0
  31. package/eval/arena/bomberman/tournament/evaluate.py +199 -0
  32. package/eval/arena/bomberman/tournament/run.py +79 -0
  33. package/eval/arena/bomberman/tournament/schedule-2to10.json.gz +0 -0
  34. package/eval/arena/bomberman/workspace/MANIFEST.json +13 -0
  35. package/eval/arena/bomberman/workspace/README.md +29 -0
  36. package/eval/arena/bomberman/workspace/RULES.md +100 -0
  37. package/eval/arena/bomberman/workspace/baseline.cpp +240 -0
  38. package/eval/arena/bomberman/workspace/clock.py +25 -0
  39. package/eval/arena/bomberman/workspace/engine/arena.py +198 -0
  40. package/eval/arena/bomberman/workspace/engine/build.py +35 -0
  41. package/eval/arena/bomberman/workspace/engine/engine.py +256 -0
  42. package/eval/arena/bomberman/workspace/engine/verify_replay.py +24 -0
  43. package/eval/arena/bomberman/workspace/run.cmd +28 -0
  44. package/eval/arena/bomberman/workspace/run.sh +16 -0
  45. package/eval/arena/bomberman/workspace/viewer/index.html +42 -0
  46. package/eval/arena/ctf/bots/README.md +18 -0
  47. package/eval/arena/ctf/bots/deepseek-v4.1-flash.cpp +601 -0
  48. package/eval/arena/ctf/bots/doubao-seed-2.1-turbo.cpp +320 -0
  49. package/eval/arena/ctf/bots/fable-5.1.cpp +634 -0
  50. package/eval/arena/ctf/bots/glm-5.3.cpp +689 -0
  51. package/eval/arena/ctf/bots/gpt-6-astra.cpp +657 -0
  52. package/eval/arena/ctf/bots/gpt-6.1-sol.cpp +725 -0
  53. package/eval/arena/ctf/bots/kimi-k3.cpp +667 -0
  54. package/eval/arena/ctf/bots/mimo-v2.6-pro.cpp +533 -0
  55. package/eval/arena/ctf/bots/opus-5.5.cpp +645 -0
  56. package/eval/arena/ctf/bots/qwen-3.8-max.cpp +726 -0
  57. package/eval/arena/ctf/bots/sonnet-5.5.cpp +569 -0
  58. package/eval/arena/ctf/tournament/README.md +15 -0
  59. package/eval/arena/ctf/tournament/formal-2to8.json +31 -0
  60. package/eval/arena/ctf/tournament/formal-9to15.json +31 -0
  61. package/eval/arena/ctf/workspace/README.md +41 -0
  62. package/eval/arena/ctf/workspace/RULES.md +119 -0
  63. package/eval/arena/ctf/workspace/arena.py +186 -0
  64. package/eval/arena/ctf/workspace/baseline.cpp +257 -0
  65. package/eval/arena/ctf/workspace/clock.py +15 -0
  66. package/eval/arena/ctf/workspace/core.py +265 -0
  67. package/eval/arena/ctf/workspace/engine.py +389 -0
  68. package/eval/arena/ctf/workspace/run.cmd +24 -0
  69. package/eval/arena/ctf/workspace/run.sh +11 -0
  70. package/eval/arena/ctf/workspace/viewer.html +71 -0
  71. package/eval/arena/land/bots/README.md +17 -0
  72. package/eval/arena/land/bots/deepseek-4.1f@workbuddy#1/bot.cpp +608 -0
  73. package/eval/arena/land/bots/glm-5.3@workbuddy#1/bot.cpp +521 -0
  74. package/eval/arena/land/bots/gpt-6-astra@codex#1/bot.cpp +373 -0
  75. package/eval/arena/land/bots/gpt-6-sol@codex#1/bot.cpp +341 -0
  76. package/eval/arena/land/bots/kimi-k3@workbuddy#1/bot.cpp +492 -0
  77. package/eval/arena/land/bots/mimo-2.6-pro@zcode#1/bot.cpp +652 -0
  78. package/eval/arena/land/bots/mystery-model@zcode#1/bot.cpp +466 -0
  79. package/eval/arena/land/bots/opus-5.5@claude-code#1/bot.cpp +630 -0
  80. package/eval/arena/land/bots/sonnet-5@claude-code#1/bot.cpp +619 -0
  81. package/eval/arena/land/tournament/make_replay_page.py +17 -0
  82. package/eval/arena/land/tournament/rate.py +290 -0
  83. package/eval/arena/land/tournament/round_robin.py +172 -0
  84. package/eval/arena/land/tournament/sparring.cpp +356 -0
  85. package/eval/arena/land/workspace/RULES.md +114 -0
  86. package/eval/arena/land/workspace/TASK.md +46 -0
  87. package/eval/arena/land/workspace/anchors/.build/greedy_f2e6d2dea5ca +0 -0
  88. package/eval/arena/land/workspace/anchors/greedy.cpp +194 -0
  89. package/eval/arena/land/workspace/anchors/random.cpp +80 -0
  90. package/eval/arena/land/workspace/clock.py +64 -0
  91. package/eval/arena/land/workspace/engine/build.py +33 -0
  92. package/eval/arena/land/workspace/engine/game.py +273 -0
  93. package/eval/arena/land/workspace/engine/referee.py +308 -0
  94. package/eval/arena/land/workspace/starter/.build/bot_be32b45b4699 +0 -0
  95. package/eval/arena/land/workspace/starter/bot.cpp +82 -0
  96. package/eval/arena/land/workspace/viewer/viewer.html +210 -0
  97. package/eval/arena/tank/bots/README.md +24 -0
  98. package/eval/arena/tank/bots/half1/deepseek-v4.1-flash.cpp +367 -0
  99. package/eval/arena/tank/bots/half1/doubao-seed-evolving.cpp +402 -0
  100. package/eval/arena/tank/bots/half1/gemini-4-argon.cpp +1132 -0
  101. package/eval/arena/tank/bots/half1/glm-5.3.cpp +551 -0
  102. package/eval/arena/tank/bots/half1/gpt-6-astra.cpp +233 -0
  103. package/eval/arena/tank/bots/half1/gpt-6.1-sol-ultrafast.cpp +350 -0
  104. package/eval/arena/tank/bots/half1/gpt-6.1-sol.cpp +78 -0
  105. package/eval/arena/tank/bots/half1/grok-4.7.cpp +1099 -0
  106. package/eval/arena/tank/bots/half1/haiku-5.5.cpp +210 -0
  107. package/eval/arena/tank/bots/half1/kimi-k3.cpp +353 -0
  108. package/eval/arena/tank/bots/half1/mimo-v2.6-pro.cpp +336 -0
  109. package/eval/arena/tank/bots/half1/muse-wonder-full.cpp +560 -0
  110. package/eval/arena/tank/bots/half1/opus-5.5.cpp +435 -0
  111. package/eval/arena/tank/bots/half1/qwen-3.8-max.cpp +537 -0
  112. package/eval/arena/tank/bots/half2/deepseek-v4.1-flash.cpp +425 -0
  113. package/eval/arena/tank/bots/half2/doubao-seed-evolving.cpp +308 -0
  114. package/eval/arena/tank/bots/half2/gemini-4-argon.cpp +1390 -0
  115. package/eval/arena/tank/bots/half2/glm-5.3.cpp +651 -0
  116. package/eval/arena/tank/bots/half2/gpt-6-astra.cpp +241 -0
  117. package/eval/arena/tank/bots/half2/gpt-6.1-sol-ultrafast.cpp +356 -0
  118. package/eval/arena/tank/bots/half2/gpt-6.1-sol.cpp +87 -0
  119. package/eval/arena/tank/bots/half2/grok-4.7.cpp +1205 -0
  120. package/eval/arena/tank/bots/half2/haiku-5.5.cpp +210 -0
  121. package/eval/arena/tank/bots/half2/kimi-k3.cpp +487 -0
  122. package/eval/arena/tank/bots/half2/mimo-v2.6-pro.cpp +336 -0
  123. package/eval/arena/tank/bots/half2/muse-wonder-full.cpp +560 -0
  124. package/eval/arena/tank/bots/half2/opus-5.5.cpp +476 -0
  125. package/eval/arena/tank/bots/half2/qwen-3.8-max.cpp +392 -0
  126. package/eval/arena/tank/tournament/README.md +24 -0
  127. package/eval/arena/tank/tournament/bt.py +218 -0
  128. package/eval/arena/tank/tournament/final.json +202 -0
  129. package/eval/arena/tank/tournament/halftime.json +146 -0
  130. package/eval/arena/tank/tournament/progress.json +911 -0
  131. package/eval/arena/tank/tournament/schedule.py +100 -0
  132. package/eval/arena/tank/tournament/sparring.cpp +928 -0
  133. package/eval/arena/tank/tournament/tournament.py +1426 -0
  134. package/eval/arena/tank/workspace/README.md +169 -0
  135. package/eval/arena/tank/workspace/RULES.md +443 -0
  136. package/eval/arena/tank/workspace/arena.py +862 -0
  137. package/eval/arena/tank/workspace/baseline.cpp +259 -0
  138. package/eval/arena/tank/workspace/clock.py +103 -0
  139. package/eval/arena/tank/workspace/core.py +712 -0
  140. package/eval/arena/tank/workspace/engine.py +573 -0
  141. package/eval/arena/tank/workspace/history/.lock +0 -0
  142. package/eval/arena/tank/workspace/history/20261017-193610-08715287f91f-bot.cpp +109 -0
  143. package/eval/arena/tank/workspace/history/20261017-193619-f00b2d5635fa-gpt-6-astra.cpp +241 -0
  144. package/eval/arena/tank/workspace/history/20261017-193643-63319e0a2b1a-gpt-6_1-sol-ultrafast.cpp +356 -0
  145. package/eval/arena/tank/workspace/history/20261017-193647-41c1341d0a8a-gemini-4-argon.cpp +1390 -0
  146. package/eval/arena/tank/workspace/history/20261017-193652-e34c0f45539a-gpt-6_1-sol.cpp +87 -0
  147. package/eval/arena/tank/workspace/history/20261017-193654-c026348ce96e-opus-5_5.cpp +476 -0
  148. package/eval/arena/tank/workspace/history/20261017-193655-4a21366e94d1-muse-wonder-full.cpp +560 -0
  149. package/eval/arena/tank/workspace/history/20261017-193657-dbc4e9969c52-mimo-v2_6-pro.cpp +336 -0
  150. package/eval/arena/tank/workspace/history/20261017-193703-723cd036eb31-grok-4_7.cpp +1205 -0
  151. package/eval/arena/tank/workspace/history/20261017-193707-1ebbb227be68-deepseek-v4_1-flash.cpp +425 -0
  152. package/eval/arena/tank/workspace/history/20261017-193709-aeb0e7202ad5-doubao-seed-evolving.cpp +308 -0
  153. package/eval/arena/tank/workspace/history/20261017-193710-b21ebeb9bc76-kimi-k3.cpp +487 -0
  154. package/eval/arena/tank/workspace/history/20261017-193712-54cd86531905-haiku-5_5.cpp +210 -0
  155. package/eval/arena/tank/workspace/history/20261017-193714-efdb8e35c0bf-qwen-3_8-max.cpp +392 -0
  156. package/eval/arena/tank/workspace/history/20261017-193715-681423c23fdb-glm-5_3.cpp +651 -0
  157. package/eval/arena/tank/workspace/history/20261017-193717-1a8b3c75181d-sparring.cpp +928 -0
  158. package/eval/arena/tank/workspace/history/20261017-193720-1e0803a541e8-baseline.cpp +259 -0
  159. package/eval/arena/tank/workspace/history/log.jsonl +103 -0
  160. package/eval/arena/tank/workspace/judge/cycles.hpp +53 -0
  161. package/eval/arena/tank/workspace/judge/fast.cpp +337 -0
  162. package/eval/arena/tank/workspace/judge/referee.cpp +125 -0
  163. package/eval/arena/tank/workspace/judge/speed.cpp +99 -0
  164. package/eval/arena/tank/workspace/run.cmd +31 -0
  165. package/eval/arena/tank/workspace/run.sh +23 -0
  166. package/eval/arena/tank/workspace/tank.hpp +1762 -0
  167. package/eval/arena/tank/workspace/tank_main.cpp +215 -0
  168. package/eval/arena/tank/workspace/viewer.html +1150 -0
  169. package/eval/arena/warehouse/workspace/SPEC.md +130 -0
  170. package/eval/arena/warehouse/workspace/TASK.md +71 -0
  171. package/eval/arena/warehouse/workspace/baseline/common.h +88 -0
  172. package/eval/arena/warehouse/workspace/baseline/main.cpp +27 -0
  173. package/eval/arena/warehouse/workspace/baseline/old_stuff.cpp +87 -0
  174. package/eval/arena/warehouse/workspace/baseline/sim.cpp +427 -0
  175. package/eval/arena/warehouse/workspace/baseline/util.cpp +220 -0
  176. package/eval/arena/warehouse/workspace/clock.py +42 -0
  177. package/eval/arena/warehouse/workspace/src/common.h +88 -0
  178. package/eval/arena/warehouse/workspace/src/main.cpp +27 -0
  179. package/eval/arena/warehouse/workspace/src/old_stuff.cpp +87 -0
  180. package/eval/arena/warehouse/workspace/src/sim.cpp +427 -0
  181. package/eval/arena/warehouse/workspace/src/util.cpp +220 -0
  182. package/eval/arena/warehouse/workspace/tools/bench.py +119 -0
  183. package/eval/arena/warehouse/workspace/tools/check_input.py +161 -0
  184. package/eval/arena/warehouse/workspace/tools/gen.py +132 -0
  185. package/eval/arena/warehouse/workspace/tools/measure.py +107 -0
  186. package/eval/arena/warehouse/workspace/workloads/public/pub_crowded.in +1420 -0
  187. package/eval/arena/warehouse/workspace/workloads/public/pub_crowded.out +9162 -0
  188. package/eval/arena/warehouse/workspace/workloads/public/pub_dynamic.in +1465 -0
  189. package/eval/arena/warehouse/workspace/workloads/public/pub_dynamic.out +3439 -0
  190. package/eval/arena/warehouse/workspace/workloads/public/pub_flood.in +2757 -0
  191. package/eval/arena/warehouse/workspace/workloads/public/pub_flood.out +3126 -0
  192. package/eval/arena/warehouse/workspace/workloads/public/pub_small.in +731 -0
  193. package/eval/arena/warehouse/workspace/workloads/public/pub_small.out +2578 -0
  194. package/eval/arena/warehouse/workspace/workloads/public/pub_wide.in +528 -0
  195. package/eval/arena/warehouse/workspace/workloads/public/pub_wide.out +2026 -0
  196. package/eval/bomberman.py +20 -0
  197. package/eval/commit0.py +21 -0
  198. package/eval/common.py +61 -0
  199. package/eval/ctf.py +20 -0
  200. package/eval/featurebench.py +25 -0
  201. package/eval/land.py +20 -0
  202. package/eval/legacy/bomberman-prices.json +4 -0
  203. package/eval/legacy/bomberman.py +161 -0
  204. package/eval/legacy/commit0.py +91 -0
  205. package/eval/legacy/ctf-prices.json +4 -0
  206. package/eval/legacy/ctf.py +178 -0
  207. package/eval/legacy/featurebench.py +103 -0
  208. package/eval/legacy/land-prices.json +4 -0
  209. package/eval/legacy/land.py +177 -0
  210. package/eval/legacy/swe_bench_pro.py +116 -0
  211. package/eval/legacy/tank-prices.json +3 -0
  212. package/eval/legacy/tank.py +408 -0
  213. package/eval/legacy/warehouse-prices.json +4 -0
  214. package/eval/legacy/warehouse.py +365 -0
  215. package/eval/swe-bench-pro.py +25 -0
  216. package/eval/tank.py +20 -0
  217. package/eval/warehouse.py +20 -0
  218. package/lib/client/index.js +376 -63
  219. package/lib/client/index.js.map +1 -1
  220. package/lib/index.js +684 -27
  221. package/package.json +2 -1
package/README.md CHANGED
@@ -5,27 +5,104 @@
5
5
  - 只能读写会话工作区;工作区外(包括 /tmp)不可访问。
6
6
  - 禁止联网、子代理、Agent Team/跨 agent 通信、读取其它工作区。
7
7
  - 工具黑名单可配置;未知工具默认放行,但 DSH 内置与 dsh-ops 的工具会做参数路径审计。
8
- - 每个用户消息后的单轮有可配置的最长时长(默认 90 分钟);到点只终止当前轮次,并递归清理子代理与后台任务。
9
- - 设置页可安装五个任务包:**第 6 集 · 坦克大战**、**第 5 集 · 仓储调度**、**第 1 集 · 圈地**、**第 2 集 · 炸弹人**、**第 3 集 · 夺旗**:空工作区 → 放入打包好的 `workspace.zip` → 新会话填入提示词(由用户发送)。
10
8
 
11
- 插件默认关闭;关闭时不做任何行为。所有 run 记录、usage、violations 写入
12
- $DSH_HOME/eval-guard/runs/<run-id>/,供独立的 ../tank-eval 与 ../warehouse-eval 评测程序读取。
9
+ ## 时间限制
10
+
11
+ - 每条用户消息发送时,用**当时的** timeLimitEnabled 和 timeLimitMinutes 为本会话创建或清除 deadline。
12
+ - 开启限时时:deadline = 当前时刻 + 当时的分钟数;之后修改分钟数、选择任务、关闭或重新打开限时,都**不会**改动已存在的 deadline。
13
+ - 关闭限时后再次给已有 deadline 的会话发送消息,会清空该会话自己的 deadline;其它会话不受影响。
14
+ - 重新打开限时后,已有会话不会自动恢复 deadline;下一次用户消息才会重新计时。
15
+ - 每个会话独立计时;可以同时运行多个不同时长、有的开启限时有的不开启的会话。
16
+ - deadline 到点只终止对应会话及其子代理/后台任务,不影响其它会话。
17
+ - 关闭「评测守护」总开关会清空全部 deadline 并停止约束;总开关与单轮限时开关是两套状态。
18
+
19
+ 设置页选择任务时会自动把「最长时长 + 限时开关」写成该任务默认值并立即显示,用户可以随后手动修改:
20
+
21
+ | 任务类型 | 默认限时 |
22
+ |---|---|
23
+ | 原 5 个 meow-ai-arena 任务 | 90 分钟,默认打开 |
24
+ | Commit0 单库 | 480 分钟,默认关闭 |
25
+ | SWE-Bench Pro 单任务 | 1440 分钟,默认关闭 |
26
+ | FeatureBench 单 feature | 1440 分钟,默认关闭 |
27
+
28
+ ## 任务与安装
29
+
30
+ 设置页可安装八个任务包:
31
+
32
+ - 原 5 个比赛任务:坦克大战、仓储调度、圈地、炸弹人、夺旗。
33
+ - 3 个长时单任务:Commit0 单库实现、SWE-Bench Pro 单任务、FeatureBench 单 feature。
34
+
35
+ 原 5 个任务直接放入打包好的 workspace.zip。后 3 个任务在安装时由 host 侧 setup 脚本按固定 commit clone 仓库、创建 .venv 并安装依赖;agent 运行时仍然禁网,使用工作区内的 .venv 跑测试。
36
+
37
+ 安装是后台任务:
38
+
39
+ - 可分别选择 clone 远端、pip 镜像、Git 代理和 pip 代理。
40
+ - 进度和日志持久化在 $DSH_HOME/eval-guard/jobs/<job-id>/。
41
+ - 离开设置页不会停止;重新进入继续显示;可以取消。
42
+ - 安装成功后显示提示词,可点「填入新会话」。
43
+
44
+ ### 已验证的 Git 远端
45
+
46
+ 只有验证过包含任务固定 commit 的远端才会显示在对应任务下:
47
+
48
+ - Commit0 · tinydb:GitHub。
49
+ - SWE-Bench Pro · ansible:GitHub、Gitee。
50
+ - FeatureBench · seaborn:GitHub、Gitee、GitCode。
51
+
52
+ Gitee/GitCode 都使用 git fetch --depth 1 origin <任务 commit> 验证。GitLab 和 ghfast 未通过验证,已移除。另保留「自定义 URL」。
53
+
54
+ ### pip 镜像
55
+
56
+ 提供 PyPI、清华 TUNA、阿里云、腾讯云、北外、上海交大,并保留自定义地址。
57
+
58
+ ### 两个独立代理
59
+
60
+ - Git 代理:只用于 git clone/fetch。
61
+ - pip 代理:只用于 pip install。
62
+
63
+ 地址可以写成 127.0.0.1:7897,会自动补 http:// 前缀。留空会清掉继承来的同名代理变量,不误用宿主机代理。
64
+
65
+ ## 单工作区评测
66
+
67
+ 设置页安装/评测共用一组任务和工作区选择;「评测当前工作区」只评测一个结果,不生成排行。
68
+
69
+ 插件 eval/ 目录内置全部 8 个任务的单结果评测脚本:
70
+
71
+ - Commit0:单元测试通过率。
72
+ - SWE-Bench Pro / FeatureBench:隐藏 F2P/P2P 测试;全部通过才 resolved,同时返回 passRate。
73
+ - Tank / Warehouse / Land / Bomberman / CTF:运行官方引擎/裁判,只返回当前工作区候选者结果,不生成排名。
74
+
75
+ 评测也是后台任务,日志和结果实时显示,持久化在 jobs 目录。
13
76
 
14
77
  ## 任务来源
15
78
 
16
- 安装的评测任务来自开源项目 **meow-ai-arena**(MIT License,commit `6bd738b`,2026-10-16):
79
+ 原 5 个任务来自 **meow-ai-arena**(MIT License,commit 6bd738b,2026-10-16):
17
80
 
18
- - 第 1 集 · 圈地:<https://github.com/chen-006/meow-ai-arena/tree/main/land>,素材 `land/workspace/`
19
- - 第 2 集 · 炸弹人:<https://github.com/chen-006/meow-ai-arena/tree/main/bomberman>,素材 `bomberman/workspace/`
20
- - 第 3 集 · 夺旗:<https://github.com/chen-006/meow-ai-arena/tree/main/ctf>,素材 `ctf/workspace/`
21
- - 第 5 集 · 仓储调度:<https://github.com/chen-006/meow-ai-arena/tree/main/warehouse>,素材 `warehouse/workspace/` 的第 1 轮主程包,改编为单人单次 90 分钟
22
- - 第 6 集 · 坦克大战:<https://github.com/chen-006/meow-ai-arena/tree/main/tank>,素材 `tank/workspace/`
81
+ - 第 1 集 · 圈地:<https://github.com/chen-006/meow-ai-arena/tree/main/land>,素材 land/workspace/
82
+ - 第 2 集 · 炸弹人:<https://github.com/chen-006/meow-ai-arena/tree/main/bomberman>,素材 bomberman/workspace/
83
+ - 第 3 集 · 夺旗:<https://github.com/chen-006/meow-ai-arena/tree/main/ctf>,素材 ctf/workspace/
84
+ - 第 5 集 · 仓储调度:<https://github.com/chen-006/meow-ai-arena/tree/main/warehouse>,素材 warehouse/workspace/ 第 1 轮主程包,改编为单人单次 90 分钟
85
+ - 第 6 集 · 坦克大战:<https://github.com/chen-006/meow-ai-arena/tree/main/tank>,素材 tank/workspace/
23
86
 
24
87
  仓库:<https://github.com/chen-006/meow-ai-arena>
25
88
 
26
- 本插件打包的 Linux 版 `workspace.zip` 在原素材基础上做了三处适配:把 `baseline.cpp` 编译为 Linux ELF 可执行文件并移出源码,文件名改为 `baseline`(不带 `.exe`);把 `clock.py` 改为单次 90 分钟版本;`README.md` 中对应的 baseline 示例同步改名。规则、引擎、本地裁判、模板等其余文件保持原样。安装任务时只把 `workspace.zip` 放入工作区,不再散装解压。
89
+ 长时单任务来源:
90
+
91
+ - Commit0 单库实现:<https://arxiv.org/abs/2412.01769>,数据集 <https://huggingface.co/datasets/wentingzhao/commit0_combined>,实例 commit-0/tinydb
92
+ - SWE-Bench Pro 单任务:<https://arxiv.org/abs/2509.16941>,数据集 <https://huggingface.co/datasets/ScaleAI/SWE-bench_Pro>,实例 ansible vars
93
+ - FeatureBench 单 feature:<https://arxiv.org/abs/2602.10975>,数据集 <https://huggingface.co/datasets/LiberCoders/FeatureBench>,实例 seaborn regression
94
+
95
+ ### 远端验证记录
96
+
97
+ - msiemens/tinydb @ ed761a72:GitHub 通过;Gitee mirrors/tinydb、GitCode gh_mirrors/ti/tinydb、GitLab 均无法 fetch 该 commit,未加入。
98
+ - ansible/ansible @ f7234968:GitHub、Gitee mirrors/ansible 通过;GitCode、GitLab 未通过,未加入。
99
+ - mwaskom/seaborn @ 7001ebe7:GitHub、Gitee mirrors/seaborn、GitCode gh_mirrors/se/seaborn 通过;GitLab 未通过,未加入。
100
+
101
+ ## 打包适配
102
+
103
+ 本插件打包的 Linux 版 workspace.zip 在原素材基础上做了适配:把 baseline.cpp 编译为 Linux ELF 可执行文件并移出源码,文件名改为 baseline(不带 .exe);把 clock.py 改为单次 90 分钟版本;README.md 中对应的 baseline 示例同步改名。规则、引擎、本地裁判、模板等其余文件保持原样。安装任务时只把 workspace.zip 放入工作区,不再散装解压。
27
104
 
28
- 仓储调度任务包同样只放 `workspace.zip`;包内 `TASK.md` 已改写成单人单次 90 分钟版本,保留了原 `baseline/`、`src/`、`workloads/` 和 `tools/`。
105
+ 仓储调度任务包同样只放 workspace.zip;包内 TASK.md 已改写成单人单次 90 分钟版本,保留了原 baseline/、src/、workloads/ 和 tools/。
29
106
 
30
107
  ## 构建
31
108
 
@@ -49,10 +126,11 @@ DSH_CHECKOUT=/path/to/deepseek-harness scripts/install.sh web
49
126
  - bubblewrap (bwrap)
50
127
  - gcc(构建 native supervisor 时)
51
128
  - unzip(安装任务素材时)
129
+ - Python 3(长任务 setup 与评测)
52
130
 
53
131
  ## 已知边界
54
132
 
55
133
  - 只支持 Linux。
56
134
  - seccomp 用户通知的路径检查与 open 之间存在极小的 TOCTOU 窗口;bwrap 只读/无网络挂载是第二层内核边界。
57
135
  - 进程审计只覆盖被拦截的文件/网络 syscall;正常 syscall 不记录。
58
- - 当前设置页使用内联样式,不依赖额外 CSS 构建链。
136
+ - 设置页使用内联样式,不依赖额外 CSS 构建链。
@@ -0,0 +1,30 @@
1
+ {
2
+ "instance_id": "commit-0/tinydb",
3
+ "repo": "commit-0/tinydb",
4
+ "original_repo": "msiemens/tinydb",
5
+ "base_commit": "ed761a72c8c1e1cb24ca4dbcc089f35c5264d357",
6
+ "reference_commit": "429b27a513f0ad301632379e55667dd99865fb16",
7
+ "setup": {
8
+ "install": "pip install -e .",
9
+ "packages": null,
10
+ "pip_packages": [
11
+ "pytest>=7.2.0,<8.0.0",
12
+ "pytest-pycodestyle>=2.3.1,<3.0.0",
13
+ "pytest-cov>=4.0.0,<5.0.0",
14
+ "pycodestyle>=2.10.0,<3.0.0",
15
+ "sphinx>=7.0.0,<8.0.0",
16
+ "coveralls>=3.3.1,<4.0.0",
17
+ "pyyaml>=6.0,<7.0",
18
+ "types-PyYAML>=6.0.0,<7.0.0",
19
+ "typing-extensions>=4.4.0,<5.0.0"
20
+ ],
21
+ "pre_install": null,
22
+ "python": "3.10",
23
+ "specification": "https://tinydb.readthedocs.io/_/downloads/en/v4.8.0/pdf/"
24
+ },
25
+ "test": {
26
+ "test_cmd": "pytest",
27
+ "test_dir": "tests/"
28
+ },
29
+ "src_dir": "tinydb/"
30
+ }
Binary file