ALFWorld 纯文本接入
注册名 alfworld,领域为 Interactive Planning。提供原生文本环境接口;不含 视觉 THOR、混合环境或 BUTLER 训练。上游为 ALFWorld, 固定运行依赖 alfworld==0.4.2、textworld[pddl]==1.7.0。
数据与环境
- Linux/WSL/macOS、Python 3.11 或 3.12;Windows 原生启动明确报错。
- 使用原生 Python 文本环境,无需 Docker、Harbor、GPU 或独立 Judge。 TextWorld 编译依赖按官方说明准备。
- 原生默认来源下
benchmark.data_path必填,指向原始json_2.1.1或其父目录。 YAML 路径相对配置文件,CLI 路径相对当前目录。不自动下载任何任务或视觉模型。 - 数据来自官方 release 的 JSON 和 TW-PDDL 游戏包(官方下载脚本中的
json_2.1.1_json.zip与json_2.1.3_tw-pddl.zip),按其原始路径合并。 每道任务目录包含traj_data.json和自包含的game.tw-pddl。 本适配直接加载现有游戏,不调用生成脚本,不要求视觉检测权重。 官方alfworld-download默认还下载 MaskRCNN;本接口不自动调用它。
也可选择 HF prepared 数据源:不设置 data_path,由框架下载约 8 MB 的精选原生任务包并保留 200/140/134 的发布划分。示例见 hf_prepared_alfworld.yaml。上面的手动数据准备适用于原生默认来源;系统和运行依赖对两种来源都适用。
默认采用框架角色映射:原生 train → train、valid_seen → dev、 valid_unseen → test。后两者仍是官方的 seen/unseen 验证集,并非声称拥有官方隐藏测试集。 limit 在保持来源归属的前提下确定性取样;显式 split_counts / split 会重新划分, 应作为自定义实验协议报告。允许只提供部分原生划分,缺失角色保持为空。
按 AlfredTWEnv 的规则排除 movable/Sliced、缺失游戏和未标记可解的游戏。 默认支持全部六类;task_types 可指定以下名称的非空子集:
task_types:
- pick_and_place_simple
- look_at_obj_in_light
- pick_clean_then_place_in_recep
- pick_heat_then_place_in_recep
- pick_cool_then_place_in_recep
- pick_two_obj_and_place执行与评分
每次 rollout 创建独立子进程,通过原生 textworld.gym.register_game 与 AlfredDemangler(shuffle=False) 加载指定游戏;沿用上游的观察、命令解释及状态转移。 Agent 在自己的工作目录中通过 shell 客户端提交动作。支持 MiniAgent 与启用 Bash 的 Claude Code;不改动两者的原生 system prompt。该本机会话桥接沿用 WorkBench 的受信任本机执行模型,不提供容器级隔离。
max_steps默认 50,是本适配的可配置预算,不宣称复现特定论文设置。 环境动作预算与agent.max_turns、agent.timeout分别生效。seed固定环境随机源与取样;关闭 domain randomization。admissible_commands: false默认只给观察;设为 true 时额外返回原生合法动作列表。 此选项改变可见信息,记录在 metadata 与评分事件中,比较成绩时需保持一致。- 不启用 expert wrapper;不暴露专家计划、完整 facts、轨迹注释或私有评分接口。
- 主指标
success由宿主侧infos["won"]映射为 0/1,再由框架求均值。done、累计奖励或模型文字声明均不能替代成功判定。达到步数上限后停止执行动作。 - 原生执行异常记录为 error,不能伪装成正常的任务失败;Agent 执行错误按框架惯例计零。 游戏内容校验和写入任务,执行前核验并复制固定内容,结束后释放进程及临时目录。
使用与验证范围
示例:alfworld_opro.yaml。先填模型与本地数据路径:
python scripts/run_experiment.py --config examples/alfworld_opro.yaml --plan
python scripts/run_experiment.py --config examples/alfworld_opro.yaml --check-only
python scripts/run_experiment.py --config examples/alfworld_opro.yaml--plan 只输出依赖计划。--check-only 安装选定依赖并检查本地任务与配置,不调用模型, 也不能替代真实环境 rollout。缺少数据时明确报错。
当前验证覆盖合成游戏记录和模拟环境下的加载、划分、交互协议、失败传播、成功判定、 HTTP 客户端与进程清理。官方任务、原生 ALFWorld 模拟器及真实模型的端到端运行尚未验证。