dsh-slide:按 Conversation 开启的 AI 幻灯片编辑器

前言

在 DeepSeek Harness(DSH)里让智能体产出演示文稿,常见流程是先生成大纲或 Markdown,再由人搬到演示工具里排版;后续想调整,只能在对话里用文字反复描述改哪里。dsh-slide 换了一种做法:它把当前 Conversation 的聊天界面切换成一块 16:9 幻灯片画布,人只负责选中对象、页面或整个 deck,具体修改由专用的 annotation 子代理执行,结果直接反映在画布和缩略图上。DSH 的理念是「一切皆插件」,dsh-slide 就是以插件形式提供的这类能力。

下面按功能、安装、典型用法的顺序介绍它。

这是什么

dsh-slide 是 JeremyGuo 维护的 DSH Web 端插件,当前版本 0.2.0,MIT 许可证。一句话定位:一个按 Conversation 独立开启的可视化幻灯片编辑器,带 AI 批注(annotation)、Workspace 文件管理与共享知识引导。

它解决的问题是:让智能体在一块持久、可视的画布上生成并迭代多页幻灯片,而不是把幻灯片内容当纯文本聊天。编辑动作完全交给 AI,人不直接改字或拖动对象,只通过选择焦点和下达指令参与。

核心功能

按 Conversation 开关,不做全局替换

Slide Editor 的开关只作用于当前打开的 Conversation,不是把所有聊天界面换成画布。开启后保留同一 Session、Workspace 与模型配置;关闭时禁用当前 Session 的模式,但保留最后一次文档关联。对某个 Conversation 开关不影响其他 Conversation。

AI-only 编辑

多页 16:9 画布,带实时内容缩略图与对象、页面选择。人机交互只有一种:选中对象、页面或整个 deck,然后向 annotation agent 下达指令。直接文本编辑、对象移动与缩放、插入、删除、页面键盘修改都不暴露。

编辑由专用 annotation 子代理执行,以选中对象、选中页面或整个 deck 为焦点;每个子代理保留整 deck 修改权,校验通过的操作直接应用。选择只是上下文而非权限边界,为完成请求,agent 仍可能做更大范围的修改,包括新增页面。

annotation 线程与右侧面板

每个 annotation 拥有独立消息线程,可以继续对话。标题由首个请求自动总结,可手动重命名,后续轮次保留。

子代理运行期间,可以在 annotation 输入处就地看到可见助手文本与工具生命周期;隐藏的模型推理不暴露。右侧面板支持折叠单个线程、查看已应用操作数、resolve、reopen、删除;面板宽度可拖拽调整,宽度本地保留,也可用方向键调整。one-shot 子代理运行不会唤醒父 Conversation,各 annotation 可独立推进。

文件管理与导出

deck 自动持久化到 Workspace,默认路径:

.dsh-slide/<session-id>.slides.json

路径含 Session id,所以同一 Workspace 的不同 Session 默认不共享文件;如果刻意让多个 Session 关联同一个 *.slides.json,它们会共享该文件,并发保存可能互相覆盖。

浮动 File 菜单提供 New / Load / Save / Save As / Copy / Export / Close;其中 New、Load、Save As 使用 Workspace 文件选择器选文件,不需要手输路径。配套的 Workspace 文件浏览器支持单击导航与打开、文本与图片预览、拖拽上传、新建文件夹、重命名、删除。

当前 deck 可导出为独立浏览器演示,支持键盘导航、全屏、打印为 PDF;Workspace 图片以 data URI 内嵌。

渲染能力

图片元素支持三种来源:workspace:<relative-path>、data URL、HTTPS URL,fit 支持 contain / cover / fill。几何元素使用标准 SVG path 数据:多边形(M/L/H/V/Z)、三次贝塞尔(C/S)、二次贝塞尔(Q/T)、椭圆弧(A)。

所有坐标与视觉长度——x、y、width、height、fontSize、radius 等——都使用固定 1280 × 720 的幻灯片设计空间,编辑器随渲染尺寸同步缩放,页面与缩略图共用同一套坐标。

共享知识与文件访问边界

插件提供共享知识初始化 prompt 与 Workspace 相对的知识文件列表,可在 Settings 或编辑器面板编辑,作为 annotation 的公共上下文。宿主文件路由绑定当前 Session 的权威 cwd,拒绝词法路径穿越与 symlink 逃逸。

安装

安装发布版插件,然后启动 dsh web:

dsh plugin --profile web add dsh-slide@dsh-plugin
dsh web

也可以从源码构建安装。package.json 的 engines 要求 node >=22.19.0:

pnpm install
pnpm run build
dsh plugin --profile web add /absolute/path/to/dsh-slide
dsh web

典型用法

切换到 Slide Editor 模式

安装完成后,经过下面的步骤把一个 Conversation 切换成编辑器:

1、打开目标 Conversation。
2、点左下角 Settings。
3、选择「幻灯片编辑器 (Slide Editor)」。
4、在「当前 Conversation」卡片打开「开启幻灯片编辑模式」开关。
5、回到 Conversation,聊天界面被 Slide Editor 替换,Session、Workspace 与模型配置不变。

关闭时进入同一设置,把开关关掉,即回到标准聊天界面。

由 agent 打开已有 deck

主 Conversation 会获得一个 open_slide_deck 工具,可打开已存在且通过文档校验的 Workspace 相对 *.slides.json 文件,并把当前 Conversation 切换到 Slide Editor 模式。典型流程:agent 先用文件系统工具创建 *.slides.json,再调用 open_slide_deck

注意:子代理不能使用该工具,携带 parentSessionorigin: "subagent" 的调用会被拒绝。

图片与几何元素

deck 内元素以 JSON 描述。下面是一个图片元素,src 指向 Workspace 内的文件:

{
  "kind": "image",
  "x": 80,
  "y": 120,
  "width": 500,
  "height": 320,
  "src": "workspace:images/photo.png",
  "fit": "cover",
  "alt": "Product photo"
}

几何元素用一段标准 SVG path 描述多边形或曲线,path 在局部 viewBox 内定义,再缩放放进外层矩形:

{
  "kind": "geometry",
  "x": 600,
  "y": 180,
  "width": 400,
  "height": 240,
  "viewBoxWidth": 100,
  "viewBoxHeight": 100,
  "path": "M 5 90 L 50 5 L 95 90 Z",
  "fill": "#dbeafe",
  "stroke": "#2563eb",
  "strokeWidth": 2
}

多边形用 M/L/H/V/Z,三次贝塞尔用 C/S,二次贝塞尔用 Q/T,椭圆弧用 A;开放曲线一般写 "fill":"none"

适用场景与注意

适合的场景:需要在 DSH 的对话流程里持续生成和维护一套多页幻灯片,把幻灯片当作可迭代的产物而不是一次性导出文件;希望人只把控方向,修改细节交给 agent 完成。

几点注意:

1、编辑模型是 AI-only。不能手动改文字、拖动或缩放对象,所有修改都走 annotation 子代理,接受这个交互前提再安装。
2、选择只是上下文。子代理为了完成请求,可能修改所选范围之外的页面或对象,也会新增页面。
3、多个 Session 刻意关联同一个 *.slides.json 时,并发保存可能互相覆盖;默认按 Session 隔离的路径设计就是为了避免这一点。
4、插件以当前 dsh 进程的权限运行。宿主文件路由虽然绑定了 Session 的 cwd 并拒绝路径穿越与 symlink 逃逸,安装前仍建议检查插件源码与许可证(本项目为 MIT)。

小结

dsh-slide 把「对话生成幻灯片」从文本往返变成画布上的选择与指令:人管焦点,子代理管操作,deck 与 annotation 状态都留在 Workspace 里。如果你在用 DSH 并需要让 agent 维护演示文稿,它可以作为一个起点。

  • GitHub:https://github.com/JeremyGuo/dsh-slide
  • 插件目录页:https://www.skillhub.cn/plugins/JeremyGuo/dsh-slide

目录页为社区维护的收录站点,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye