DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Image Inline — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
I

dsh-image-inline

Image Inline

让模型通过 show_image 工具将图像渲染到 DSH 网页聊天流程(QQ/WeChat 风格)中:消息内容仅保留路径文本,图像不会进入模型上下文,浏览器会将图片以内嵌方式显示,并可随聊天记录滚动查看。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:condaThinker/dsh-image-inline#ed05325ec890182107538c43f89d8813f51bc9c3
README兼容性版本

兼容性与来源证明

Image Inline 以 dsh-image-inline 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/8/30

版本

0.1.0stable
2026/8/30

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 3
周下载
0
最近提交
2026/8/30
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。

README

dsh-image-inline

让 DeepSeek Harness (DSH) 的 Web UI 支持模型主动把一张图片渲染进对话流(QQ/微信聊天式:图片显示在会话里、可上翻、和对话同步)。

对话流消息内容里只保留路径文本,图片本身不进入模型上下文(模型上下文保持干净,纯文本模型路由不受影响)。

工作方式

模型调用新增的 show_image 工具(传入磁盘图片路径)时:

  1. host(dsh/index.js):校验路径/格式/大小 → 读取字节 → 通过附件服务 saveImage 存成内容寻址附件 → 返回纯文本结果(路径 + 元数据摘要)。图片的展示载荷(attachmentId/宽高/字节数)通过工具的 presentationMeta 放进 tool/result 事件的 meta 字段——不进模型上下文、不进会话日志的 image 块。
  2. client(dsh/client.js):注册 tool.call.toolview 键控槽位(key = show_image),在对话流中该工具调用的位置渲染图片卡片(复用官方 MessageImage 组件:缩略图、点击看原图、加载失败可重试)。图片 URL 走插件自己的内容寻址 HTTP 端点。
模型 → show_image(path) → 附件服务存图 → 纯文本结果(路径+摘要)
                                   │
                                   ├─ tool/result meta ─→ client toolview 渲染图片卡片
                                   └─ 注册表($DSH_HOME/plugins/dsh-image-inline/registry.json)
                                        └─ GET /plugin/show-image/<attachmentId> → 图片字节

嵌套调用(run_code 内 tools.show_image)与旧回放

模型把 show_image 写进 run_code 的 JS 里("Show key figures to user" 这类批量展示)时,调用变成嵌套 code-dispatch:宿主工具注册表只对顶层执行投影 presentationMeta,tool/code-dispatch 事件只携带文本结果、没有 attachmentId——客户端无法走内容寻址路由。

处理方式:client 在 meta 缺失时解析结果文本里的 <path>,改走路径寻址路由 GET /plugin/show-image-by-path?path=<绝对路径>(host 按扩展名/regular file/字节上限校验后回字节,路径来自模型已写入会话的文本,同 loopback 信任模型)。因此嵌套调用与旧 schema 回放都能渲染图片;文件不存在/格式不对时 onError 自动退回原文本结果。tool/result 事件带 meta 的顶层调用不受影响,仍走内容寻址路由。

为什么需要插件自己的 HTTP 端点?

DSH 内置的 conversation.resolveImage → session.attachment RPC 只服务"会话日志的 image 块里被引用的附件"(api-proxy 的 referencedImage 授权)。本插件的结果故意不包含 image 块(否则图片会进入模型上下文),因此附件永远不会被日志引用,必须由插件自己提供读取通道。

安全性:attachmentId 是 sha256:<hex> 内容哈希——内容寻址 capability URL,不知道图片内容就无法猜测;id 只出现在用户可读的会话日志与插件注册表中。服务默认绑定 loopback,与整个 Web UI 同一信任模型。

安装

npx -p @deepseek-ai/dsh dsh plugin --profile web add github:condaThinker/dsh-image-inline
sudo systemctl restart dsh   # 或按你的方式重启 web profile

本插件零构建(纯 JS),GitHub 直接分发源码,安装时无需执行任何构建脚本。

卸载:

npx -p @deepseek-ai/dsh dsh plugin --profile web remove dsh-image-inline
sudo systemctl restart dsh

配置

cordis.patch.yml 中的 config(可覆盖):

键默认说明
maxImageBytes26214400 (25MiB)单张图片编码字节上限(实际生效值 = min(本配置, 附件服务配置))
maxImagePixels40000000 (40MP)宽×高上限;0 关闭该检查
mediaTypespng/jpeg/webp/gif接受的格式白名单

使用

在会话中让模型显示一张图片,例如:

用 show_image 显示 /path/to/your/image.png

模型调用后,对话流里该工具调用处会出现图片卡片(缩略图,点击看原图),可上翻查看历史。若图片不存在/格式不支持/超限,卡片显示错误文案,会话不中断。

测试

cd dsh-image-inline
node --test "tests/*.spec.mjs"   # 33 个用例:host 24 + client 7 + 并发/路由回归

client 渲染用例按以下顺序解析 react/react-dom:DSH_HARNESS_NODE_MODULES 环境变量指向的目录(需装有 react@18 + react-dom@18),或本仓库 npm install 后的本地 node_modules。找不到时该套件自动跳过并提示,host 用例不受影响。

已知限制

  • 像素超限孤儿附件:saveImage 先落盘后检查 maxImagePixels——若插件配置比部署默认(40MP)更严,超限图片会留下一个无引用的附件对象(内容寻址、无害)。
  • 注册表单调增长:每张展示的图在 $DSH_HOME/plugins/dsh-image-inline/registry.json 留一条记录(约 200 字节/条)。
  • 无构建步骤:host/client 均为纯 JS(modlens 同款零构建协议),link: 安装下改代码即生效,但新增/修改 bundle 行需重启 profile(HMR 覆盖不了 bundle 图变化)。
  • 模型上下文纯净是设计目标:show_image 的结果永远是文本,图片只通过 meta + HTTP 端点到达浏览器。

开发者笔记(事故复盘)

  • client bundle 必须遵循惰性 CJS 协议:window.__ModuleLoader__.load({id, factory: (require) => {...; return module.exports}})——require 是 factory 的注入参数,写成自由变量会在浏览器抛 require is not defined。
  • host 注入服务只能通过注入作用域访问:ctx.inject(['webServer'], (scope) => scope.webServer.register(...)),在外层 ctx 上属性访问会抛 cannot get property "webServer" without inject。
  • 注册表写入已串行化(进程内 promise 队列),并行 show_image 调用不会丢条目。