前言¶
让智能体写一份报告,结果通常落在两个地方:要么在聊天窗口里滚两屏就找不到了,要么在工作区里多出一个 .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 |
path、content |
创建或替换一个工件 |
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/artifacts;maxArtifactChars 是单次写入接受的最大字符数,示例值为 400000;promptSection 控制是否注入关于何时写工件的系统提示段落;skill 控制是否注册内置的 writing-artifacts skill;palette 是传给预览工件的颜色,键不带 -- 前缀时按别名 token 读取。
沙盒限制与写入边界¶
渲染侧,工件在仅带 allow-scripts 的 iframe 中运行——无网络、无同源。外部样式表、CDN 脚本、webfont、fetch、localStorage 和 cookies 均不可用,因此工件必须内联全部所需内容。内置 skill 会按这个约束生成 HTML;只有在你手写工件时才会真正注意到这条限制。
写入侧,write 被限制在工件存储目录内,越界路径会被拒绝,而不是被保存到浏览器无法列出的位置。
另外,如果你想给 DSH 写自己的插件,仓库里的 NOTES.md 提供了实现说明:slot 契约、two-envelope wire 协议,以及四个值得了解的陷阱。
适用场景与注意¶
适合的场景:
- 智能体经常产出值得保留的报告、速查表、总结,希望它们以可读文档的形式存在;
- 不想让生成的 HTML 混进仓库;
- 希望工件跨项目保留、按时间倒序翻找。
使用前注意:
- 插件以当前 dsh 进程的权限运行。安装任何第三方插件前,建议先阅读其源码与许可证(本项目为 MIT)。
- 安装后必须重启
dsh web才会生效。 - 工件不能依赖任何外部资源,手写工件时需要把样式和脚本全部内联。
小结¶
经过上面的步骤,智能体的产出就从「聊天里滚走的一段话」变成了随时能打开、跨项目还在的文档。想看源码或了解更多细节,可以访问:
- 社区目录页:https://www.skillhub.cn/plugins/Jannchie/dsh-artifact (独立社区站点,与 DeepSeek / 幻方无官方从属关系)
- GitHub 仓库:https://github.com/Jannchie/dsh-artifact