DeepSeek Harness plugin

dsh-chat-image

Renders chat Markdown image references (![alt](path title)) as a gallery under each closing assistant message

Jump to install

Source facts

Repository
Niobium-41-nb/dsh-chat-image
Latest update
Aug 17, 2026
Category
Vision & Multimodal
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/Niobium-41-nb/dsh-chat-image
Plugin: dsh-chat-image
Author: Niobium-41-nb

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only
README language

dsh-chat-image

![npm version](https://www.npmjs.com/package/dsh-chat-image) ![GitHub](https://github.com/Niobium-41-nb/dsh-chat-image)

English | 中文

Renders chat Markdown image references (![alt](path title)) as a gallery under each closing assistant message in the DeepSeek Harness web GUI.

![gallery preview](assets/gallery-preview.svg)

  • Local workspace paths load through a validated host route (/dsh-chat-image): the path must resolve inside a registered workspace and be a regular file of at most 32 MiB; the file is served with an extension-derived content type.
  • http(s) references are skipped — the built-in markdown renderer already shows them inline.
  • data: URLs render directly.
  • The optional title renders as the caption below the image and as the hover hint; a local file without a title shows its absolute path as the hover hint.
  • A reference whose image fails to load (missing file, out of workspace, over the byte cap) falls back to its alt text; an empty alt renders nothing for that item.
  • Clicking a local image opens the file through the same host opener the tool rows use.

Install

As a standalone bundle, from a dsh installation:

# from npm
dsh plugin --profile web add dsh-chat-image

# from the git repository
dsh plugin --profile web add github:Niobium-41-nb/dsh-chat-image

# from a tarball
dsh plugin --profile web add ./dsh-chat-image-0.1.0.tgz

A git install fetches sources and runs the package's prepare build; pnpm ≥ 10 requires an explicit build allowance for that script (the add output prints the exact pnpm-workspace.yaml entry to add). The web profile's browser roster (clientModules) picks the browser half up automatically through the dsh.client manifest; the Loader mounts the host half through the bundle patch.

Usage

The model writes ordinary Markdown image references in its reply:

![架构图](docs/architecture.png "架构总览")
![](my image.png)      <!-- paths with spaces need angle brackets -->
![inline](data:image/png;base64,AAAA)

Relative paths resolve against the session working directory; absolute paths (drive-letter, /, or \\) pass through. Assistant closing turns only: the tail hole does not exist under user messages, and a turn with produced files keeps that row (the gallery shows only when it declines).

Develop

pnpm install
pnpm test      # vitest: route status matrix + reference extraction
pnpm build     # tsc types (lib/types) + tsdown bundles (lib/index.js, lib/client.js)

The browser bundle is CJS wrapped for the dsh loader (window.__ModuleLoader__.load) with only the frozen platform-module table external; the node half has no runtime imports. Both halves consume harness services structurally, so the package carries no runtime or type dependency on @deepseek-ai/* beyond the platform modules.

Known Limitations

  • Assistant closing turns only. The turn-tail hole exists only under closing assistant messages.
  • Chain exclusivity with the produced-files row. A turn that has both produced files and image references shows only the produced-files row (higher priority).
  • CommonMark destination rules. A path containing spaces must be written in angle brackets (<my image.png>); an unquoted multi-word destination is parsed as path + title.
  • Workspace containment. Only files inside a registered workspace are served; the route answers 403 for anything else, so it cannot read arbitrary host files.