Intro

During the development of DeepSeek Harness, agents often produce a large number of artifacts, including files generated by tools, code snippets, and image attachments in messages. These artifacts are scattered across conversation records and toolbars, making them cumbersome to find and manage. dsh-artifact-viewer aims to solve this pain point. It provides a dedicated sidebar panel and bookmarking system to centrally display all files and images generated in the current session, with persistent bookmarking capability.

Core Features

This plugin registers into shell.overlay to implement a right-side overlay panel, with the following capabilities:

  1. Artifact Detection and Listing: Automatically detects files generated by tools in the conversation and image attachments in messages, and renders a list in the right-side panel.
  2. Bookmark Persistence: Allows users to mark artifacts as bookmarks. Bookmark data is stored in the Harness main directory and supports accessing the same project’s bookmarks across browsers.
  3. Link Interception and Preview:
    • Intercepts click events such as tool buttons, artifact chips, Markdown links, and code paths.
    • Replaces the default image renderer and overlays a bookmark star on images.
    • Renders HTML (sandboxed iframe), Markdown (including Mermaid diagrams), images, JSON, and multiple source code types in the preview tabs inside the panel.
  4. Navigation and Actions:
    • Supports expanding/collapsing the panel.
    • Uses the workspace API to open files in the default application or open the containing folder.
    • Clicking the “Open Conversation” button in the bookmark list or preview area allows navigating back to the source session from a bookmark.

Installation and Configuration

Install the plugin into the web profile of DeepSeek Harness:

# 从注册表安装(推荐)
dsh plugin --profile web add @wangjunjian/dsh-artifact-viewer

# 或从本地代码仓库安装
dsh plugin --profile web add ~/GitHub/wang-junjian/dsh-artifact-viewer

After installation, the bundle is automatically appended to dsh.profile.bundles. If you need to override the default configuration, you can write the following in cordis.patch.yml:

- id: artifact-viewer
  config:
    enabled: true

Supported Preview Types

The plugin supports the following file types:

File Type Rendering Method
HTML, HTM Sandbox iframe
Markdown, MD Markdown text (Mermaid code blocks rendered as SVG)
Images (SVG, PNG, JPG, JPEG, WEBP, GIF) Image
JSON Code with syntax highlighting
Source code (py, js, ts, jsx, tsx, css, scss, less, rs, go, c, cpp, cc, java, kt, swift, rb, php, sh, sql, xml, yaml, yml, toml, dockerfile, txt, log) Code with syntax highlighting
Other text Plain text
Video (mp4, webm, mov) Listed only, no inline preview

Notes and Known Limitations

  1. Permissions and Runtime: The plugin runs as a bundle plugin, and its file-content reading is subject to the permission scope of the current DSH process.
  2. Panel Style: Currently, the panel is displayed as an overlay via shell.overlay. If DSH native sidebar slots are made available, the experience will be better.
  3. Bookmark Migration: Older bookmarks are stored in <project-root>/.dsh/bookmarks.json, which is now deprecated. To migrate, manually move the bookmarks to ~/.dsh/storages/artifact-viewer/bookmarks.json and organize them according to the new format.
  4. Data Limitations:
    • Bookmark image previews are limited and support only attachment IDs.
    • Video files are listed only and do not support inline preview.
    • File-content reading is limited to 512 KiB.
    • Bookmarks created in early versions lack the sessionId field and therefore cannot be used to navigate back to the source session.

Summary

dsh-artifact-viewer provides a lightweight solution for artifact management in DeepSeek Harness. Through its centralized view and bookmarking features, it lowers the barrier to viewing and reusing conversation artifacts. The plugin is fully open source, follows the MIT license, and is suitable for developers who need to integrate DSH artifacts in local or CI/CD environments.