docs: 记录突破 —— 修掉高度偏好后扩地真的跑起来了

TODO 第 1 节从 🔴 改为 🟢,写清根因、生产对照实测与修复后的推进数据。

根因:AltitudeGoal 把高度偏置加在启发值上,而 mineflayer-pathfinder 每次
compute() 返回 partial 时用 h 最小的节点当 partial 路径终点,于是「又高又偏」
的节点胜出,A* 永不收敛,机器人一次移动指令都发不出来。

生产对照(王城平台,其余配置相同):
- altitudePreference = true  → inputTicks = 0,永远「寻路超时」
- altitudePreference = false → inputTicks = 237,blockedTicks = 0,每 tick 都在走

第二个拦路虎(1.9.3):服务器每 1~6 分钟踢一次,原来掉线即永久停住;
autoResumeAfterReconnect 现在会在重连后自动接上。

修复后连续 20 分钟实测:距目标 763 → 668 格(前进 95 格),全程未掉线;
原点自救 4/4 成功,每次都能从登录服大厅回到真实世界。

仍待优化:推进速度约 5 格/分钟,卡在「寻路重试耗尽 → 往边上走两步 →
跳过目标 → 重新规划同一目标」的循环里(waitTimeoutSeconds 偏长、
跳过目标后立刻重选同一个目标)。
这个提交包含在:
lyizai
2026-10-01 16:57:04 +08:00
父节点 0bed12e189
当前提交 ed55308885
+41 -1
查看文件
@@ -141,7 +141,47 @@ ls -1d /opt/autostore-bot/backup-* 2>/dev/null | tail -3
--- ---
## 1. 🔴 「机器人走不动」:**已实测定位到客户端物理层**(不是服务端回弹,见本节开头的实测补充) ## 1. 🟢 「机器人走不动」:**已解决**(根因是自定义高度偏好,见下)
### ✅ 2026-10-01 突破:修掉高度偏好后扩地真的跑起来了
**根因**:`AltitudeGoal` 把高度偏置加在**启发值**上
(`heuristic = max(0, 基础距离 - 权重 × y)`),而 `mineflayer-pathfinder`
每次 `compute()` 返回 `partial` 时用 **`h` 最小**的节点当 partial 路径的终点
(`astar.js`: `if (neighborNode.h < this.bestNode.h) this.bestNode = neighborNode`)。
于是「又高又偏」的节点 `h` 反而更小,partial 路径被引向高处而不是目标附近 ——
**A\* 一直在算、永不收敛,机器人一次移动指令都发不出来。**
**生产对照实测**(王城平台上,其余配置完全相同):
| `altitudePreference` | `inputTicks` | 结果 |
| --- | --- | --- |
| `true`(修复前) | **0** | 永远停在「寻路超时,重新寻路」,一步不动 |
| `false`(修复后) | **237** | 每 tick 都在走,`blockedTicks = 0`、`frozenTicks = 0` |
已把默认值改为 `false`([1.9.1]),并在 `AltitudeGoal` 的注释里写清推导与实测数据。
**想重新启用,必须把偏置改成「低处加移动代价」**(改 `getNeighbors` 的 `cost`),
不能改启发值。
**顺带修掉的第二个拦路虎**([1.9.3]):服务器每 1~6 分钟把机器人踢下线一次
(`An internal error occurred in your connection`),原来一掉线任务就永久停住。
现在 `autoResumeAfterReconnect`(默认开)会在世界退出时记下配置、重连后自动接上;
手动停止 / 时段外 / 耐久保护停机不会被误恢复。
**实测结果**(修复后连续 20 分钟):
```
起点 6753.6, 143, 11953.7 距目标 763 格
终点 6768.5, 116, 12045.7 距目标 668 格 ← 前进 95 格,全程未掉线
```
「原点自救」表现完美(4/4 成功):每次被踢到登录服大厅都能自己回到真实世界。
**仍需观察**:推进速度约 5 格/分钟(正常步行 4.3 格/秒),
因为每段路径都会走到「寻路重试耗尽 → 往边上走两步 → 跳过目标 → 重新规划同一目标」
的循环里。待优化项:`waitTimeoutSeconds`(60)偏长、以及「跳过目标后立刻重选同一个目标」。
### 历史记录:三种「走不动」的区分(结论仍然有效)
### 🔴 2026-10-01 实测:三种「走不动」要分开看(**先读这段**) ### 🔴 2026-10-01 实测:三种「走不动」要分开看(**先读这段**)