前言¶
DSH 理念是「一切皆插件」。在处理空间布局、版式设计或数据分段时,模型有时无法仅凭文字描述出边界。需要一个浏览器弹出的交互式画板,让用户直接参与绘制,同时将结果标准化地回传给模型。
插件简介¶
- 名称:
dsh-partition-board - 所有者:gst20060726
- 定位:AI 认为需要跟人确认「怎么分区」时自主调用的 DSH 插件。它在浏览器里弹出一块画板。
- 核心价值:通过色卡、绘图工具和约束标注,将模糊的布局需求转化为精确的矢量分区,并回传给 AI 进行后续解读。
安装与启用¶
在本地环境安装此插件,需进行目录联结并在配置文件中声明依赖。
# 1) 目录联结(等价于 `dsh plugin --profile web add link:<dir>` 建的链接)
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-partition-board" `
-Target "$env:USERPROFILE\.dsh\plugins\dsh-partition-board"
# 2) 在 ~/.dsh/profiles/web/package.json 里加两处:
# dependencies: "dsh-partition-board": "link:C:/Users/<你>/.dsh/plugins/dsh-partition-board"
# dsh.profile.bundles: 追加 "dsh-partition-board"
# 3) 验证安装(可选)
cd "$env:USERPROFILE\.dsh\plugins\dsh-partition-board"
npm test # 72 项:35 项纯函数 + 37 项无头渲染
npm run verify # 8 项安装期契约自检
核心功能¶
该画板提供以下交互能力:
- 色卡与标注:提供色卡控件,用于标注「颜色 ↔ 含义」(如红=主区、蓝=侧栏),颜色本身无意义,图例才是语义。
- 绘图工具:支持矩形、套索、软笔刷、橡皮四种绘制模式,每块分区可调整边界羽化(模糊分区)。
- 边画边写:图形说不清的约束(如「这块要能并排看两张卡」)可直接写在右栏,随消息回传给 AI。
- 缩放与平移:
Ctrl/⌘+ 滚轮:以光标为锚点缩放(1–8 倍),普通滚轮仍滚动页面。- 抓手拖动:平移画布。
0键:视图复位。- 装饰性线宽/字号/标签门槛都按缩放抵消,放大后不会糊。
- AI 辅助补全:未标注与细小分区由 AI 补全,方案以虚线叠加展示,用户可确认或返工。
- 结果回传:确认后的完整规划(图例 + 几何 + 羽化度 + 栅格矩阵)回传给 AI,AI 按
purpose解读并推进项目。
协作流程¶
插件采用消息式通信,工具调用不阻塞。
- 工具调用:模型调用
partition_board({purpose, legend, ...}),画板立即弹出。 - 用户操作:用户在画板上标注、绘画、调整羽化或书写说明。
- 消息回传:用户操作通过
conversation.send("[partition-board] {...}")发送给宿主。 - 模型处理:
- 收到
kind = plan-request或rework:同一boardId、revision+1、mode="review",再调一次工具展示方案。 - 收到
kind = confirmed:拿到plan,按purpose解读并推进项目。
- 收到
技术细节与边界¶
- 存储机制:画板状态存在
localStorage(键dsh.partitionBoard.v1:<sessionId>:<boardId>)。换浏览器或清缓存会丢失;隐私模式下画板可用但不跨刷新记忆。 - 无状态宿主:没有宿主侧的画板存储,这是刻意的(安全/鉴权原因)。规划事实来源是对话本身。
- 栅格编码:栅格是 32 列,
grid.cells用 base36 单字符编码。 - 载荷预算:矢量总点数封顶 600,分区不会因超预算被丢掉。
- 无障碍支持:画布是
role="application",支持aria-label和aria-describedby(状态条)。 - 双语界面:界面文案按
navigator.language切换(有信号但不是中文 → 英文;完全没信号 → 中文)。 - 已知缺失:触摸屏双指捏合/旋转、分区布尔运算、分区排序与图层调整。
结语¶
插件通过浏览器弹出的画板解决了 AI 在处理空间布局时无法精确界定边界的问题。用户可以直接参与绘制和约束标注,配合 AI 的自动补全功能,能够快速达成共识。确认后的规划以标准化的载荷回传给模型,推动项目继续进行。