前言¶
DeepSeek Harness(DSH)里的一次对话,在界面上通常是一条从上往下滚动的消息流。流式阅读很顺手,但结构不直观:哪一句是你的意图、哪一段是模型的判断、哪一次工具调用真正改动了文件、又在哪一轮你改了主意——这些关系在一条直线上很难一眼看清。
下面介绍社区客户端插件 dsh-canvas(仓库 qiuyiwu1989-star/dsh-canvas)。它在会话视图环上增加 Canvas 标签,把当前会话渲染成可拖拽、可缩放的卡片地图;每张卡片带有记录背后的 anchorSeq,便于回溯到会话中的对应行。
这是什么¶
- 名称:dsh-canvas(README 中亦称 Thinking Canvas for DeepSeek Harness)
- 维护者:qiuyiwu1989-star(package.json 作者为 qiuyiwu)
- 分类:客户端(仅浏览器侧;host 半部为空壳,不向模型注册 Tool、不写 prompt)
- 版本(package.json):0.1.0,许可证 MIT
- 目录页:SkillHub 插件页
插件依赖注入 @deepseek-ai/dsh-client-ui-conversation,在对话界面挂载 Canvas 视图。DSH 生态主张「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
会话 → 卡片地图¶
打开任意会话,在对话上方标签中选择 Canvas。画布按「谁贡献了这条内容」分类,而不是按事件的 wire 形状:
| 角色 | 在会话中的含义 |
|---|---|
| My intent | 你发送的消息 |
| My choice | 在模型工作时注入的纠偏(steering) |
| AI contribution | 助手的一步(推理内容放在卡片详情里) |
| Tool action | 工具调用,标题为工具名 |
| Result | 一轮末尾 |
| Context | 注入的上下文与 system prompt |
| System | 压缩、重试、进程折叠等 |
| Error | 轮次错误与 token 上限 |
| Other | 画布未识别的事件类型 |
每张卡片可点击查看右侧详情(全文、turn、step、seq);卡片上的 anchorSeq 用于对应会话记录。v0.1 尚未实现从画布跳回对话,需自行根据 turn / step / seq 定位。
交互与导出¶
| 操作 | 方式 |
|---|---|
| 平移 | 拖拽空白区域 |
| 缩放 | 滚轮(以光标为中心),或工具栏 − / + |
| 适应视图 | 工具栏 Fit |
| 选中卡片 | 卡片上的 +,或详情面板 Add to selection |
| 搜索 | 工具栏搜索框;Dim others / Hide others 控制未命中项 |
| 按角色筛选 | 点击角色 chip,再点可排除;All 重置 |
| 移动卡片 | 拖拽卡片,位置按会话保存在本地 |
| 清除 | Esc |
| 导出 | 托盘:选中项导出为带溯源的 Markdown,或整画布 JSON |
空会话示例¶
无内容可画时,画布展示五张卡的虚构示例(邻里读书会报名页,从意图到交付)。README 明确说明示例数据为虚构,见仓库 examples/sample-canvas.json。
状态与边界¶
- 只读:读取会话快照,不写会话、不碰文件、不调模型、不发网络请求。
- 仅当前加载窗口:与 Chat、Trajectory 相同,只反映客户端已加载的会话窗口;更早历史需对话加载后才会出现在画布上。
- 本地状态(浏览器
localStorage,不上传): dsh-canvas:view:<sessionId>:平移与缩放dsh-canvas:layout:<sessionId>:拖拽后的卡片位置
清除这些键可恢复默认布局;私有模式或配额满时画布仍可用,但不会记住布局。
安装与启用¶
安装命令(来自 README):
dsh plugin --profile <your profile> add github:qiuyiwu1989-star/dsh-canvas
说明:
dsh plugin会在 profile 目录内转发给 pnpm,并对照已安装包 reconciledsh.profile.bundles;本包声明dsh.bundle,会自动进入 bundle 层列表。- 安装后需重启应用——profile 在启动时读取。
- profile 名即启动时使用的名:
dsh web对应web;自定义启动则用传入的名称。不确定时可看$DSH_HOME/profiles/下最近写入的目录。 - 本仓库无
prepare脚本、无构建步骤,lib/即源码,一般无需在pnpm-workspace.yaml的allowBuilds中额外放行。
卸载:
dsh plugin --profile <your profile> remove dsh-canvas
手动挂载 patch(可选):
dsh web --patch /path/to/dsh-canvas/cordis.patch.yml
安装成功时,宿主侧会在客户端启动图中扫描插件;启动一次后,页面中若出现类似行,表示已接入:
{
"id": "dsh-canvas",
"url": "/plugins/??dsh-canvas/client.js&rev=...",
"inject": ["@deepseek-ai/dsh-client-ui-conversation"]
}
典型用法¶
- 按上文命令为当前使用的 profile 安装插件并重启 DSH Web(或你的自定义启动方式)。
- 打开一条已有记录的会话,切换到 Canvas 标签。
- 用平移、缩放、Fit 浏览整体结构;点击卡片阅读详情,用角色 chip 或搜索框缩小范围。
- 需要留档时,从托盘导出选中 Markdown(含溯源)或整画布 JSON。
- 若需对照会话原文,用详情中的 turn / step / seq 回到 Chat 流中查找(v0.1 无反向跳转)。
适用场景与注意¶
适合:需要在 DSH 里复盘长会话结构、区分意图 / 工具 / 结果、或导出带溯源摘要的开发者与智能体使用者。
注意:
- 插件以当前 DSH 客户端进程与浏览器环境运行;安装前建议阅读 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
- 画布不拉取未加载的历史,也不改变会话内容;模型侧不可见此插件。
- 运行时零 npm 依赖;Node 引擎要求(package.json):
^22.19.0 || >=24(主要影响本地跑测试,非终端用户必装项)。
结尾¶
dsh-canvas 把 DSH 会话从纵向流变成可缩放、可筛选、可导出的卡片地图,并用 anchorSeq 把视觉节点钉回会话记录。若你在 SkillHub 或 GitHub 看到该插件,可按 README 安装到对应 profile 后,在会话里直接使用 Canvas 标签。
- 目录页:https://www.skillhub.cn/plugins/qiuyiwu1989-star/dsh-canvas
- GitHub:https://github.com/qiuyiwu1989-star/dsh-canvas