游戏AI控制模组

一个通过模型上下文协议(MCP)将Stardew Valley与AI助手桥接的混合AI控制游戏模组,实现AI代理对游戏的实时控制。

  • by Hunter-Thompson
  • C#
  • 本地部署
  • 172 星标
  • 更新于
在 GitHub 查看 Hunter-Thompson/stardew-mcp

使用说明

星露谷MCP大桥

一个混合AI控制的游戏模组,通过模型上下文协议(MCP)将Stardew Valley与AI助手连接起来。使自主AI代理能够通过实时游戏状态同步来控制和玩Stardew Valley。

建筑

┌─────────────────────────────────────────────────────────┐
│ STARDEW VALLEY (Game)                                   │
│   SMAPI Mod (C# .NET 6)                                 │
│     ModEntry → GameStateSerializer                      │
│              → CommandExecutor (w/ Pathfinder)          │
│              → WebSocketServer                          │
└─────────────────────────────────────────────────────────┘
              ↕ ws://localhost:8765/game
┌─────────────────────────────────────────────────────────┐
│ MCP Server (Go)                                         │
│   GameClient: WebSocket connection, state tracking      │
│   StardewAgent: 12 tools + 30 cheats, autonomous loop   │
└─────────────────────────────────────────────────────────┘
              ↕ Copilot SDK
┌─────────────────────────────────────────────────────────┐
│ Claude Sonnet (via GitHub Copilot SDK)                  │
└─────────────────────────────────────────────────────────┘

先决条件

对于SMAPI Mod

对于MCP服务器

  • 转到1.23+
  • GitHub Copilot访问权限(Claude Sonnet通过Copilot SDK访问)

建筑

1.构建C#Mod

cd mod/StardewMCP
dotnet build

这编译 StardewMCP.dll 并将其放入 bin/Debug/net6.0/.

2.构建Go MCP服务器

cd mcp-server
go build -o stardew-mcp

这产生了 stardew-mcp 可执行。

安装

安装SMAPI模块

  1. 构建mod(见上文)
  2. 复制整个 mod/StardewMCP/bin/Debug/net6.0/ 文件夹到您的Stardew Valley mods目录:
    • 视窗: %AppData%\StardewValley\Mods\StardewMCP\
    • macOS: ~/.config/StardewValley/Mods/StardewMCP/
    • Linux: ~/.config/StardewValley/Mods/StardewMCP/
  3. 复制 manifest.json 到同一文件夹

或者使用SMAPI的mod文件夹结构:

Mods/
└── StardewMCP/
    ├── manifest.json
    ├── StardewMCP.dll
    └── (other build outputs)

用法

1.与SMAPI一起开启星露谷

通过SMAPI启动游戏。mod将自动启动WebSocket服务器 ws://localhost:8765/game.

2.加载保存文件

一旦你加载到游戏保存中,模组就会激活。

3.运行MCP服务器

cd mcp-server
./stardew-mcp                    # Run with default autonomous mode
./stardew-mcp -auto=false        # Connect without starting AI agent
./stardew-mcp -goal "Clear the farm and plant parsnips"
./stardew-mcp -url ws://localhost:8765/game  # Custom WebSocket URL

服务器通过WebSocket连接到游戏,并开始自主AI代理循环。

可用的AI工具

AI代理可以访问12个工具来控制游戏:

工具 说明
move_to 使用A*寻路导航到特定坐标
get_surroundings 获取当前游戏状态和61x61 ASCII地图视觉
interact 与某个位置的对象/NPC交互
use_tool 使用当前配备的工具
use_tool_repeat 连续多次使用工具
face_direction 让玩家面向一个方向
select_item 按名称从库存中选择一个项目
switch_tool 切换到特定工具
eat_item 食用食物以获取能量
enter_door 输入建筑或扭曲点
find_best_target 为当前工具找到最佳目标
clear_target 清除当前目标

作弊模式

作弊模式提供即时上帝模式功能,用于快速测试或无压力游戏。 必须致电 cheat_mode_enable 第一 在任何其他作弊命令生效之前。

模式控制

工具 说明
cheat_mode_enable 启用作弊模式(首先需要)
cheat_mode_disable 禁用作弊模式和所有持久效果
cheat_time_freeze 打开/关闭时间冻结
cheat_infinite_energy 打开/关闭无限耐力

传送

工具 说明
cheat_warp 远程传输到位置(农场、城镇、山脉、海滩、森林、矿山、沙漠)
cheat_mine_warp 扭曲到特定地雷级别(1-120=地雷,121+=骷髅洞)

农业自动化

工具 说明
cheat_clear_debris 清除所有杂草、石头、树枝、草
cheat_cut_trees 砍伐所有树木,收集木材/硬木
cheat_mine_rocks 开采所有岩石/巨石,收集矿石
cheat_hoe_all 直到所有可挖掘的瓷砖
cheat_water_all 给所有耕种的土壤浇水
cheat_plant_seeds 在所有空锄头瓷砖上播种(需要种子ID)
cheat_fertilize_all 给所有锄地的瓷砖施肥
cheat_grow_crops 立即种植所有作物,准备收割
cheat_harvest_all 收割所有熟作物
cheat_dig_artifacts 挖出所有文物点

图案绘制

工具 说明
cheat_hoe_tiles 按坐标显示特定的瓷砖(瓷砖=“x,y;x,y”)
cheat_clear_tiles 清除特定瓷砖
cheat_hoe_custom_pattern 使用ASCII网格输入绘制形状

资源和项目

工具 说明
cheat_set_money 设置黄金金额
cheat_add_item 按ID添加项目(例如,“(O)465”表示杨桃种子)
cheat_spawn_ores 添加矿石:铜、铁、金、铱、煤
cheat_set_energy 将耐力恢复到最大值
cheat_set_health 将健康恢复到最大值

社交

工具 说明
cheat_set_friendship 与NPC建立友谊(心1-10或分)
cheat_max_all_friendships 最大化所有NPC友谊
cheat_give_gift 立即向NPC赠送礼物

升级

工具 说明
cheat_upgrade_backpack 升级背包(12、24或36个插槽)
cheat_upgrade_tool 升级工具(0=基本到4=铱)
cheat_upgrade_all_tools 将所有工具升级到指定级别
cheat_unlock_all 最大限度地利用一切:背包、工具、食谱、技能

示例:即时农场设置

1. cheat_mode_enable
2. cheat_warp Farm
3. cheat_clear_debris, cheat_cut_trees, cheat_mine_rocks
4. cheat_hoe_all
5. cheat_plant_seeds (with seedId "472" for parsnips)
6. cheat_grow_crops
7. cheat_harvest_all

WebSocket协议

mod和服务器通过WebSocket上的JSON进行通信。

请求格式:

{
  "id": "uuid",
  "type": "command",
  "action": "move_to",
  "params": {"x": 10, "y": 20}
}

响应格式:

{
  "id": "uuid",
  "type": "response",
  "success": true,
  "message": "Moved to position",
  "data": {}
}

配置

  • WebSocket端口:默认值 8765 (配置于 WebSocketServer.cs)
  • 工具冷却:工具摆动之间有30个游戏节拍(60fps时约0.5秒)
  • 国家广播:游戏状态每1秒发送一次
  • 路径寻找:A*具有50000次迭代限制,30个图块扫描半径

故障排除

模块未加载:确保安装了SMAPI 4.0.0+,并且mod文件位于正确的Mods文件夹结构中。

WebSocket连接失败:检查游戏是否正在运行,是否已加载保存。服务器每5秒重试一次连接。

寻路失败:A*算法最多尝试5次路径重新计算。某些区域可能因障碍物而无法到达。