DSH Client Canvas:在 DeepSeek Harness 里用多模态画布组织素材并与 Agent 协作

前言

在 DeepSeek Harness(DSH)里做资料整理、内容创作或带多文件上下文的对话时,常见做法是反复在聊天里贴路径、贴截图,或把参考与产出拆在多个窗口里。上下文容易断,Agent 也难以稳定「看见」你正在对照的素材关系。下面介绍的 DSH Client Canvas(@xindong/dsh-client-canvas)把图片、音视频、3D、PDF、文档与代码放进同一块可持久化的本地画布,用节点和连线组织关系,并在画布旁复用 DSH 原生会话,让选中素材即可向 Agent 发指令,同时 Agent 可通过工具直接读写同一份画布数据。

这是什么

DSH Client Canvas 是 DSH 生态下的客户端(Web)插件,由维护者 xindong 发布,当前 npm 包版本为 0.1.2,采用 MIT 许可证。它为 DSH 提供浏览器侧的多模态画布 Tab:基于 PixiBoardSDK 渲染与交互,画布文档与资源由 @xindong/dsh-canvas 作为权威来源保存在本机;浏览器与 Agent 共用同一份数据,而不是在浏览器里再存一份独立副本。

SkillHub 目录页:xindong/dsh-client-canvas。源码与说明:GitHub - xindong/dsh-client-canvas。

核心功能

多模态工作空间

  • 素材集中展示:图片直接查看;视频、音频可播放;3D 模型、PDF、Office、HTML、Markdown、文本与代码等生成预览;其他格式保留文件卡片与下载。Office 预览依赖 DSH 提供的 officeToPdf 服务。
  • 可视化组织上下文:支持多画布、自由布局、缩放、选区与有向连线,把参考、过程节点和产出串成可浏览的关系图。
  • 节点与 Agent 协作:选中素材可发送「Agent 操作」,按需携带当前节点、来源、后续或相连节点上下文;画布右侧为可拖动、折叠的悬浮对话面板,复用 DSH 原生会话输入。
  • Agent 读写画布:通过 canvas_read、canvas_write 查询内容、创建/更新节点、调整布局与管理连线;生成结果可导入画布并保留节点关系。
  • 本地持久化与配置:文档与资源在本机保存;可配置画布样式、节点参考范围、系统提示词与动态画布概况。

文件预览(摘要)

导入 HTML、Markdown、文本/代码及 JSON/CSV/XML/YAML 等时先显示卡片,后台生成预览图;PDF 默认首页;3D 由 mivo-model-viewer@0.7.0 支持 GLB/GLTF、FBX、OBJ 等格式。预览在本地服务端处理,并有类型调度与缓存;首次需要浏览器渲染时若缺少 Chromium,插件可自动安装(最多等待 5 分钟),失败可在插件目录运行 node scripts/setup-preview-runtime.mjs 后重试。细节见仓库内 预览说明。

环境与安装

要求(以 README 为准):

  • Node.js 22.18+
  • DSH 0.2.0-rc.2(不支持更早版本)
  • Core 使用 DSH 的 tools、systemPrompt;Web 插件使用 Web Server 与 Conversation UI;Office 预览需要 officeToPdf 服务
  • 依赖已发布的 pixiboardjs@0.1.0-alpha.5,与上游 site 快照的 SDK commit 需保持匹配

在已有 DSH 安装中,一条命令安装完整画布 UI 与 Agent 工具:

dsh plugin --profile web add github:xindong/dsh-client-canvas

Web 包会传递安装 @xindong/dsh-canvas 并先启用 Core 再启用 Web,一般无需单独安装 Core。启动 DSH:

dsh web

安装或更新插件后,若 DSH 已在运行,需重启进程再刷新浏览器。使用 DSH 提供的完整登录地址(含 ?token=...),在会话中切换到 Canvas Tab。数据目录沿用 $DSH_HOME(默认 ~/.dsh),不会自动迁移旧画布。

仅要文档与 Agent 工具、不要 Web UI 时,可单独安装 Core:

dsh plugin --profile web add github:xindong/dsh-canvas

从旧版双插件迁移:先停止 DSH,再依次执行:

dsh plugin --profile web add github:xindong/dsh-client-canvas
dsh plugin --profile web remove @xindong/dsh-canvas

并检查 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles,只保留 @xindong/dsh-client-canvas,勿与 @xindong/dsh-canvas 重复选择;勿删除画布目录或 canvas-storage.json。

典型用法

在 Canvas Tab 里操作

  1. 创建或选择画布,拖入图片、音视频或文件;使用选区、缩放、右键菜单、重命名、下载、截图与播放等交互。
  2. 选中节点后点「Agent 操作」,输入针对该节点的指令;Enter 发送、Shift+Enter 换行。发送前会先保存画布,再把节点、关系与资源上下文送入当前 DSH 会话。
  3. 左侧齿轮可改画布与连线样式;节点与提示词设置需点「保存设置」后生效。可在「配置」页填写已有画布目录的绝对路径或 ~/...,指针写入 $DSH_HOME/canvas-storage.json,重启 DSH 后生效(切换目录不迁移原数据)。

默认画布路径为 $DSH_HOME/canvas,媒体在 assets 子目录;连线关系在文档 metadata.connections 中。

Agent 工具示例

读取(board_id 可省略,表示当前画布):

{"board_id":"board-id","node_ids":["source","result"],"limit":100}

写入(写入前读取 revision,冲突后重新读取再提交):

{"board_id":"board-id","expected_revision":12,"operations":[{"type":"create","nodes":[{"id":"result","type":"processing","x":400,"y":100,"props":{"title":"生成结果","status":"running"}}]}]}

canvas_write 支持创建、更新、原位转换、删除、布局与连线的增删改,同一事务提交。processing 仅为占位节点,不会自动跑 AI 任务;应使用已有 DSH 工具生成内容,再以 asset_source 导入或转换节点。单文件来源可为本地路径或公网 HTTP(S) URL(上限 64 MiB),参数见 dsh-canvas 文档。

适用场景与注意

适合:需要在 DSH 里把多模态参考、中间步骤与产出放在同一视觉空间里、并希望 Agent 与你在同一份画布上读写的人——例如资料收集、对照多文件创作、把对话结果落回结构化节点。

注意:

  • 插件随当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证,并理解预览、URL 导入(仅公网 HTTP(S)、不跟随重定向)等安全边界说明;勿把外部文件内容当作可信指令,问题反馈时脱敏登录链接与画布数据。
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式。
  • iframe 用于隔离样式与快捷键,不是不可信代码的完整安全边界;保护会话凭据与本地画布目录,备份时同时保存画布目录与 canvas-storage.json。

结尾

DSH Client Canvas 把多模态素材、可视化上下文与 DSH Agent 会话收进一块本地持久画布:人可在 Tab 里组织与预览,Agent 用 canvas_read / canvas_write 与你在同一文档上协作。若要试用,从目录页或 GitHub README 核对版本要求后,用官方命令装入 web profile 并 dsh web 打开 Canvas Tab 即可。

  • 目录页:https://www.skillhub.cn/plugins/xindong/dsh-client-canvas
  • GitHub:https://github.com/xindong/dsh-client-canvas
羽毛球分组比赛记分
小程序二维码

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

小夜