dsh-turn-game:把 DSH 会话接到任意回合制游戏

前言

在 DeepSeek Harness 里做智能体,常见做法是工具调用驱动业务逻辑。回合制游戏却是另一套节奏:轮到 AI 时才需要唤醒,落子后应休眠,终局还要留一段复盘。若把整套规则写进插件,每换一款游戏就要改 DSH 侧代码。

下面介绍 dsh-turn-game。它是一个接口项目,不是五子棋专用插件。游戏只实现 GET /api/turn 与 POST /api/action,经本地 Turn Gateway 与插件对接,DSH Agent 负责绑定会话、接收激活、提交动作。五子棋在 examples/gomoku 里,仅作参考实现。

维护者:@pineapple182。分类:客户端。源码与 npm 包见 GitHub,社区目录页:skillhub.cn/plugins/pineapple182/dsh-turn-game。许可证 MIT;当前 npm 版本 0.1.0(以 package.json 为准)。

这是什么

一句话:dsh-turn-game 把当前 DSH 会话接到通用 Turn Gateway;任何实现回合协议的游戏都能获得「轮到你时唤醒、落子后休眠、结束时复盘」,无需改插件或网关。

数据流如下:

玩家 → 游戏 UI → 游戏 Host(规则 / 状态 / 动作校验)
                    │  GET /api/turn / POST /api/action
                    ▼
               Turn Gateway(通用激活层)
                    │  activation / action 转发
                    ▼
               dsh-turn-game(本插件)→ DSH Agent

网关不认识具体游戏;游戏不认识 DSH。插件默认只访问本机 Gateway(http://127.0.0.1:8766),不读写文件、不执行 shell、不访问外网。

核心功能

激活类型

  • turn:轮到你时,模型通过 game_action 提交动作。
  • result:玩家赢或和棋时,模型做收尾复盘并 ack。
  • Agent 自己下出胜手时,结果已在落子返回里,不重复唤醒。

Agent 工具

工具 作用
game_bind 把当前会话绑定到 Turn Gateway;可选 matchId 只绑定某一局
game_unbind 解除绑定,对局继续存在
game_list 列出网关里的游戏对局和待处理回合
game_state 查看某个对局状态(display + JSON;只读)
game_action 提交当前回合动作;activationId + action(JSON 字符串)

插件会处理 whenIdle、去重与最多一次纠正;结果通知会自动 ack。

接入新游戏(概要)

完整契约见仓库 docs/TURN-PROTOCOL.md,步骤见 docs/ADD-A-GAME.md。

  1. 实现 GET /api/turn,返回 turnId、actor、agents、display、instructions、state、actionSchema、actionExample 等字段。
  2. 实现 POST /api/action,校验 matchId / turnId / actor,返回新状态。
  3. 可选 POST /api/presence,供 UI 展示「思考中」。
  4. 把 AI 控制的 actor 放进 agents,并把游戏 URL 注册给 Gateway。

插件与网关均无需修改。

信任与权限(安装前可核对)

  • 零运行时 npm 依赖:@deepseek-ai/* 由 DSH 宿主提供。
  • 无 postinstall / 无构建脚本;npm 包仅含 lib/、cordis.patch.yml、README、LICENSE、图标等约 10 个文件。
  • 游戏规则与动作校验在游戏侧,插件不替游戏裁决。

安装与启用

插件安装不需要 clone 仓库或运行仓库里的 Python / PowerShell 脚本。推荐在 DSH 插件市场搜索 dsh-turn-game;也可用 CLI(命令来自官方 README):

dsh plugin --profile web add dsh-turn-game
# 桌面端把 web 换成 desktop

国内网络可在 ~/.npmrc 配置镜像(npm 与 pnpm 共用):

npm config set registry https://registry.npmmirror.com
# 镜像未同步新版本时,单次改用官方源:
dsh plugin --profile web add dsh-turn-game --registry=https://registry.npmjs.org

镜像排查可参考 DSH Plugin Hub 的 npm mirror 教程。

安装后需要完全退出并重启 DSH。从源码开发时才用本地路径安装,例如:

dsh plugin --profile desktop add "C:\path\to\dsh-turn-game"

典型用法

绑定对局

游戏端先创建或加入一局,在 DSH 会话里用自然语言即可,例如:绑定游戏、开始游戏、加入对局、接管回合、连接游戏、继续刚才那局等。game_bind 的触发描述覆盖这些意图,不要求出现「棋 / 棋局」字样。绑定可以先于开局;之后出现回合会自动唤醒。

示例:五子棋

仓库 examples/gomoku 提供 Python 3.12、零第三方依赖的 15×15 五子棋(无禁手,含悔棋、重开等),带浏览器 Canvas UI、JSON API、CLI 与 SSE。详细 API 与字段见 examples/gomoku。

运行示例前需自行按该目录文档启动游戏 Host 与 Turn Gateway;再在 DSH 中安装本插件并完成绑定。调低 DSH 的 thinking effort(思考强度) 会更快、更省 token,也更容易赢;调高则更慢、更贵,但更难赢。

适用场景与注意

适合谁

  • 希望在 DSH 里让 Agent 参与本地或自研回合制游戏,且不想把 DSH 与具体规则耦合的开发者。
  • 愿意按 Turn 协议实现或改造游戏 Host,并部署 Turn Gateway 的维护者。

兼容性(来自 README)

  • 已验证 DSH 0.2.1-rc.2;engines.dsh 为 >=0.2.0-rc.1 <0.3.0。
  • Node ^22.19.0 || >=24.0.0;纯 ESM JavaScript。
  • 尚无 player token;本机 actor 身份按信任模型处理。

权限说明

插件以当前 DSH 进程权限运行。安装前建议阅读 源码 与 MIT LICENSE。社区目录站点 skillhub.cn 为独立生态索引,与 DeepSeek / 幻方无官方从属关系。

Bug、游戏接入或新玩法可开 GitHub Issue;安全问题请走 GitHub Security Advisories。

结尾

经过上面的步骤,dsh-turn-game 的价值在于:用固定的小接口把 DSH 会话挂到 Turn Gateway 上,游戏侧自带规则与 UI,Agent 侧只管绑定与回合动作。自带五子棋示例便于对照协议;其它游戏按文档接入即可,无需 fork 插件。

  • 目录页:https://www.skillhub.cn/plugins/pineapple182/dsh-turn-game
  • GitHub:https://github.com/pineapple182/dsh-turn-game
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye