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绕过, 自定义脚本, 逆向工程