🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

本地媒体内联 ywleeo/dsh-image-preview

DeepSeek Harnessv0.2.1
ywleeo26 天前有提交已提供中文文档扫描:含敏感能力

让 DeepSeek Harness dsh 对话正文直接显示本地图片的插件:本地路径自动内联为图片 +…

30.8/100
综合分
1
GitHub 星标
88
npm 周下载
—/5
用户评分

数据截至 2026/10/8 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-image-preview
npm 源 · dsh-image-preview 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-image-preview @ 0.2.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 17:36:55

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 11 处,展示前 10 条)
  • 写入本地文件
    lib/index.js:390
    mkdirSync(directory, { recursive: true, mode: 0o700 })
  • 读取本地文件
    lib/index.js:398
    entries = readdirSync(directory).map((name) => {
  • 读取本地文件
    lib/index.js:400
    return { full, mtime: statSync(full).mtimeMs }
  • 删除本地文件
    lib/index.js:408
    try { unlinkSync(entry.full) } catch { }
  • 读取本地文件
    lib/index.js:430
    const stats = statSync(sourcePath)
  • 读取本地文件
    lib/index.js:434
    const hit = readFileSync(cached)
  • 读取本地文件
    lib/index.js:441
    const produced = readFileSync(cached)
  • 写入本地文件
    lib/index.js:453
    writeFileSync(cached, builtin, { mode: 0o600 })
  • 读取本地文件
    lib/index.js:487
    stats = statSync(real)
  • 发起网络请求
    lib/client.js:175
    pending = fetch(metaUrl, { credentials: 'same-origin' })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 本地路径自动内联为图片
  • 可点击本地地址行

README

由 DeepSeek 最新模型翻译生成
dsh-image-preview 让 DeepSeek Harness(dsh)Web 对话正文直接显示本地图片与视频的插件:助手回复里写出的本地图片/视频绝对路径会自动变成内联图片或可播放的视频,媒体下方附一行可点击的本地地址(点击用系统默认应用打开)。 - host 侧(index.js):包装 llm/stream,把助手文本中的本地媒体路径改写为同源回环 URL;注册 /image(读图)、/video(读视频,支持 HTTP Range 分段响应)与 /open(本地打开)三条路由。 - 客户端(client.js):极简模块(__ModuleLoader__.load 工厂格式),负责把「▶ 播放视频」链接替换成 播放器、链接小字号样式、收紧间距、拦截点击(只触发本地打开,不开新 tab)。
展开完整文档(README 剩余 1 节)
dsh-image-preview

让 DeepSeek Harness(dsh)Web 对话正文直接显示本地图片与视频的插件:助手回复里写出的本地图片/视频绝对路径会自动变成内联图片或可播放的视频,媒体下方附一行可点击的本地地址(点击用系统默认应用打开)。

- host 侧(index.js):包装 llm/stream,把助手文本中的本地媒体路径改写为同源回环 URL;注册 /image(读图)、/video(读视频,支持 HTTP Range 分段响应)与 /open(本地打开)三条路由。
- 客户端(client.js):极简模块(__ModuleLoader__.load 工厂格式),负责把「▶ 播放视频」链接替换成 播放器、链接小字号样式、收紧间距、拦截点击(只触发本地打开,不开新 tab)。

支持格式:

- 图片:png / jpg / jpeg / webp / gif / svg / avif / bmp / ico(单张上限 20MB,或附件服务的 maxImageBytes)
- 视频:mp4 / m4v / webm / mov / ogv(单文件上限 512MB,浏览器原生可播放的编码;不支持 mkv/avi 等非浏览器格式)

截图

对话中本地图片路径自动内联为大图,图下附一行小字本地地址(点击用系统图片工具打开):

dsh-image-preview 对话内联图片

对话中本地视频路径自动内联为播放器(,可拖动进度条):

dsh-image-preview 对话内联视频

特性

- ✅ 本地图片路径 → 对话内联显示
- ✅ 本地视频路径 → 对话内联播放器(支持拖动进度条,HTTP Range 206 分段响应)
- ✅ 跨重启媒体不消失(持久 token 存于 $DSH_HOME/plugins/dsh-image-preview.token)
- ✅ 点击地址行 → 系统默认应用打开(macOS open / Windows start / Linux xdg-open)
- ✅ 点击不开新 tab(客户端拦截;无客户端模块时降级:图片新 tab 显示原图,视频新 tab 直接播放)
- ✅ 媒体下方地址行:小字号、紧贴媒体(两侧 margin 2px)
- ✅ 零构建、纯 ESM;只处理助手回复文本,工具结果卡片不改写(设计边界)

安装

在 dsh 的 profile 目录安装为普通依赖(不声明 dsh.bundle,不会进入 bundles 层):

cd ~/.dsh/profiles/web
pnpm add github:ywleeo/dsh-image-preview

然后在 ~/.dsh/profiles/web/cordis.patch.yml(用户 patch 层)追加:

- insert:
- id: dsh-image-preview
name: dsh-image-preview

重启 dsh web 后刷新页面即可。

工作原理

1. 改写:llm/stream 文本块结束时,扫描真实存在的本地媒体绝对路径(POSIX /…、Windows 盘符、UNC),验证文件存在后改写为:

图片:

preview

<path>

视频:

▶ 播放视频

<path>

2. 读图:/image 路由校验 token 后经 ctx.fs 读取文件字节,按扩展名返回 Content-Type。
3. 读视频:/video 路由校验 token 后按扩展名返回视频 Content-Type,解析 Range 头返回 206 分段响应(Content-Range/Accept-Ranges: bytes),播放器可拖动进度条;无 Range 时返回完整字节。
4. 打开:/open 路由校验 token 后 spawn 系统默认应用,302 到对应媒体路由(无客户端时的降级展示)。
5. 客户端:client.js 注入 CSS(播放器样式 + 小字号 + 间距)、把「▶ 播放视频」链接替换成 播放器(MutationObserver 兜底),并拦截对 /open 链接的点击(preventDefault → fetch 触发本地打开)。

文件分工与启动壳

| 文件 | 作用 |
| index.js | 启动壳。不 import 任何 dsh 核心模块,运行时动态加载 host.js 并挂成子插件;失败只丢功能,不影响 dsh 启动。 |
| host.js | 上面第 1–4 条的全部逻辑(llm/stream 改写 + 三条路由)。 |
| client.js | 上面第 5 条(样式、播放器、点击拦截)。 |

为什么拆:dsh 的 loader 条目一旦激活失败,boot 的激活审计(assertEntriesActivated)会把整棵插件树判死、进程非零退出。本插件包装 llm/stream、注册三条路由,正是最容易挨核心升级刀的那一类,于是壳把会坏的部分挪出启动路径:

- 壳不声明 inject,所以它的 loader 条目永远 ACTIVE,boot 审计永远通过;
- host.js 自己的 inject: ['webServer', 'fs'] 在子 fiber 上照常生效,服务没就绪就先挂起,就绪后自动激活;
- host.js 导入失败、同步抛错、异步 reject,一律只记一条日志,插件停用,dsh 照常启动;
- 子 fiber 挂在壳下面,壳被卸载时宿主逻辑照常回收。
约束(改 index.js 前必读):package.json 的 main 必须继续指向 index.js,loader 条目名必须继续是裸包名 dsh-image-preview。客户端那一半靠 dsh.client + exports["./client"] 从 loader 条目名反查包,条目名换成子路径会导致客户端半边再也不被扫描到。

升级改坏 host.js 时的预期表现:dsh 正常启动,日志出现

[dsh-image-preview] host.js 加载失败,插件功能已停用,dsh 继续运行。原因:…

对话里的本地图片/视频路径不再内联,其余功能不受影响。照着日志改 host.js 即可,index.js 不用动。

设计边界

- 只处理助手回复的流式文本(llm/stream),工具结果卡片里的路径文本不改写。
- 只处理真实存在的本地绝对路径;远程 http(s)/data:/file: 链接、相对路径不改写。
- 视频仅支持浏览器原生可播放的容器/编码(mp4(H.264/AAC)、webm、mov、ogv);mkv/avi 等不在预览范围内,但地址行点击仍可用系统播放器打开。
- 视频读取为整读后按 Range 切片(本地预览场景可接受,单文件上限 512MB)。
- token 持久化在 $DSH_HOME/plugins/dsh-image-preview.token(600 权限):任何能读该文件的本地进程都可访问三条路由 —— 仅限本机使用,勿暴露到公网。

开发与维护

改动后需同步到 profile 的 node_modules 拷贝(file: 依赖是拷贝/硬链接,编辑工具原子写入会断开硬链接):

bash scripts/sync.sh # 或手动:cp index.js host.js client.js package.json ~/.dsh/profiles/web/node_modules/dsh-image-preview/

启动壳契约校验(无外部依赖):

node test-shell.mjs # host.js 坏掉时不抛、只报告

生效方式:

- index.js / host.js(host 逻辑)→ 重启 dsh web
- client.js(样式/播放器/点击)→ 刷新浏览器页面

卸载

cd ~/.dsh/profiles/web
pnpm remove dsh-image-preview

并删除 cordis.patch.yml 里对应 insert。

发布更新

仓库内置两条脚本(scripts/):

本机开发时同步(不发布)

file: 依赖的 node_modules 是拷贝/硬链接,改完源码后同步到所有已安装的 profile:

pnpm run sync

然后按改动类型生效:index.js → 重启 dsh web;client.js → 刷新页面。

一键发布(提交 + 打 tag + 推送)

pnpm run release # 递增 patch 版本
pnpm run release minor # 递增 minor
pnpm run release major # 递增 major

脚本自动完成:升版本 → 同步本机拷贝 → git commit → git tag vX.Y.Z → git push。

其它机器/重装后更新

- 首次:pnpm add github:ywleeo/dsh-image-preview#vX.Y.Z(按 tag 安装,可复现)
- 已安装:pnpm update dsh-image-preview(重新拉取默认分支最新代码)后重启 + 刷新

已知边界

- 路径含 ( ) [ ] 等特殊字符时 markdown 链接语法可能破损(日常路径不受影响)。
- Windows/Linux 打开命令已实现但仅在 macOS 实测。

License

MIT
预览分享卡片长什么样 ↓ywleeo/dsh-image-preview
分享 · DeepSeek Harness Hub
ywleeo/dsh-image-preview

让 DeepSeek Harness dsh 对话正文直接显示本地图片的插件:本地路径自动内联为图片 +…

这是你的仓库?认领条目

回到顶部