dsh-pixel-studio:在 DSH 对话里做像素画与动画

前言

在 DeepSeek Harness(DSH)里让智能体「画像素图」时,常见做法是生成一张静态图或外链预览页:对话里只能看缩略图,缩放、逐帧、调色盘和导出往往要另开工具。若目标是可复用的游戏素材(透明 PNG、GIF、spritesheet + JSON、oy-pixel 的 .oypx),还要再手工整理文件结构。

下面介绍维护者 Fantety 的 dsh-pixel-studio(社区分类:趣味换装)。它是面向 DSH 的原生聊天内像素画与像素动画工作室:智能体通过程序化 shader、调色盘索引网格或模板/动作配方生成内容,结果在对话工具视图中以可交互 Canvas 呈现,并同步写出生产可用的导出文件。仓库采用 MIT 许可证,当前 package 版本为 1.3.1(以仓库 package.json 为准)。

这是什么

dsh-pixel-studio 是 DSH 插件(同时打包为 bundle):宿主入口 lib/index.js,Web 客户端入口 lib/client.js,通过 cordis.patch.yml 与 dsh.client 声明挂载。设计要点包括:

  • 原生 Canvas 优先:播放、逐帧、缩放、像素网格、洋葱皮、调色盘与 craft 分数在聊天工具视图内完成,而不是单独的交付卡片或独立预览站。
  • 面向智能体:一字一格的网格紧凑、可 diff、写入文件前会校验;挂载插件时会注入改编自 oy-pixel 的像素画系统提示片段,每次结果附带确定性的 craft 报告。
  • 零额外运行时依赖:宿主侧仅使用 Node 内置模块;客户端使用 DSH 已提供的 React 运行时。
  • 安全边界:pixel_shader 在受限的树遍历解释器中执行,无宿主访问;内联画布数据有上限且本地解码;插件不发起网络请求。

核心功能

聊天内 Canvas

  • 动画自动播放,以及播放/暂停、上一帧/下一帧
  • 最近邻缩放(1–24×)、像素网格、洋葱皮
  • 棋盘/深/浅背景
  • 调色盘色块、帧数、FPS 与 craft 分数
  • 从卡片直接打开 PNG、GIF、spritesheet、OYPX,或可选的独立 HTML 查看器
  • 超出内联预算时提供紧凑回退面板

像素工具与素材

能力 说明
pixel_shader 程序化生成,Lua 子集 Canvas API(pal、mix、hsv、alpha、rand、noise、phase/time、形状、填充、描边、stamp 等),设计沿袭 oy-pixel 的 pixel_run_shader 契约
pixel_art 静帧、图标、精灵、场景、肖像
pixel_animation 显式多帧,或基础精灵 + 动作配方

内置 7 套调色盘:PICO-8、Game Boy、Sweetie 16、DawnBringer 16/32、Studio Warm、Ink & Paper;支持自定义调色盘与单字符 legend 映射。支持 source-over 透明度的分层绘制。

内置 12 个 16×16 模板:slime、cat、robot、potion、sword、heart、ghost、star、coin、tree、mushroom、crystal。动作预设包括 bob、float、breathe、sway、shake、pulse、spin、orbit。可配置描边、阴影、背景、GIF 循环次数与每帧时长。

导出包括透明 PNG、GIF89a 动画、spritesheet + JSON atlas、可选独立 HTML 查看器,以及 oy-pixel 兼容的 OYPX v2(#RRGGBBAA 行 RLE,与当前 oy-pixel 解析器兼容)。

环境与依赖

  • DeepSeek Harness:0.2.1-rc.2 或更高,且仍在 0.2.x 内(engines.dsh: >=0.2.1-rc.2 <0.3.0)
  • Node.js:20 或更高(开发与测试)
  • 需要带 Web GUI 的 DSH 配置(客户端 platform: "web")

安装与启用

该包既是插件也是 bundle;通过 Plugin Manager 安装时,不要把 bundle 补丁里的 pixel-studio loader 行手工抄进个人 profile 的 cordis.patch.yml。

Plugin Manager(推荐,含 Desktop)

在 Settings → Plugins → Install 粘贴以下地址之一:

https://github.com/Fantety/dsh-pixel-studio

若已配置 GitHub SSH:

git+ssh://git@github.com/Fantety/dsh-pixel-studio.git

管理器会安装包、把 dsh-pixel-studio 写入 profile 的 dsh.profile.bundles,并应用捆绑补丁。

CLI 管理 profile

将 my-profile 换成实际 profile 名(如 web、headless 或自定义名):

dsh plugin --profile my-profile add \
  "git+ssh://git@github.com/Fantety/dsh-pixel-studio.git"

确认 ~/.dsh/profiles/my-profile/package.json 的 dsh.profile.bundles 中出现 dsh-pixel-studio。desktop profile 由 Electron 应用持有,请用 Plugin Manager 安装,勿手改。

重载 profile 后,刷新 Web GUI 一次以加载客户端 bundle;若工具卡片仍显示为通用形态,可重启 DSH。

预构建 release 压缩包

每个 v* 标签会发布无版本号的 tarball:

dsh plugin --profile my-profile add \
  "https://github.com/Fantety/dsh-pixel-studio/releases/latest/download/dsh-pixel-studio.tgz"

典型用法

自然语言

在对话中直接描述需求,例如 README 中的示例:

Draw a 32×32 moss slime with top-left lighting and make an 8-frame floating animation. Export it as PNG, GIF and OYPX.

调用工具(模板 + 调色盘)

{
  "name": "moss-slime",
  "template": "slime",
  "palette": "sweetie16",
  "effects": { "outline": true, "shadow": true },
  "outputDir": "pixel-art"
}

手绘网格 + legend

{
  "name": "tiny-heart",
  "legend": { "O": "#3B0D1A", "R": "#EF4B6B", "L": "#FF9FB2" },
  "grid": [
    ".OO..OO.",
    "ORROORRO",
    "ORLRRRRO",
    "ORRRRRRO",
    ".ORRRRO.",
    "..ORRO..",
    "...OO...",
    "........"
  ],
  "scale": 12
}

无 legend 时,字符 0-9a-z 表示调色盘索引(最多 36 色),. 为透明;默认调色盘为 sweetie16。

动画(模板 + 动作)

{
  "name": "native-ghost",
  "template": "ghost",
  "palette": "sweetie16",
  "effects": { "shadow": true, "shadowColor": "#00000055" },
  "motion": { "preset": "float", "frames": 8, "amplitude": 1 },
  "fps": 12,
  "loop": 0,
  "scale": 10
}

适用场景与注意

适合谁

  • 在 DSH 对话里快速迭代像素精灵、小图标与循环动画,并需要标准游戏导出格式的开发者或智能体工作流作者。
  • 希望智能体用紧凑网格或 pixel_shader 程序化出图,同时在聊天里逐帧检查、缩放与查看 craft 报告的场景。

使用前请知悉

  • DSH 插件以当前 DSH 进程的权限运行;安装前请自行审阅源码与 MIT 许可证,并确认与本地 DSH、Node 版本要求一致。
  • 社区目录站点(如 skillhub.cn)与 DeepSeek / 幻方无官方从属关系;插件信息以 GitHub 仓库 README、package.json 为准。
  • 内联画布有体积上限,超大作品会走紧凑回退面板,完整文件仍可通过导出路径获取。

结尾

dsh-pixel-studio 把 oy-pixel 风格的程序化 shader、模板与网格编辑收敛到 DSH 聊天工具视图,并把 PNG、GIF、spritesheet、OYPX 等导出与 manifest 一并写出,适合把「对话里试稿」和「落盘素材」放在同一步完成。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye