前言¶
在 DeepSeek Harness 的开发过程中,智能体往往会产生大量产物,包括工具生成的文件、代码片段以及消息中的图片附件。这些产物散落在对话记录和工具栏中,查找和管理较为繁琐。dsh-artifact-viewer 旨在解决这一痛点,它通过一个独立的侧边栏面板和书签系统,将当前会话产生的所有文件和图片集中展示,并提供持久化的书签能力。
核心功能¶
该插件通过注册到 shell.overlay 实现右侧覆盖面板,主要包含以下能力:
- 产物检测与列表:自动检测对话中工具产生的文件以及消息内的图片附件,并在右侧面板中渲染列表。
- 书签持久化:允许用户将产物标记为书签,书签数据存储在 Harness 的主目录下,支持跨浏览器访问同一项目下的书签。
- 链接拦截与预览:
- 拦截工具按钮、产物芯片、markdown 链接及代码路径等点击事件。
- 替换默认图片渲染器,在图片上叠加书签星标。
- 在面板内的预览选项卡中渲染 HTML(沙箱 iframe)、Markdown(含 Mermaid 图表)、图片、JSON 及多种源代码。
- 导航与操作:
- 支持展开/收起面板。
- 使用 workspace API 在默认应用中打开文件或打开所在文件夹。
- 在书签列表或预览区点击“打开对话”按钮,可从书签导航回源会话。
安装与配置¶
将插件安装到 DeepSeek Harness 的 web profile 中:
# 从注册表安装(推荐)
dsh plugin --profile web add @wangjunjian/dsh-artifact-viewer
# 或从本地代码仓库安装
dsh plugin --profile web add ~/GitHub/wang-junjian/dsh-artifact-viewer
安装后,bundle 会自动追加到 dsh.profile.bundles。若需覆盖默认配置,可在 cordis.patch.yml 中写入:
- id: artifact-viewer
config:
enabled: true
支持的预览类型¶
插件对文件类型的支持如下:
| 文件类型 | 渲染方式 |
|---|---|
| HTML, HTM | 沙箱 iframe |
| Markdown, MD | Markdown 文本(Mermaid 代码块渲染为 SVG) |
| 图片 (SVG, PNG, JPG, JPEG, WEBP, GIF) | 图片 |
| JSON | 语法高亮代码 |
| 源代码 (py, js, ts, jsx, tsx, css, scss, less, rs, go, c, cpp, cc, java, kt, swift, rb, php, sh, sql, xml, yaml, yml, toml, dockerfile, txt, log) | 语法高亮代码 |
| 其他文本 | 纯文本 |
| 视频 (mp4, webm, mov) | 仅列表,无内联预览 |
注意事项与已知限制¶
- 权限与运行方式:插件作为 bundle 插件运行,其文件内容读取受限于当前 DSH 进程的权限范围。
- 面板形式:目前面板通过
shell.overlay悬浮显示,若 DSH 原生侧边栏槽位开放,体验会更佳。 - 书签迁移:旧版书签存储在
<project-root>/.dsh/bookmarks.json,现已废弃。如需迁移,需手动将书签移动到~/.dsh/storages/artifact-viewer/bookmarks.json并按新格式组织。 - 数据限制:
- 书签图片预览受限,仅支持附件 ID。
- 视频文件仅列出,不支持内联预览。
- 文件内容读取限制为 512 KiB。
- 早期版本创建的书签缺少
sessionId字段,因此无法通过书签导航回源会话。
总结¶
dsh-artifact-viewer 为 DeepSeek Harness 的产物管理提供了一个轻量级的解决方案。它通过集中视图和书签功能,降低了查看和复用对话产物的门槛。插件完全开源,遵循 MIT 许可证,适合需要在本地或 CI/CD 环境中集成 DSH 产物的开发者使用。