mxmarchal/lemonade-bench
GitHub: mxmarchal/lemonade-bench
Lemonade Bench 通过将经典模拟经营游戏转换为纯文本 MCP 交互环境,为工具增强型语言模型提供长周期商业决策能力的可复现基准测试。
Stars: 0 | Forks: 0
# Lemonade Bench
Lemonade Bench 让使用工具的语言模型将 **Lemonade Tycoon
Deluxe** 作为一个纯文本、长周期的商业基准测试进行游玩,同时原始
游戏在 Wine 下保持可见。Agent 接收语义化的 MCP 工具,用于获取
与通过游戏 UI 可获取的相同信息和操作;它绝不会获取
视觉、任意内存访问、shell 访问或互联网访问权限。
该项目包含三个部分:
- 一个由游戏加载的 32 位 Windows 代理 DLL,暴露一个环回桥接;
- 一个将 UI 状态和操作转换为语义化工具的 Player MCP;
- 一个与提供商无关的基准测试运行器,具备 tracing、崩溃恢复、
压缩、可选的模型生成笔记和报告功能。
完整的逆向工程和控制路径在
[工作原理](docs/how-it-works.md) 中有详细说明,从 FMOD 代理 DLL 到无视觉
MCP 运行器。
## 兼容性
该桥接和内存映射仅通过 **Lemonade Tycoon Deluxe
1.1.9**(32 位 Windows 可执行文件)测试,SHA-256:
```
5f079edaba4963765ce650efe25f2c12673b8c889539c6dc8a426e34a94dc7e3
```
不支持早期版本、后续版本、本地化可执行文件和修改过的二进制
文件。它们的内存地址或 UI 坐标可能有所不同。
启动器会拒绝未知的可执行文件,除非操作员明确启用
不安全的覆盖设置。
本代码库不包含游戏、安装程序、存档、资源、FMOD
或 Wine prefix。您必须提供自己的合法安装。
## 环境要求
- Lemonade Tycoon Deluxe 1.1.9;
- 能够运行游戏的兼容 Wine 的环境;
- Node.js 22 或更高版本;
- 在 `PATH` 中可用的 Tesseract,用于菜单/存档引导 OCR;
- i686 Windows Clang/MinGW 工具链,用于构建桥接;
- 用于模型驱动运行的 OpenAI 或 OpenRouter API 密钥。
## 安装
创建已安装游戏目录的**专用副本**。基准测试
场景会删除 `Lemonade.dat` 以创建全新的职业生涯,因此切勿将
运行器指向个人存档的唯一副本。
```
npm install
cp .env.example .env.local
```
编辑 `.env.local` 并至少设置:
```
LEMONADE_GAME_DIR=/absolute/path/to/dedicated/game-copy
LEMONADE_WINE_BIN=wine
LEMONADE_WINE_PREFIX=/absolute/path/to/dedicated/wine-prefix
LEMONADE_ALLOW_SAVE_RESET=true
```
在替换游戏的 FMOD 加载器之前构建代理:
```
native/build_proxy.sh \
/absolute/path/to/llvm-mingw \
"/absolute/path/to/dedicated/game-copy/fmod.dll" \
dist
```
然后安装它。安装脚本会验证可执行文件和原始 FMOD
哈希值,将用户的原始文件重命名为 `fmod_original.dll`,安装代理,
并写入专用安装的安全标记。
```
npm run setup -- install-bridge
npm run setup -- doctor
```
随时使用以下命令恢复原始的 FMOD 加载器:
```
npm run setup -- uninstall-bridge
```
有关完整的引导和
失败模式,请参阅 [docs/installation.md](docs/installation.md)。
## 运行基准测试
首先验证本地游戏和 Player MCP,而无需消耗模型 token:
```
npm run runner:doctor
```
然后通过一次最小化的工具调用验证所选的付费模型传输:
```
npm run runner:preflight
```
运行 30 天验证或 360 天基准测试:
```
npm run runner -- run benchmark-career-30d
npm run runner -- run benchmark-career
```
恢复中断的运行而无需重置游戏:
```
npm run runner -- resume /absolute/path/to/run-directory
```
标准场景仅在已标记的专用游戏
副本中删除存档,在槽位 1 中创建一个新的 `BENCHMARK` 职业,到达第 1 年 / 第 1 月 /
第 1 日,然后将控制权交给模型。
## 评分
基准测试记录两个终端信号:
```
total economic value = cash + equipment value + inventory replacement value
liquid cash = cash
```
总经济价值是主要的;现金是次要的流动性分数。
设备使用游戏资产负债表中显示的价值。库存
按可见供应目录中可用的最低单位重置成本进行估价,最终总数四舍五入到最接近的美分。这使得最终的
升级购买在购买时分数保持中性,而不是将投资视为
已毁损的财富。
每次运行都会存储确切的评分方法,并在被忽略的 `runs/`
目录下输出原始 trace、可恢复的检查点、`analysis.json` 和 `REPORT.md`。请参阅 [docs/benchmark-contract.md](docs/benchmark-contract.md)。
## Player 边界
DLL 包含开发者原语,因为驱动程序必须捕获
窗口、点击控件、输入公司名称、读取映射值并停止
游戏。这些原语从未在 Player MCP 上注册。在开始
付费的 episode 之前,运行器会将完整的工具接口与精确的
白名单进行比对,并拒绝任何意外或缺失的工具。
语义化的 MCP 有意暴露近似的知名度和满意度
条,而不是隐藏的百分比,并省略内部需求方程、
升级幅度和最佳策略。请参阅
[docs/player-visibility-audit.md](docs/player-visibility-audit.md)。
完整的本地信任边界记录在
[docs/security-model.md](docs/security-model.md) 中。
## 测试
纯测试不需要游戏:
```
npm test
```
游戏集成测试需要已配置的专用安装:
```
npm run test:bridge
npm run test:player-visibility
npm run test:gameplay
```
## 法律与项目状态
这是一个独立的互操作性和人工智能研究项目。它不隶属于
Lemonade Tycoon Deluxe 的开发者、发行商或版权所有者,也未获得其
认可。不提供任何游戏文件或 DRM 绕过。用户有
责任遵守其所在司法管辖区的软件许可和适用法律。
该代码在 [MIT 许可证](LICENSE) 下提供。上游代码库
不接受问题或 pull 请求;如果您想修改或
维护它,请 fork 它。请参阅 [GOVERNANCE.md](GOVERNANCE.md)。
## 开发溯源
最初的概念、产品方向、基准测试要求和实机游戏
验证由 **Maxence Marchal** 主导。逆向工程、实现、
调试、测试和初始文档是通过
**Codex using GPT-5.6 Sol with High reasoning effort** 协作生成的。
标签:AI评测, DLL 劫持, DLL注入, MCP, MITM代理, Petitpotam, Wine, 云资产清单, 人工智能, 大语言模型, 流量审计, 游戏自动化, 用户模式Hook绕过, 自定义脚本, 逆向工程