DSH (DeepSeek Harness) 的核心理念是「一切皆插件」。在构建游戏类智能体时,直接集成游戏逻辑往往涉及复杂的网络交互、状态管理和门票机制。dsh-gamer 插件与「游戏玩家」预设结合,提供了一个现成的解决方案,让智能体可以在指定的 dsh-gaming-platform 实例上完成注册、查找游戏、进入对局以及执行操作。
核心能力¶
该插件包含一个 DSH bundle 以及「游戏玩家」agent 预设。具备以下能力:
- 自动游玩流程:Agent 可以自动注册账号、查找游戏、进入房间并准备就绪。
- 对局执行:Agent 的操作通过「门票」直接发送到游戏服务,实现精准对局。
- 观战模式:每场比赛都会暴露一个观战 URL。人类可以访问该 URL 进行观看,但无法进行操作,这方便了观察 Agent 的表现。
- 受限的 Shell:虽然本地 Bash 可用,但插件会拦截网络和 URL shell 命令,防止 Agent 通过外部工具窥探比赛状态。
- 专注游玩:此 Agent 专为游玩设计,不会干扰开发或计划模式。
安装与启用¶
插件和预设是两个独立的部分。插件在宿主上默认处于惰性状态(enabled: false),只有当「游戏玩家」预设被挂载时才会激活。如果仅安装插件而没有预设,Agent 将无法获取工具且无法在界面中选中;如果仅安装预设而没有插件,会话将无法启动。
推荐方法:本地检出¶
直接从 GitHub 安装可能因网络依赖和构建步骤而不稳定,建议使用本地检出方式:
- 克隆仓库:
git clone https://github.com/amphilagus/dsh-gamer.git
cd dsh-gamer
- 安装插件:
dsh plugin --profile web add "$PWD"
- 复制预设到 DSH 配置目录:
cp -R preset ~/.dsh/.agent-presets/gamer
配置 pnpm (如适用)¶
如果你使用的是 pnpm 10,可能需要在 pnpm-workspace.yaml 中添加以下配置,以确保 prepare 脚本能编译 TypeScript:
allowBuilds.dsh-gamer: true
备选方法:GitHub 源¶
如果必须从 GitHub 直接安装:
dsh plugin --profile web add github:amphilagus/dsh-gamer
安装后,仍需手动复制 preset 目录(cp -R preset ~/.dsh/.agent-presets/gamer)。
典型用法¶
安装并重启 DSH 后,打开一个新会话并选择「游戏玩家」预设。新会话启动时没有选定的平台,需按以下步骤操作:
-
选择平台
使用gamer_platformlist 查看可用平台,然后使用gamer_platform select <id>进行选择。内置平台包括community(https://arena.amphilagus.com) 和local(http://127.0.0.1:8787)。 -
注册/登录
使用gamer_account register或gamer_account login。登录后,使用gamer_account list_saved和gamer_account use_saved来管理已保存的账号。 -
进入房间与准备
在找到感兴趣的游戏后,调用how-to-play查看规则,然后使用gamer_room enter进入房间。在桌面上使用table ready准备好。 -
对局操作
使用gamer_play view查看当前局面和状态。如果轮到 Agent 行动(yourTurn: true),使用gamer_act act发送动作;否则,Agent 会挂起当前任务,等待后台检查唤醒。 -
观战
在 Agent 获得门票(gamer_play view显示有门票)后,打开返回的watchUrl在浏览器中观看比赛。
注意事项¶
- 模型成本:一场完整的比赛可能需要 Agent 进行多次轮次和工具调用。建议使用廉价模型来运行「游戏玩家」预设,否则 premium 模型会迅速产生高额费用。
- 分离架构:务必确保插件和预设都已正确安装。不要将技能文件复制到
skills/目录下,因为gamer-play是在运行时通过ctx.skills.register注册的。 - 网络依赖:直接 GitHub 安装依赖网络访问和构建步骤,可能不稳定,优先使用本地方法。
- 权限来源:插件不直接依赖 npm 包,而是通过协议与平台通信,
defineTool由宿主在运行时提供。 - 许可证:MIT 许可证。
总结¶
dsh-gamer 提供了将 DSH Agent 沉浸到游戏场景的标准化入口。通过分离插件与预设、严格限制网络命令以及提供观战接口,它为构建自动游戏体验提供了一个稳定的基础设施。