dsh-artifact:为 DeepSeek Harness 提供 Claude-Code 风格的 HTML 工件

前言

让智能体写一份报告,结果通常落在两个地方:要么在聊天窗口里滚两屏就找不到了,要么在工作区里多出一个 .html 文件,之后再没人打开。前者不留存,后者污染仓库。

dsh-artifact 针对的就是这个问题。下面介绍这个插件做什么、怎么装、怎么用。

这是什么

dsh-artifact 是 DeepSeek Harness(DSH)的一款插件,由 Jannchie 维护,采用 MIT 许可证。DSH 的理念是「一切皆插件」,这款插件补上的是「工件」这一环:它为 DSH 提供 Claude-Code 风格的 artifacts——一个写入自包含 HTML 的 artifact 工具、一个内置的创作 skill、一个侧边栏导航按钮,以及一个应用内的沙盒 HTML 工件浏览器。

装好之后,智能体产出的文档会作为工件存放在工作区之外,按最新优先排列,跨项目保留,并在应用内直接渲染阅读。

核心功能

artifact 工具

插件向智能体暴露一个 artifact 工具,共四个命令:

命令 参数 作用
list 列出全部工件,最新优先
read path 读取单个工件的完整 HTML
write pathcontent 创建或替换一个工件
delete path 删除一个工件

path 相对于存储目录,.html 后缀可以省略。也就是说,write path:"q3-report" 会在存储目录下生成 q3-report.html

内置创作 skill

插件注册了一个 writing-artifacts skill。有了它,智能体生成的 HTML 是真正的文档:单一阅读栏、语义化标题、可独立滚动的表格、跟随主题的配色,而不是包着三段文字的应用外壳。

应用内工件浏览器

web 界面里会多出一个 Artifacts 标签页和对应的侧边栏导航按钮。工件以沙盒 iframe 渲染,点击进入阅读,用 返回对话。

工件存放在工作区之外

工件存储在 $DSH_HOME/artifacts,默认是 ~/.dsh/artifacts,与 harness 已有的会话和存储放在同一层。这是刻意的设计:工件跟着人走,不跟着项目走,仓库也不该堆满生成的 HTML。

预览跟随主题

预览会注入应用的实时颜色 token,工件因此跟随你的主题——包括被其他插件覆盖过的主题。

安装与启用

先执行安装命令:

dsh plugin --profile web add dsh-artifact

这条命令会把插件加入 web profile。随后必须重启 dsh web:插件是在进程启动时组装的,不重启不会生效。

典型用法

重启之后,向智能体提一个值得保留内容的请求,例如:

Summarize this week’s benchmark results as a report.

智能体会调用 artifact 工具把内容写成工件,文档随即出现在 Artifacts 标签页。点击进去阅读,用 返回对话。

配置

插件的各项行为可以在 profile 的 cordis.patch.yml 里覆盖:

- id: artifact
  config:
    # 工件目录。省略或为 null 时使用 $DSH_HOME/artifacts。
    root: /absolute/path/to/artifacts
    # 单次写入接受的最大字符数。
    maxArtifactChars: 400000
    # 是否注入关于何时写工件的系统提示段落。
    promptSection: true
    # 是否注册内置的 writing-artifacts skill。
    skill: true
    # 传给预览工件的颜色,叠加在实时主题之上。
    # 不带 -- 前缀的键按别名 token 读取。
    palette:
      state-business-primary: '#e0552b'

逐项说明:root 省略或为 null 时使用 $DSH_HOME/artifactsmaxArtifactChars 是单次写入接受的最大字符数,示例值为 400000;promptSection 控制是否注入关于何时写工件的系统提示段落;skill 控制是否注册内置的 writing-artifacts skill;palette 是传给预览工件的颜色,键不带 -- 前缀时按别名 token 读取。

沙盒限制与写入边界

渲染侧,工件在仅带 allow-scripts 的 iframe 中运行——无网络、无同源。外部样式表、CDN 脚本、webfont、fetchlocalStorage 和 cookies 均不可用,因此工件必须内联全部所需内容。内置 skill 会按这个约束生成 HTML;只有在你手写工件时才会真正注意到这条限制。

写入侧,write 被限制在工件存储目录内,越界路径会被拒绝,而不是被保存到浏览器无法列出的位置。

另外,如果你想给 DSH 写自己的插件,仓库里的 NOTES.md 提供了实现说明:slot 契约、two-envelope wire 协议,以及四个值得了解的陷阱。

适用场景与注意

适合的场景:

  • 智能体经常产出值得保留的报告、速查表、总结,希望它们以可读文档的形式存在;
  • 不想让生成的 HTML 混进仓库;
  • 希望工件跨项目保留、按时间倒序翻找。

使用前注意:

  1. 插件以当前 dsh 进程的权限运行。安装任何第三方插件前,建议先阅读其源码与许可证(本项目为 MIT)。
  2. 安装后必须重启 dsh web 才会生效。
  3. 工件不能依赖任何外部资源,手写工件时需要把样式和脚本全部内联。

小结

经过上面的步骤,智能体的产出就从「聊天里滚走的一段话」变成了随时能打开、跨项目还在的文档。想看源码或了解更多细节,可以访问:

  • 社区目录页:https://www.skillhub.cn/plugins/Jannchie/dsh-artifact (独立社区站点,与 DeepSeek / 幻方无官方从属关系)
  • GitHub 仓库:https://github.com/Jannchie/dsh-artifact
羽毛球分组比赛记分
小程序二维码

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

Xiaoye