前言¶
在 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。
- 实现
GET /api/turn,返回turnId、actor、agents、display、instructions、state、actionSchema、actionExample等字段。 - 实现
POST /api/action,校验matchId/turnId/actor,返回新状态。 - 可选
POST /api/presence,供 UI 展示「思考中」。 - 把 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