DeepSeek Harness Hub
← 返回列表

聊天产物发布Inkotake/dsh-rich-artifacts

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

把工作区文件发布为聊天产物,图片内联预览、其他文件给下载卡片

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/16 · 已提供中文文档

DeepSeek Harness 工件/交付物插件:将工作区文件发布为聊天工件,支持内联图片预览和下载卡片。

综合分
27.6
GitHub 分
27.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Inkotake/dsh-rich-artifacts
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-rich-artifacts

一个 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#

安装后重启 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

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群