# 最小局部可见导航实验 依赖:Python >=3.9 标准库,无需第三方包、GPU、网络或权重。本次实际运行 Python 3.9.6 CPU。 从文章目录运行: ```bash PYTHONPYCACHEPREFIX=/private/tmp/codex-ai-073-cache python3 -m py_compile code/minimal_agent.py code/audit_trajectories.py python3 code/minimal_agent.py python3 code/audit_trajectories.py ``` 主程序默认重建 code/results/;`--out /private/tmp/agent073-replay` 可另存。审计默认读取 code/results/。源数据 maps.json 已保存;复算应优先读取快照,跨 Python 版本随机算法一致性不做保证。 - 状态:9×9 字符地图、绝对位置、已知目标坐标;外部步数限制另行计数。 - 观测:position [2]、goal [2]、patch [3,3]。patch 的 0/1/2 分别为空地/墙/目标;轴为 [y,x]。中心局部窗口,无视线遮挡建模,也不是 RGB 图像。 - 动作:0/1/2/3 = 北/东/南/西;撞墙留在原处,仍计入预算。不是 MiniGrid 的旋转/前進/拾取等七动作。 - 奖励:到达目标 +1,每步 -.01,撞墙额外 -.05;未训练,不以该回报选择策略。 - 标志:到达目标 terminated;t>=H 时 truncated,两者可以同时为真。结束后再次 step 会拒绝。 - 地图:深度优先挖通9×9迷宫,31个可通行格;起点(1,1);目标从最短路>=8的奇数坐标格按同一地图 RNG 采样。按纯地图 SHA256 去重,不以结果筛选。 - 开发种子从73起取5张唯一地图,仅保留供后续开发,本次不调参。测试种子从100起取30张唯一地图;实际拒绝101/121/122/123/130,最终到134。地图原始字符和目标均在 maps.json。 - 策略:random 均匀随机四动作,种子73000+地图种子;memory 累积局部格子与访问集合,用 BFS 到已知目标或最近未访问格;memory_reset 每次决策清空这两项,复用同一选择算法;oracle 使用全图最短路,仅为特权诊断。 - 最近目标平局:路径长度、到已知任务目标的曼哈顿距离、y、x。BFS邻居顺序北东南西。没有训练权重或学习曲线。 - 预算16/32/64、四策略、30测试图,共360回合;短长预算共用动作前缀。 `episodes.jsonl` 每行一回合,包含逐步观测、动作、下步观测、reward、collision、terminated、truncated,以及路径与回报汇总。地图为评测器特权数据,普通 Policy.act 仅接收观测;没有将 World/info 对象传给策略。Python 对象隔离不是安全沙箱。 SPL 的实际路径计成功移动格数;action_efficiency 是本文另定义的动作预算效率(分母含碰撞)。成功率/SPL/回报/每回合碰撞率按30张地图宏平均,steps列包含失败。无置信区间;同一地图不同预算不应视为独立数据。政策只有一组固定随机种子,不代表随机策略总体期望。 `audit_trajectories.py` 不导入主程序,用距离松弛独立计算最短路,再逐步重演状态、两端观测和奖励,复算84个聚合指标并核对240组预算前缀。 与官方资料的关系:借鉴 MiniGrid 的局部观测设计和 Gymnasium 五元组约定;没有执行 MiniGrid、DoorKey、RL/LLM、真实机器人或论文基准。官方源码仅静态阅读固定v3.0.0标签,迁移时依赖、动作空间、奖励与观测兼容性待人工核验。