dsh-rich-artifacts
by Inkotake
DeepSeek Harness插件:将工作区文件作为聊天附件发布,支持内嵌图片预览和下载卡片。
DeepSeek Harness Artifact/Deliverable plugin: publish workspace files as chat artifacts with inline image previews and download cards.
安装
dsh plugin --profile web add github:Inkotake/dsh-rich-artifactsGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
English | 中文
一个 DeepSeek Harness(dsh)双端插件:把工作区文件变成聊天产物——图片直接内联在对话里,其他文件显示下载卡片。
不再有 file:///... 链接,也不再只是“文件已生成在 output/”——模型创建面向用户的文件后,调用 publish_artifact,文件就能持久地通过聊天 UI 交付给用户。
功能
publish_artifact工具path(必填):要发布的工作区文件路径title(可选):显示标题display:auto(默认)·inline·download
- ArtifactStore
- SHA-256 content-addressed 存储
- metadata 独立存放在
~/.dsh/artifacts/v1/
- 持久会话事件
artifact/published- 会话日志只保存 artifact metadata
- 历史会话重载 / fork 后产物仍能显示
- HTTP 端点
GET /api/artifacts/:id/content— 内联安全预览GET /api/artifacts/:id/download— 附件下载
- Web UI turn-tail 画廊
- PNG / JPEG / WebP / GIF 直接内联
- 其他文件显示下载卡片
- 安全
fs.resolve+fs.contains工作区约束- 拒绝最终组件 symlink
- magic-byte MIME 嗅探(
.png实际是 HTML 不会内联) - V0.1 中 SVG / HTML 只允许下载
- 文件大小、图片大小与像素上限
安装
dsh plugin --profile web add github:Inkotake/dsh-rich-artifacts
如需锁定到具体 commit:
dsh plugin --profile web add github:Inkotake/dsh-rich-artifacts#<commit>
安装后重启 dsh web(或你安装的目标 profile)。
使用
插件注册了 system-prompt 提示,模型创建交付物时会自动调用工具;你也可以直接要求:
帮我画训练 loss 曲线,导出 CSV,并把两个文件发布为聊天产物。
Agent 会执行:
publish_artifact({ "path": "output/loss.png", "display": "auto" })
publish_artifact({ "path": "output/loss.csv" })
回合尾部就会显示内联图片和 CSV 下载卡片。
配置
在 profile 的 cordis.patch.yml 中:
- id: dsh-rich-artifacts
name: dsh-rich-artifacts
config:
root: ~/.dsh/artifacts
maxFileBytes: 104857600
maxTurnBytes: 524288000
maxImageBytes: 20971520
maxImagePixels: 40000000
inline:
png: true
jpeg: true
webp: true
gif: true
svg: false
| 字段 | 默认值 | 说明 |
|---|---|---|
root |
~/.dsh/artifacts |
产物存储根目录 |
maxFileBytes |
104857600 |
单文件大小上限 |
maxTurnBytes |
524288000 |
预留的每回合上限(V0.1 尚未强制) |
maxImageBytes |
20971520 |
可内联图片大小上限 |
maxImagePixels |
40000000 |
可内联图片像素上限(尽力解析) |
inline.* |
png/jpeg/webp/gif: true,svg: false |
允许内联的图片类型 |
构建
pnpm install
pnpm run build
lib/index.js 是 ESM host 插件,lib/client.js 是浏览器 bundle
(window.__ModuleLoader__.load(...))。两者都已提交,源码安装无需构建。
测试
node tests/artifact-store.test.mjs
架构
DeepSeek Agent
│ 创建文件
▼
Workspace File
│ publish_artifact
▼
ArtifactStore ──────────────► artifact/published 会话事件
│ │
│ (blob + metadata) │ (artifact_id + metadata)
▼ ▼
HTTP /api/artifacts/:id/* Session log(可重放)
│ │
└──────────────┬───────────────────┘
▼
Web UI turn-tail
┌─────────┴──────────┐
▼ ▼
ImageArtifact FileArtifact
实现说明
artifact/published是 log-only 事件。当前 Harness 对 out-of-repo 插件还没有 会话事件注册面,host 启动时会把该事件类型加入KNOWN_SESSION_EVENT_TYPES(运行时为可变 Set),这样持久化会话在插件安装期间可正常恢复。- MIME 以 magic bytes 为准,扩展名仅作次要提示。
- V0.1 刻意不内联 SVG 和 HTML。
许可证
MIT
原始 README: https://github.com/Inkotake/dsh-rich-artifacts/blob/main/README.zh.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥