DeepSeek Harness 插件

dsh-rich-artifacts

DeepSeek Harness Artifact/Deliverable plugin: publish workspace files as chat artifacts with inline image previews and download cards.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Inkotake/dsh-rich-artifacts
最近更新
2026年8月16日
分类
插件开发工具
GitHub stars
1
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Inkotake/dsh-rich-artifacts
插件名:dsh-rich-artifacts
作者:Inkotake

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

dsh-rich-artifacts

English | 中文

一个 DeepSeek Harness(dsh)双端插件:把工作区文件变成聊天产物——图片直接内联在对话里,其他文件显示下载卡片。

不再有 file:///... 链接,也不再只是“文件已生成在 output/”——模型创建面向用户的文件后,调用 publish_artifact,文件就能持久地通过聊天 UI 交付给用户。

功能

  • publish_artifact 工具

- path(必填):要发布的工作区文件路径 - title(可选):显示标题 - displayauto(默认)· 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产物存储根目录
maxFileBytes104857600单文件大小上限
maxTurnBytes524288000预留的每回合上限(V0.1 尚未强制)
maxImageBytes20971520可内联图片大小上限
maxImagePixels40000000可内联图片像素上限(尽力解析)
inline.*png/jpeg/webp/gif: truesvg: 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