dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在对话流里直接播放本地视频和音频。模型这一轮写出的媒体文件(录屏、转码、配音),只要路径出现在它跑的命令、命令输出或回复里,回合收尾时播放器就自动出现在回复正下方,不用调工具;别的文件用 play_video 工具播放。视频是带悬停预览的小卡片,音频是可拖进度的细条,走 HTTP Range 流式传输,长视频能拖进度条、不会整个读进内存。同时注册了侧边栏媒体预览渲染器——内置预览器把 mp4 当作不可预览。
让 DSH(DeepSeek Harness)的对话流里直接播放本地视频 / 音频:模型录屏、转码、配音生成的文件,回合结束时播放器自动出现在回复正下方——Claude 桌面端 / Codex 同款位置,不用点任何东西,也不用模型专门调工具。说一句「播一下 ~/Movies/a.mp4」也行。
一句话:DeepSeek Harness(DSH)插件,在对话里直接播放本地视频和音频。模型录屏、转码、配音做出来的文件,播放器自动出现在回复下面;别的文件用 play_video 工具播。什么时候用:「录个屏」「把视频转成 mp4」「生成一段配音」之后,想直接在对话里看、听。
安装:dsh plugin add https://github.com/OrderG-X/dsh-video-preview/releases/latest/download/dsh-video-preview.tgz,重启 DSH。English: a DeepSeek Harness (DSH) plugin that plays local video and audio inline in the chat. Files the model makes (screen recordings, transcodes, voiceovers) get a player under its reply automatically, and theplay_videotool plays any other file. Install with thedsh plugin addcommand above, then restart DSH.
dsh plugin add https://github.com/OrderG-X/dsh-video-preview/releases/latest/download/dsh-video-preview.tgz装完重启 DSH(客户端代码在 DSH 启动时打包,不重启看不到播放器)。DSH「插件」页里显示为「视频播放」。
开发时可以直接链到本地目录:dsh plugin --profile desktop add link:/path/to/dsh-video-preview,改了代码同样要重启。
DSH 的消息渲染块只有 text / image / file / table,没有 video,工具调用块又默认折叠。这个插件用纯官方插件 API 补上内联播放(零 @deepseek-ai/* 依赖,和官方 present 工具同款机制)。
一次 play_video 调用后,用户能看到:
模型用自带 present 工具交付的媒体文件,也会自动出现播放器。
模型这一轮里生成的视频 / 音频(录屏、ffmpeg / avconvert 转码、say 配音……),回合收尾时自动挂上播放器:
~、相对路径、shell 转义都认)play_video / present 播过的不再挂对话里直接说「播一下 /Users/me/Movies/a.mp4」,模型会调 play_video。参数:
参数 · 必填 · 说明 path · 是 · 本地文件路径(支持 ~;相对路径按会话的工作目录算) title · 否 · 播放器标题,默认文件名 autoplay · 否 · 自动播放(浏览器通常会拦) loop · 否 · 循环播放
DSH 的播放器是 Chromium 内核,能播什么由它决定:
· 格式 能播 · 视频 mp4 / m4v / mov / webm / ogv,音频 mp3 / wav / ogg / m4a / aac / flac / opus 看编码 · mkv / 3gp:要看文件里的编码,播不了会在播放器下面说明并给出转码命令 播不了 · avi / flv / wmv / wma / ts / mpg / rmvb 等 —— play_video 会直接说明,并给出转码命令
转码(需要 ffmpeg,macOS 上 brew install ffmpeg):
ffmpeg -i in.avi -c:v libx264 -c:a aac -movflags +faststart out.mp4 # 视频
ffmpeg -i in.wma -c:a aac out.m4a # 音频播放出错时,播放器下面会告诉你是哪种情况:文件被移走了、没有权限、插件没加载(要重启 DSH),还是编码不支持(附转码命令)。
DSH 的本地网页服务本身不做鉴权,浏览器里任何网页都摸得到 127.0.0.1,所以两条播放路由自己把门:
/dsh-video-preview/media):token = HMAC(密钥, 文件绝对路径),密钥存在 ~/.dsh/cache/dsh-video-preview.secret(0600),同一台机器上跨重启、跨宿主都有效。/dsh-video-preview/preview,没有 token):交给 DSH 自己的 connection 服务验登录 cookie;老版本 DSH 没有这个服务时只收本机连接。v0.3.0 之前的版本只看 cookie 名字,网页能伪造 cookie 读到任意文件,请升级。
服务端 play_video 工具 ──校验文件──▶ 返回带签名的 URL
│
└─append deliverables/presented 事件(官方 present 工具同款通道)
自动 session/event 收集这一轮的路径 → agent/turn-stopping 时挑出新文件 → 同一条通道
路由 /dsh-video-preview/media 签名 token · HTTP Range 流式(大文件不进内存)
/dsh-video-preview/preview DSH 登录态 · 供侧边栏 / 回复下方的播放器
客户端 turnTail 槽 / documentPreviews 渲染器 / toolview 槽lib/index.js —— 服务端:工具 + deliverables 事件 + 两条流式路由(读盘出错只断当前请求,不会带崩 DSH)lib/auto-present.js —— 自动播放:挖路径、挑新文件、回合收尾前呈现(回合结束后才 append 的话,界面要重开会话才刷出来)lib/client.js —— 客户端:回复下方播放器 / 侧边栏预览 / 工具块兜底 / 出错诊断(exports.inject 是客户端短服务名,写包名会一直 pending)locale/*.json、icon.svg —— DSH 插件页的卡片标题、说明和图标cordis.patch.yml —— bundle patch(insert 行的 name 必须是完整包名,客户端按它解析 bundle)node test/test-routes.mjs # 把门、Range、HEAD、读盘出错、工具的格式提示
node test/test-client.mjs # 三个挂载点、视频卡 / 音频条、折叠、出错诊断
node test/test-auto.mjs # 自动播放:新 / 老文件、正文优先、各种路径写法、不重复、重放不动手DeepSeek Harness 0.2.1-rc.2 桌面端端到端实测:回复下方播放器(mp4 / HEVC 的 mov / m4a,中文文件名)、侧边栏预览和播放、avi 的转码提示、文件被移走后的出错提示;伪造登录 cookie 的请求被拒;模型用 say / avconvert 生成的 m4a、mp4(含带空格的中文文件名)没调 play_video,回合结束时播放器实时出现且能播;视频卡悬停预览 / 点击播放 / 下载、音频条播放、超过 3 个时折叠展开、深浅两种主题下的配色。
参考实现:@goodandready/dsh-image-gen(客户端插件套路)与官方 dsh-tool-present(deliverables 通道)。