Skip to content
dsh.fish
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 回复的是
`![fig1](http://127.0.0.1:3080/ws/D:/shots/fig1.png)`——**图片直接渲染在对话里**。
任意盘、任意目录、中文路径、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 路由直接渲染:**

![9 个不同位置的图片全部直接渲染](https://raw.githubusercontent.com/carlclouder/dsh-image-serve/main/docs/demo-grid.svg)

**前后对比:**

![before-after 对比](https://raw.githubusercontent.com/carlclouder/dsh-image-serve/main/docs/before-after.svg)

## 它解决什么问题 / What it solves

| 没装本插件 | 装了本插件 |
|---|---|
| AI:图片已保存 `D:\shots\fig1.png`(一行死路径,什么也看不到) | AI:`![fig1](http://127.0.0.1:3080/ws/D:/shots/fig1.png)` ← **图片直接显示在对话里** |
| 出图后要自己切到文件夹打开看 | 出图即看,零切换 |
| 想展示别的目录的图?先手动复制到约定目录 | 任何位置直接引用,包括 `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

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source