DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
G

dsh-gallery

Gallery

Output Gallery: Solves the problem of DSH listing outputs only at the end of a task, making the process invisible. Monitors the output directory in real time, automatically refreshes images, and provides native file previews so you can verify and correct results while the task is in progress.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:Hope2023Dcr/dsh-gallery#f75c9176a025fae37f2ae18ebc3ff20404bbc43e
READMECompatibilityVersions

Compatibility and provenance

Gallery is published as dsh-gallery and currently resolves to version 0.7.2. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
11/5/2026

Versions

0.7.2stable
11/5/2026
0.6.1stable
11/4/2026
0.4.0stable
11/3/2026

Related plugins

Loading related plugins…

Latest
0.7.2
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 1
Weekly downloads
0
Last push
11/5/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Session Titles Bundle@deepseek-ai/dsh-experimental-session-titles-bundleRefresh session titles as new human prompts arrive.Personalized Recommendations@deepseek-ai/dsh-personalized-recommendationsPersonalized pages and built-in plugin recommendations offered as cards below answersExperimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI plugins

README

产出画廊 · DeepSeek Harness (DSH) 插件

核心问题:Agent 干活的过程是黑箱。 DSH 默认只在任务结束时才列出产出的文件名和路径 —— 中间生成的东西你看不见, 出了偏差只能等它跑完再返工。

这个插件把产出目录变成右侧栏里的实时画廊:图生成就可见、文件点一下就打开, 让你在任务进行中就能校验和干预,而不是结束后才知道做错了。

关键词:DeepSeek Harness 插件 · DSH plugin · 产出画廊 · output gallery · 图片画廊 · image gallery · 文件预览 · file preview · 侧边栏面板 · sidebar panel · Agent 产出管理 · output artifacts


它解决什么问题

痛点:任务跑完你才知道结果

让 Agent 出 30 张图、改一份报告、跑一段脚本 —— 它埋头干几分钟甚至几十分钟, 你看不到中间产物。等到最后它念一串路径,你才发现:

  • 第 3 张图的风格就跑偏了,30 张全废
  • 报告第 2 段引用了错的资料,整篇要重写
  • 脚本输出了 50 个中间文件,你不知道哪个是最终版

返工成本是「一次性验证」的好几倍。

解法:把产出目录变成实时画廊

插件直接盯磁盘上的产出目录(Agent 真正写文件的地方),做成右侧栏画廊:

效果说明
图生成就可见每 5 秒自动刷新,缩略图实时滚动,不顺眼当场喊停
文件点一下就开调 DSH 原生侧栏预览(Markdown 渲染、代码高亮都是 DSH 自己的)
只看本对话的多个对话混在一起时,按「当前对话」筛,一眼分清谁做的
过程产物也算脚本跑出来的中间图、Agent 打开看过的图,都算本对话产出 —— 过程不黑箱

和市面上的「对话图片查看器」不一样在哪

常见的对话图片灯箱这个插件
看哪里对话里的图片附件磁盘上的产出目录(Agent 真正写文件的地方)
能看什么只有图片图片 + 49 种文档/代码/数据文件
怎么打开文件无调 DSH 原生侧栏预览
多个对话混在一起不区分可按「本对话产出」筛
过程产物看不到脚本生成的中间图也能看到

一句话安装:解压后在该目录执行 node install.mjs,然后重启 DSH。 详细步骤见安装,常见问题见已知限制。


功能

图片画廊

能力说明
自动刷新每 5 秒轮询,查看大图时自动暂停,不打断
缩略图客户端 canvas 压缩到 200px(不是原图直塞),并发闸门 4,进入视口才加载
放大查看滚轮缩放(最大 8×,以光标位置为中心)、左键或中键拖动平移
右侧控制列放大后出现 ▲ / ▼ 按钮 + 轨道 + 滑块,没有鼠标也能操作
键盘操作↑↓ 平移、←→ 切图、+/- 缩放、0 复位、Esc 退出
退出回位单击退出,回到原来那张缩略图的精确位置,不是列表顶部

文件画廊

列文档 / 代码 / 数据 / 压缩包 / 链接 / 设计文件,共 49 种扩展名(不含图片,图片归图片画廊)。

操作行为
点整张卡片 / 点「👁 预览」用 DSH 原生侧栏打开预览(Markdown 渲染、代码高亮都是 DSH 自己的)
点「⧉ 复制路径」复制绝对路径,按钮变 ✓ 已复制 反馈 1.6 秒
点「📂」在资源管理器里定位该文件

右键菜单(图片 / 文件通用)

在任意卡片上右键:

项目行为
🚫 隐藏从列表移除,文件仍在磁盘上(记录在 dsh-gallery.json 的 hidden 数组)
📂 打开所在文件夹资源管理器定位到该文件
⧉ 复制路径复制绝对路径到剪贴板
🗑 删除文件二次确认后删除,不可恢复

⚠️ 删除做了三层保护:前端确认弹窗 → API 强制 confirm: true → 路径越界校验。

分页

两个画廊都是每页 60 条,网格下方常驻页码条:

第 1–60 条 · 共 114 条   还有 54 张
                  ‹  1  2  ›
  • 页码点击切页,页数多时折叠为 1 … 5 6 7 … 20
  • 切换「图片/文件」或「全局/当前对话」时自动回到第 1 页
  • 列表右侧另有 ▲ / ▼ 滚动辅助列(无滚轮时用)

分类开关

[全局资产]  [当前对话]
  • 全局资产:所有扫描目录下的全部内容,按时间倒序
  • 当前对话:只显示本对话真正产出过的文件 —— 通过解析 DSH 会话日志得出,不是按时间瞎猜

「当前对话」的产出判定覆盖三类来源:

来源为什么算
write / edit / presentAgent 直接写文件 / 声明交付,路径必是产出
read_image 打开过的图片Python 等脚本生成的图不在 write 调用里,但 Agent 一定会打开看效果
子智能体会话里的产出子智能体是独立会话,按 parentSession 合并它的产出路径

这条设计是为了「任务进行中即时可见、便于及时校正」—— 中间产物、调试图、脚本输出都能在过程里看到,而不是等任务收尾。

多扫描目录

DSH 每个会话有独立的 cwd,产出可能落在任意工作区(如 G:\DSH任务文件\xxx), 不一定都在 G:\DSH产出。所以插件支持配置多个扫描目录:

{
  "roots": [
    "G:/DSH产出",
    "G:/DSH任务文件"
  ]
}

设置面板(⚙)里可直接增删,每项显示 ✓(存在)/ ✗(缺失标红)。改完立即生效。

产出根目录可配置

装上不会空白。 插件按这个顺序确定扫描目录:

  1. 面板内设置的多目录列表(最高优先,改完立即生效,无需重启)
  2. 设置或 cordis.patch.yml 里的单个 root(旧写法,兼容)
  3. 自动探测:先找 ~/DSH产出、~/Documents/DSH产出、~/Desktop/DSH产出、~/Downloads/DSH产出,再遍历各盘符找 <盘符>:\DSH产出(循环 A–Z,代码里不写死任何字母,所以装在哪个盘都能自动找到)

一个目录都没有时,面板会直接给出「修改产出根目录」的入口。

隐藏管理

设置面板(⚙)里有「已隐藏 N 个 · 全部恢复」:

  • 列出被隐藏的文件(前 10 个,悬停看完整路径)
  • 点「全部恢复」一键清空隐藏列表,被隐藏的重新出现
  • 恢复不删除文件,只是清掉记录

安装

前置

已安装 DSH 桌面版或 Web 版。

方式零:DSH 插件页一行装(最省事)

打开 DSH → 插件页 → 添加插件 → 安装第三方插件,在输入框粘贴:

github:Hope2023Dcr/dsh-gallery

点安装。DSH 会自动从 GitHub 拉取并装好,装完重启 DSH。

想锁定版本(推荐,避免仓库更新导致行为变化):

git+https://github.com/Hope2023Dcr/dsh-gallery.git#03c05fb324aeca02cbf0b4bafff9542b013f212b

⚠️ 这种方式需要能访问 GitHub。DSH 的「国内镜像」只代理 npm 包,不代替 GitHub 下载。

方式一:一键脚本(推荐,可离线)

下载本仓库(Code → Download ZIP,或 git clone),解压后在解压出来的目录里执行:

node install.mjs

脚本会自动:

  1. 定位 DSH 主目录(优先 DSH_HOME 环境变量,回退 ~/.dsh)
  2. 列出可用 profile 让你选(只有一个时直接用它,多个时默认 desktop)
  3. 校验源文件齐全
  4. 复制到 <profile>/node_modules/dsh-gallery/
  5. 在 profile 的 package.json 的 bundles 里注册
  6. 自动备份原 package.json 为 package.json.bak-dsh-gallery

可选参数:

node install.mjs --profile desktop   # 指定 profile
node install.mjs --dry-run           # 只看会做什么,不写入

脚本幂等:重复运行不会重复注册 bundle。

装完必须重启 DSH(不是刷新页面)。

方式二:手动安装

1. 找到你的 profile 目录

平台路径
Windows%USERPROFILE%\.dsh\profiles\desktop
macOS / Linux~/.dsh/profiles/desktop

如果 desktop 不存在,看你实际用的 profile 名(profiles/ 下有什么就用什么)。

2. 复制文件到插件目录

目标:<profile>/node_modules/dsh-gallery/

需要放进去的文件:index.js、client.js、package.json、cordis.patch.yml、icon.svg、locale/。

Windows PowerShell:

$target = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-gallery"
New-Item -ItemType Directory -Force -Path $target | Out-Null
Copy-Item index.js,client.js,package.json,cordis.patch.yml,icon.svg -Destination $target
Copy-Item locale -Destination $target -Recurse

macOS / Linux:

target=~/.dsh/profiles/desktop/node_modules/dsh-gallery
mkdir -p "$target"
cp index.js client.js package.json cordis.patch.yml icon.svg "$target/"
cp -r locale "$target/"

3. 在 profile 的 package.json 里注册

编辑 <profile>/package.json,在 bundles 数组里加一项:

{
  "bundles": [
    "dsh-gallery"
  ]
}

4. 重启 DSH

必须完全退出再打开(不是刷新页面)。Host 半部只在进程启动时加载。

5. 打开面板

三个入口任选:

  • 左侧边栏脚部的 ▦ 按钮
  • 对话输入框右侧的 ▦ 按钮
  • 右侧栏点 +,「开始」页里的「产出画廊」卡片

6. 设置产出目录

第一次打开如果显示「目录不存在」,点面板里的 ⚙ 设置,填入你的产出目录绝对路径,保存即可生效。


配置项

编辑 <插件目录>/cordis.patch.yml:

config:
  # root: 'D:/产出'      # 不填就走自动探测
  windowHours: 24         # 只看最近 N 小时内的产出
  maxItems: 60            # 最多显示多少条
  maxDepth: 3             # 向下扫描几层目录
  skipDirs:               # 跳过这些目录(体积大、无产出)
    - node_modules
    - .git
    - ...

改完重启 DSH 生效。只想改目录的话,建议用面板里的 ⚙ 设置,那个不用重启。


已知限制

  1. 「当前对话」分类依赖 DSH 会话日志格式。 它读 ~/.dsh/sessions/<分组>/<sessionId>/session.v4.jsonl.zstd,解析 tool/call 事件。DSH 大版本升级后这个功能可能失效,需要回归验证;其余功能不受影响。
  2. 只扫一层层的目录,深度默认 3 层。 特别深的目录结构会漏。
  3. 默认只看最近 24 小时。 改 windowHours 可以放宽,但太大会拖慢扫描。
  4. 文件画廊故意不显示图片。 图片归图片画廊,避免两边重复。
  5. reveal(资源管理器定位)仅 Windows 有效。 其他平台会走 xdg-open 打开所在目录。

技术说明(给想改代码的人)

架构

结构

dsh-gallery/
├── package.json        # bundle 清单 + dsh.client(web 平台)
├── cordis.patch.yml    # 插入 Host 行与默认配置
├── index.js            # Host 半部:扫描、图片尺寸解析、会话日志解析、HTTP 路由
├── client.js           # 浏览器半部:侧栏 tab UI、缩略图、放大、设置面板
├── locale/zh.json      # 中文文案
├── locale/en.json
└── icon.svg

两端分工

半部能做什么不能做什么
index.js(Host)读文件、扫目录、注册 HTTP 路由、调 child_process不能碰 DOM
client.js(浏览器)渲染 UI、拿 slot props、调 ctx.sidebarRight.*不能直接读磁盘

数据流:client fetch(ROUTE) POST 给 host → host 处理 → 返回 JSON / 字节。

⚠️ 改代码后怎么生效

改了哪个文件生效方式
client.js刷新页面(秒级)
index.js必须重启 DSH 进程(分钟级)

判断「跑的是不是新代码」:哈希一致 + 进程启动时间 < 文件修改时间 → 运行的是旧模块,需要重启。

关键实现点

  • 图片尺寸解析:Host 侧直接读 PNG IHDR / JPEG SOF / WebP VP8·VP8L·VP8X 头部,零依赖
  • 缩略图压缩:客户端 createImageBitmap + OffscreenCanvas,不把原图塞进 <img>
  • tab 保活:注册 tab 类型时声明 keepMounted: true,切到别的 tab 再回来状态不丢
  • 原生预览地址:dsh-resource://file/session/<sessionId>/<编码路径>,文档预览只认 session 作用域
  • 会话日志多帧 zstd:DSH 日志每次追加写一帧,必须按魔数 0x28 0xB5 0x2F 0xFD 切开逐帧解压,单次解压只能拿到第一帧

许可

MIT。随便用、改、分发。