diff --git a/.workbuddy/skills/simplefarm-verify-and-ship/SKILL.md b/.workbuddy/skills/simplefarm-verify-and-ship/SKILL.md index d6aa07f..c9eb9d6 100644 --- a/.workbuddy/skills/simplefarm-verify-and-ship/SKILL.md +++ b/.workbuddy/skills/simplefarm-verify-and-ship/SKILL.md @@ -34,10 +34,13 @@ bench 里带调用计数器,计数变红说明轻量路径被改回重路径 `run_in_background: true` 跑前台服务器,验完再停掉。 ```bash -# 1) 预置存档:想验"买得起"的路径,就先塞一份有钱的档。 -# farm_id 直接映射到 /.json;字段缺失一律走默认值, -# 所以最小延迟 {version:2, state:{gold,level}} 就够。 -# 必须在同一条命令里 mkdir -p 好目录再写文件。 +# 1) 预置存档(SQLite,v2 起):想验"买得起"的路径,就先塞一行有钱的档。 +# python -c " +# from farm.models import GameState +# from farm.storage import save_state +# st = GameState(); st.gold = 5000; st.level = 5 +# save_state(st, '.e2e-saves/farm.db', 'boss')" +# 字段缺失一律走默认值;老 JSON 档也可以直接丢进 --save-dir,启动时自动迁移。 # 2) 起服务器(tick 小一点,3 秒一天) uv run main.py serve --port 8799 --tick 3 --save-dir .e2e-saves # 3) 用 RemoteFarm 驱动,跑完删掉脚本和 .e2e-saves/ @@ -49,6 +52,10 @@ uv run main.py serve --port 8799 --tick 3 --save-dir .e2e-saves `while True: client.snapshot()` 会永远读到同一份旧数据——服务器在推进, 看起来却像卡死。非实时客户端必须自己调 `client.refresh()` 再读 `snapshot()`。 TUI/网页走 SSE 所以没这个问题。 +- **端口上可能有别人的服务器。** 8765 是默认端口,用户自己(或另一个 checkout) + 起的实例可能正在上面跑、里面还有玩家进度。动手前先看 `/api/farms` 里有没有 + 不认识的活跃牧场;有就换端口验,**别 stop 它**。判断一个实例是不是本工作区 + 的代码,看它的存档目录在不在这个项目里(`saves/farm.db` 的 mtime 动不动)。 - **作物会缺水停长。** 天气随机消耗水分(晴 1 / 多云 0 / 干旱 2), 等成熟的循环里要盯水分补浇,否则 120 秒也等不到成熟。这也顺带证明了 天气→浇水这条链真的在起作用。