让会话 markdown 直接渲染本地任意位置的图片与文件:/ws/<本地绝对路径> 同源路由,跨盘符、中文路径、深层嵌套与 UNC 均可,无需先复制到特定目录。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:carlclouder/dsh-image-serve
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
你一定遇到过这个场景:你让 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 秒)
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
链接
同类插件
tt-a1i/archify#integrations/deepseek-harness★ 85456
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。
dream-num/dsh-univer-office★ 564
为 DeepSeek Harness 打造一个真正的办公环境。Univer Office 插件将电子表格、文档、幻灯片、画布、多维表格等汇聚到同一个运行时——数据互联、修改经过校验、变更按版本管理,并以隔离工作树支持多 Agent 协作。
PerryLink/dsh-industry-research★ 214
面向 DeepSeek Harness 的确定性行业研究报告:公司与行业研究流程基于分阶段证据产出结构化、可核验的报告。
PolinniZhong/dsh-knit★ 54
把会话工作区里已有的 Markdown 文档、源码、图片与视频列进 DSH 侧边栏,按与当前对话的相关性排序。默认的词法模式用最近几条消息在本地与标题、摘要、正文做带 IDF 加权的匹配(BM25)—— 不调用模型、没有网络出口,内容不出本机。列表来自工作区扫描,而不是「最近打开记录」,所以重启 DSH 或新开会话都不会变空。排序结果组织成主要 / 辅助 / 相关三层的阅读顺序,每一条都写明可核验的理由(命中了哪个字段、被哪一篇引用),点一行即可就地预览:Markdown 按渲染后的样子显示、相对路径图片真实渲染、源码走宿主自带的语法高亮、视频走 HTTP Range 流式播放。同一份 Context Pack 也作为 knit_docs 工具交给 agent。后续版本陆续补上读取证据与生命周期(归因在读那一刻冻结)、固定 / 排除(排除先于检索生效,且可恢复)、关系证据(引用 / 导入 / 测试,带行号)与增量索引(重启后复用)。v0.23 起还多一条可选的混合检索:默认关闭,只有你自己配好 Ollama 或 OpenAI 兼容的 embedding 服务才会生效。它生效时,发出去的是你这句查询原话加上每篇候选文件的标题与摘要 —— Markdown 的摘要取自正文首段(不超过 60 字),代码的摘要是它所在的工作区相对目录,图片 / 视频贡献的是文件名;完整正文与绝对路径都不发送,指向本机服务(loopback)时内容不出这台机器。v0.24 起还能做变更关联:用一条只读的 git status(固定 argv、不走 shell、子进程环境白名单),配合同一套引用 / 导入 / 测试 / 提及证据,指出这次改动大概率该一起看哪些文件 —— 默认关闭。语义检索的收益仍待真 provider 实测,因此不承诺召回提升。
HuanLinOTO/dsh-plugin-mineru★ 47
向模型暴露 MineRU 文档解析工具。
kw78/dsh-office-tools★ 32
面向 agent 的工作区安全 Office 工具集:创建/读取 Word、创建/读取/更新 Excel、创建/读取 PowerPoint,并支持 PNG/JPG/GIF 图片排版。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。