kycoming/dsh-product-design:会话标签页里的简化版 Figma

前言

DSH 的用法是「在会话里把事做完」。产品设计类需求走到今天,常见的做法还是把 Figma 链接、截图、Miro 白板来回贴,AI 生成的是文字描述,落到画布上还得人工再搭一遍。这个插件把一块可交互的产品画布直接放进会话标签页,让需求描述、AI 修改和画布结果在同一处闭环。下面介绍 kycoming/dsh-product-design,维护者 KYCOMING,分类为客户端,目录页 2026-11-07 数据显示星标 0,属于较新的项目。

这是什么

一句话定位:会话标签页里的「简化版 Figma」产品设计画布。它不是独立设计工具,而是 DSH 插件,通过 window.__ModuleLoader__ 挂载会话视图、全屏画布与空会话入口;浏览器半由 src/client 构建成单文件模块,Host 半负责文档读写、SSE 变更推送和 agent 工具注册。

它解决的问题是:把「产品需求沟通」留在会话内。在画布上直接搭原型,组件可交互;加载 / 空 / 错误等状态变体可以由 AI 生成并在预览中切换,而不是在文字里描述。

当前版本 package.json 声明为 1.5.0,MIT 许可。兼容性方面,DSH 0.2.2-rc.1 是实测版本,0.2.0-rc.1 到 0.2.x 属于 engines.dsh 允许范围但未逐一实测,< 0.2.0 与 >= 0.3.0 未声明支持。

核心能力

这一块按「画布 → 编辑 → 预览 → 产出 → 数据」的顺序介绍。

多画板画布

  • 所有页面横向排在可平移、可缩放的画布上,每页独立尺寸:手机 390×844、平板 768×1024、桌面 1280×800。
  • Ctrl/⌘ + 滚轮 缩放,普通滚轮滚动,小方格网格随缩放变化。
  • 组件库 13 类:容器、按钮、输入框、卡片、导航栏、标签页、开关、复选框、头像、文本、图片、徽标、下拉框,点击添加到当前页。

编辑与排版

  • 容器可嵌套任意组件并裁剪超出内容;拖入 / 拖出容器自动改变层级。Shift + 点击 多选,画板空白处拖拽框选。
  • 磁吸对齐:拖动或缩放时吸附画板边缘、中心线与其它元素边缘、中心,并显示洋红参考线,顶部「磁吸」开关可关闭。
  • 约束(Constraints):每个元素可设水平 / 垂直约束,如左/右固定、左右拉伸、居中、按比例;整页行为可在「按约束 / 整体缩放 / 保持不变」间切换。
  • Auto Layout:容器与编组可开启堆叠布局(横向 / 纵向、间距、四向内边距、交叉轴对齐、主轴分布),开启后子元素坐标由布局接管,拖动改变的是顺序。
  • 图层树支持拖拽排序、显隐、锁定、重命名、按名称搜索;支持撤销重做(含 AI 改动)、复制粘贴(可跨页)、编组、对齐与分布。

组件状态与预览

  • 每个组件带独立状态集,例如按钮 默认 / 悬停 / 按下 / 禁用,输入框 默认 / 聚焦 / 已填写 / 错误 / 禁用,在右侧属性面板切换预览。
  • 预览模式隐藏工具栏与左右侧栏,只显示当前画板,组件真实响应悬停、按下、点击,开关、复选框、标签页、下拉可交互;Esc 或右上角「退出预览」返回编辑器。
  • 原型交互:给任意元素配置「点击 → 跳转页面 / 返回 / 打开为弹层」,预览里可以走通带返回栈的流程,Esc 逐层退出。

导出

工具栏「导出」提供三种产物,全部在浏览器内生成,不上传数据:

格式 内容
PNG(1× / 2×) 当前页光栅图,模型渲染 → SVG foreignObject → canvas
HTML 原型 单文件,内嵌全部页面与运行时,双击即可打开
React + Tailwind 单文件 Prototype.jsx,每页一个组件,带 useState 页面路由

导出走独立的「干净」渲染器 src/client/export/render.js,编辑器辅助线、图层标签、选中框不会进入产物。

设计稿库与保存状态

  • 一个会话对多份设计稿(1 对 N),左侧「设计稿」只列当前会话的稿子,可新建、重命名、复制、删除、导出 JSON;换会话不丢稿,也不看别的会话的稿子。
  • 工具栏实时显示 已保存 / 保存中… / 仅本地 / 同步失败 / 有冲突;遇到 409 不再静默覆盖,顶部出现冲突条,可「保留我的改动」或「使用远端版本」。

安装与启用

目前只通过 GitHub 分发,未发布 npm;package.json 保留 private: true 是有意为之,dist/ 不入库,由 scripts/build.mjs 在安装时生成。

# Desktop
dsh plugin --profile desktop add github:KYCOMING/dsh-product-design

# Web
dsh plugin --profile web add github:KYCOMING/dsh-product-design

没有 dsh 命令时,打开「插件 → 添加插件」,输入 github:KYCOMING/dsh-product-design。包根 package.json 的顶层 install 字段以机器可读方式声明了同一条规范安装命令,供插件市场在 L3「安装规范」检查中解析。

启用后确认 dsh-product-design 已开启,再重启 DSH——Host 半不热加载。重启后打开一个已有消息的会话,顶部标签栏会出现「产品设计」,点击进入编辑;也可在画布内点「全屏」进入独立画布。

卸载:

dsh plugin --profile desktop remove dsh-product-design

典型用法

安装完成后,实际使用围绕三条路径。

1、直接提需求。/design <需求> 把需求作为普通用户消息交给 AI,由 AI 调用画布工具生成或修改设计。它的实现是 Host 半通过 ctx.commands.register 注册命令,handler 把 rawInput 包装成普通用户消息并经 agent.followup() 提交,因此 AI 走完整工具链,而不是命令本身直接改文档。斜杠菜单中的 /design 行会显示中文本地化标题「设计」,保留 design 别名。

2、看 AI 改完的结果。AI 调用 product_design_apply 后,聊天回合末尾会出现当前页面的产品缩略卡片,可一键「打开画布」,不必先手动切到画布。

3、走一遍真实交互再交付。在预览模式里点按钮跳转页面、返回、打开弹层,确认流程能走通;需要交付时从工具栏导出 PNG 给评审,导出单文件 HTML 原型给非技术同事,或导出 React + Tailwind 组件给前端接。

权限、数据与注意

装上之后,插件是在当前 DSH 进程的权限内运行,安装前应先检查源码与许可证。它声明的行为如下。

  • 在 Host 进程内注册同源 HTTP 路由 /dsh-product-design/api,提供文档读写与 SSE 变更推送。
  • 设计稿写入 <DSH_HOME>/storages/dsh-product-design/docs/<docId>.json,会话记录当前打开的稿子(sessions/<sessionId>/active.json);浏览器端另用 localStorage(doc:v3:<sessionId>)做缓存和离线兜底。
  • 注册两个 agent 工具 product_design_get_document、product_design_apply,外加一段系统提示和 /design 命令。
  • 不发起外部网络请求,不收集遥测。

需要注意的几点:一是它只声明支持 >= 0.2.0-rc.1 <0.3.0-0,升级 DSH 前先核对版本;二是源码改动要改 src/ 再跑 pnpm run build,dist/client.js、dist/index.js 头带 AUTO-GENERATED 横幅,不要手改;三是星标为 0、维护者只有 KYCOMING 一人,依赖深度使用前建议通读 src/ 与 LICENSE。

结尾

这个插件的价值不在于替代 Figma,而在于把需求沟通、AI 生成和画布迭代收敛进同一个会话:表达需求、看缩略卡片、进画布确认、导出产物。目录页:https://www.skillhub.cn/plugins/KYCOMING/dsh-product-design ;源码与完整 README:https://github.com/KYCOMING/dsh-product-design 。

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

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

小夜