Bundle
dsh-image-serve
让 AI 助手能在会话里直接"看到"本地图片:/ws/<绝对路径> 把磁盘上任何位置的文件变成会话 markdown 可渲染的同源 http URL。Show any local file in DSH web sessions — no staging directory, any drive.
- Source
- carlclouder
- stars
- 1 stars
- License
- MIT
- Updated
- Updated yesterday
Readme
# 为什么你的 AI 助手永远"给你看不了"一张本地图?装这个插件就解决了。
**你一定遇到过这个场景**:你让 AI "给我看看刚那张截图" / "把生成的封面图展示一下",
它一本正经地回复"图片已保存到 `D:\shots\fig1.png`"——然后呢?**什么都不会出现**。
那只是一行打不开的死文本。
**原因**:DeepSeek Harness 的 web 会话里,markdown 渲染器只认 http/https 图片源。
你的截图、AI 生成图、本地文档全在硬盘上,`file:` 和 `data:` 引用一律被过滤,
而 DSH 官方**没有提供任何本地文件路由**。这不是配置问题,是这个能力缺口从第一天
就在——直到装上这个插件。
**装完之后**:同样一句"给我看看 fig1.png",AI 回复的是
``——**图片直接渲染在对话里**。
任意盘、任意目录、中文路径、NAS 共享,全都直接显示,不需要复制到任何特定文件夹。
---
# dsh-image-serve
DeepSeek Harness 的本地文件展示插件:安装一次,会话 markdown 即可通过
`/ws/<本地绝对路径>` 直接渲染磁盘上任何位置的图片与文件。
**English**: register a `/ws` route in dsh web that maps `/ws/<absolute local path>`
to any file on disk, so session markdown can render local images via same-origin
http URLs (the renderer accepts http/https only). No root, no whitelist, no staging
directory — any drive, any folder.
## 效果预览 / Demo
**九个不同位置的文件(跨 C/D/E/F 盘、中文路径、深层嵌套、UNC),全部经 /ws 路由直接渲染:**

**前后对比:**

## 它解决什么问题 / What it solves
| 没装本插件 | 装了本插件 |
|---|---|
| AI:图片已保存 `D:\shots\fig1.png`(一行死路径,什么也看不到) | AI:`` ← **图片直接显示在对话里** |
| 出图后要自己切到文件夹打开看 | 出图即看,零切换 |
| 想展示别的目录的图?先手动复制到约定目录 | 任何位置直接引用,包括 `C:\`、`E:\`、NAS |
典型场景:**让 AI 展示它刚处理的截图**、**AI 出图后当场验收**、**多张图表并排对比**、
**导出的文档/网页快照直接预览**。
## 快速上手(30 秒)
```sh
dsh plugin --profile web add dsh-image-serve # 在线安装
# 或离线:dsh plugin --profile web add <本包 .tgz 路径>(零依赖,自包含)
```
重启 dsh web。之后 markdown 里写(`/ws/` 后跟**本地绝对路径**):
```
http://127.0.0.1:3080/ws/D:/AI任务/Generated/cover.png
http://127.0.0.1:3080/ws/D:/AI任务/ (指向目录 → 返回可浏览的文件列表页)
http://127.0.0.1:3080/ws/D:\截图\对比图.png (反斜杠写法等价)
http://127.0.0.1:3080/ws//NAS/share/方案.png (UNC 网络路径)
```
相对路径会返回 400 并附提示;只支持 GET/HEAD;MIME 自动识别
(png/jpg/webp/svg/md/json…)。
## 安全须知(装前必读)
`/ws` 是**本地任意文件的读取通道,没有白名单**(v2.1 起应用户明确决策移除白名单设计):
- 路由的可达范围 = dsh web 的可达范围:默认仅本机回环 `127.0.0.1`;
- 但如果你通过 Tailscale 等反把 web 暴露到远程,**远程设备同样能读取本地任意文件**;
- 只读,无写入/删除/列目录。
## 从 v2.0 / 文件式旧版迁移
旧短链接 `…/ws/<文件名>`(隐含 `D:\AI任务` 根目录)**已失效**,请改写为完整
`…/ws/D:/AI任务/<文件名>` 形式。`root` 配置已不存在,profile patch 里的覆盖行
(如 `- id: web-workspace-files, config: {root: ...}`)可删除。
## 特性一览 / Features
- **目录浏览**:/ws 指向目录时返回可点击的 HTML 文件列表(子目录优先、大小/修改时间、上一级导航,文件名已做 HTML 转义)
- 零运行时依赖的标准 npm bundle;可在 dsh-market 中热启停/更新/卸载
- 跨盘符(C:/D:/E:/…)、中文路径、深层嵌套目录、UNC 均实测可用
- 明确报错:相对路径 400 + 提示、文件不存在 404、非 GET/HEAD 405
## License
MIT
Install
dsh plugin --profile web add github:carlclouder/dsh-image-serve
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-image-serve from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.