dsh-puzzle
其他 活跃维护

dsh-puzzle

feverZHONG/dsh-puzzle

支持在WebUI界面内随时唤起滑块拼图浮窗,提供2×2到6×6多档难度可选,面板可拖拽移动,支持预览原图、实时同步进度,AI助手可互动干预游戏进程。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
JavaScript
主要语言
None
开源协议
27 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:feverZHONG/dsh-puzzle
git clone https://github.com/feverZHONG/dsh-puzzle.git
git clone git@github.com:feverZHONG/dsh-puzzle.git
README.md main

dsh-puzzle-plugin

DeepSeek Harness(DSH)WebUI 的滑块拼图小游戏插件:随时点开就玩,AI 助手能实时发话、换图、看进度。

功能特性

  • 输入框工具行左端「🧩 拼图」小开关打开浮窗面板(标题可拖拽移动)
  • 滑块拼图(华容道式):点空格相邻的块滑动,2×2 ~ 6×6 可切换
  • 新局 / 预览 / 步数 / 用时;拼完弹庆祝(随机台词),「再来一局」继续
  • 面板常驻助手碎碎念(开局/完成随机台词池),助手也能用 puzzle_talk 实时发话
  • 换图三路
    1. 丢图进 puzzles/(本地图库目录,不入 git/GitHub 仓库):png / jpg / webp / gif 放进去,
      设置页「🔃 刷新图片」即识别
    2. 面板 / 设置页直接粘贴图片 URL(http / https / data:)
    3. 对话里让助手换:puzzle_set_image(图库名 或 直链 URL)
  • 默认图是代码内置的占位图(SVG data URL,无本地图片文件)

AI 侧工具(模型可用)

工具 作用
puzzle_talk 往拼图面板发一句话(提示/鼓励/吐槽),显示在面板气泡里
puzzle_state 查当前局:格数/步数/用时/完成状态/当前图/可用图
puzzle_set_image 换图(name = puzzles 里的文件名,或 url 直链)

安装

# 从源码目录安装
dsh plugin --profile web add <插件目录>

# 或从打包好的 tgz 安装(可移植,不依赖源目录存活)
dsh plugin --profile web add dsh-puzzle-plugin-0.2.0.tgz

安装后重启 WebUI 生效。dsh 请替换为你安装的 DSH CLI 调用方式。

打包

pnpm pack --pack-destination <你的插件分发目录>

产物 dsh-puzzle-plugin-<版本>.tgz 为 npm 标准 tarball。

配置

  • 持久化到 $DSH_HOME/dsh-puzzle-config.json(当前图 / 默认格数),跨重启恢复
  • 无 Config schema、无 settings namespace 依赖,安装即用

架构

  • Host 半index.js 入口 + host/):index.js 只做组装(一次 apply 一份状态 → 注册路由/工具);
    host/config.js 配置持久化、host/images.js 图库扫描与文件服务、host/state.js 可变状态(工厂模式)、
    host/routes.js 路由 /dsh-puzzle/*(images / file / state / report / talk / config / refresh)、
    host/tools.js 三个 AI 工具
  • Client 半client.js 产物 + client/src/ 源码 + client/build.mjs 打包):
    conversation.input.left 入口开关 + shell.overlay 浮窗面板 + settings.section 图库管理;
    1s 轮询拉消息/配置/图片清单;图片 cover 裁剪切片
  • 零第三方依赖(host 只用 node 内置模块,client 打包也是 node 内置 fs),无 Config schema,安装即用

开发

DSH client bundle 是单文件直出(无构建步骤、require 无相对路径),所以 client 源码按功能拆到
client/src/(data 静态内容 / core 核心逻辑 / panel 浮窗面板 / ui 小组件 / entry 入口),
改源码后必须重跑打包生成产物:

node client/build.mjs

刷新页面即生效(client 半热重建);host 半(host/index.js)改动需重启 WebUI。

License

MIT