awa-123-cw/better-deepseek-harness ↗★ 1
pic-host
DSH 图片/音视频托管:启动时自动拉起 8899 静态服务(历史 URL 兼容 + 媒体 Range/播放页)+ 3080 同源 /files/ 路由(Range 流式)+ WebUI 内点击即播(视频静音/音频语音)
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:awa-123-cw/better-deepseek-harness说明文档
阅读完整 README ↗pic-host — DSH 图片/视频托管插件
DSH(web profile)启动时自动拉起本地图片/视频静态服务,让 WebUI 里的图片 URL 始终可用。
GitHub: https://github.com/awa-123-cw/better-deepseek-harness(Release 附件含打包好的 tgz;旧名 pic-host 自动 301 重定向)
解决什么问题
历史会话消息里的图片形如 http://127.0.0.1:8899//,由独立静态服务提供。
每次重启 DSH / 机器后该服务消失,WebUI 历史图片全部变成损坏图标,需要手动拉起。
本插件挂载后无需任何人工操作:
| 时机 | 行为 |
|---|---|
| DSH 启动 | 探测 127.0.0.1:8899;未监听则分离进程拉起 pic_server.py(历史 URL 立即恢复) |
| DSH 启动 | 注册 3080 同源路由 /files/*(映射 D:\ds4,新图用 http://:3080/files/... 引用,浏览器加载最稳) |
| DSH 退出 | 自动结束自己拉起的 python 进程(不留孤儿);强杀后残留的 python 下次启动会被探测复用 |
| 状态查询 | 浏览器开 http://127.0.0.1:8899/ → 可视化状态页(PID/运行时长/请求数/目录映射,5 秒自动刷新) |
| 状态查询 | GET http://127.0.0.1:3080/pic-host/status → 插件 JSON 状态(DSH 重启后可用) |
| WebUI 指示 | 侧栏左下角(设置按钮旁)出现鲸鱼线条图标按钮(DeepSeek 吉祥物,与 DSH 内置图标统一,无文字):绿点=在线/红点=离线(每 5 秒刷新);点击弹紧凑状态卡(渲染在 shell.overlay 全局最高层,不被会话区遮挡)——「更好的DeepSeekHarness」 名称 + 端口/PID/状态 + 打开状态页,点卡片外任意处关闭 |
| 图片预览 | 聊天里双击任意图片 → 全屏 lightbox 放大预览(shell.overlay 最高层):滚轮缩放(0.2x–8x,以光标位置为锚点,光标下的画面内容缩放后纹丝不动;无过渡动画、连续快速滚轮零漂移——布局位置状态推导 + zoomRef 最新值,不读 DOM 实测位置)、拖拽平移、双击图片复位、点击遮罩或按 Esc 关闭。DSH 原生无预览功能,由本插件补齐 |
媒体能力(v0.4.0:视频 + 音频)
- 服务端(8899 + 3080 /files/ 双通道)全类型支持 HTTP Range(206 Partial Content +
Accept-Ranges: bytes): 浏览器/可直接引用媒体 URL 播放,拖动进度条/seek 丝滑。 - 视频/音频 MIME 完整:mp4 / m4v / webm / mov / mkv / avi / mpeg / ogv / 3gp / wmv / flv / mp3 / m4a / aac / wav / ogg / flac / opus / weba。
- WebUI 内直接播放(不跳转)(client):聊天消息里的视频/音频地址——markdown 链接(
[xx](https://github.com/awa-123-cw/better-deepseek-harness/blob/c53bd17fe0600cf0d2119fab5ad5ee8a3f841522/xxx.mp4))、 图片语法误用(渲染成破图)、裸 URL 文本——三通道全部原地替换为 「点击即播」卡片:点「在 WebUI 内播放」即在消息里内嵌播放(controls + 拖动进度条 + 全屏), 双击卡片 → 全屏播放器(倍速 + 全屏 + 下载文件),全程不离开 webui。