feat(soak): AppWorld 场景适配器——代码围栏解释器与容器执行器

复刻 dissect 的动作协议当压测负载:两条正则、first_only 策略、五条纠错说明逐字照抄,
提示词模板连同出处一起收进 tools/soak/prompts/。有两处刻意不同,都写在代码注释里——
未闭合围栏那一支不补回三反引号(公共契约要求回填历史的文本不长于模型原文),空围栏
那一支不截断。

执行器在 execute 内部顺带问一次 is_done 填 env_reported_completion,并把环境自己数的
执行次数透出来。那个数字是故障注入的判据来源:验「声明绝不重放的动作没有被执行两次」
必须数环境侧,数库自己的计数器等于我们和我们自己对账。

端到端真跑过一道题(82e2fac_1):8 步 task_completed,环境判分通过,事件数与步数与
环境执行次数三者相等,耗时 30 秒。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-11 08:16:31 -04:00
parent 4cbdb056b6
commit 21a9a30ee9
8 changed files with 1625 additions and 0 deletions
+7
View File
@@ -13,6 +13,13 @@
/logs/
/tests/outputs/
# 压测产物。日志与报告里带着模型原文和文档片段,体量也大(一次全量约一百多个运行),
# 不该进版本库;`.cache/` 是从环境取一次就不变的那些(app 描述清单)。
/tools/soak/.cache/
/tools/soak/runs/
/tools/soak/reports/
/tools/soak/workspaces/
# Python
__pycache__/
*.py[cod]