DSH Plugin Media Gen: Play Local Audio/Video in DSH Conversations and Invoke Grok Imagine for Video Generation

前言

DeepSeek Harness(DSH)在对话里已经能渲染指向本地文件的图片,但没有对等的视频、音频内联播放能力。若你在 Harness 里调试媒体管线、复盘本地素材,或希望助手直接展示一段 MP4 而不是只给出路径,就需要从插件层补这一环。下面介绍社区插件 dsh-plugin-media-gen:它在聊天里提供本地图片/视频/音频播放器,并可选调用 xAI Grok Imagine 生成短片。

这是什么

dsh-plugin-media-gen 由维护者 atzx 发布,分类为客户端插件。一句话定位:在 DSH 聊天中内联播放本地媒体,并通过 xAI Grok Imagine API 生成视频后同样内联展示。Harness 本体不负责视频/音频的 Turn 级卡片;该插件用两个工具和一个自定义媒体路由填补缺口。

核心功能

工具 show_media

展示已存在的本地图片、视频或音频文件。参数:

参数 类型 说明
path string 必填。 文件的绝对路径。
title string 可选,播放器上方的标题。

支持的扩展名:图片 png jpg jpeg webp gif avif bmp;视频 mp4 mov m4v webm mkv;音频 mp3 wav m4a flac ogg opus aac。其它扩展名会被拒绝并返回支持列表。返回 { path, kind, bytes },并在 presentationMeta 中记录 { path, title? },Turn 卡片从元数据读路径,不依赖正文解析。

README 说明:图片仍可通过 Markdown 渲染;show_media 主要针对 Markdown 无法覆盖的视频与音频。

工具 generate_video

调用 xAI Imagine API(POST /v1/videos/generations,轮询 GET /v1/videos/{id}),将 MP4 下载到 <DSH_HOME>/media/,返回绝对路径。参数包括:prompt(必填)、image_path、duration(1–15 秒)、aspect_ratio、resolution、model、generate_audio、output_dir。

API Key 每次调用从 GROK_API_KEY 解析,来源为启动环境或 ~/.dsh/.credentials.yaml,轮换密钥无需重启应用。

展示位置:Turn 尾部卡片与工具行

工具调用默认折叠在可折叠组里;若只在 tool.call.toolview 注册卡片,需展开组才能看到播放器。插件的主展示面是 Turn tail:Turn Definition(media-shown)累积媒体工具产生的路径,conversation.chat.turnTail 注册的卡片在助手收束段落下绘制——与 present、schedule_create 同类位置。同时写入带 key 的工具行,不展开折叠组也能看到播放器。

媒体工具结果会引用路径(例如 Shown audio: "/…/file.mp3" (2.8 MB)),以便会话重放时从含空格的文件名中仍能提取路径。

自定义媒体路由(Range 请求)

Harness 的 GET /api/file 会忽略 Range 头并始终以完整 200 响应;<video> 需要字节范围,收到全量 200 会触发 error,而音频管线对全量响应更宽容。插件因此注册认证路由:

GET|HEAD /api/media-gen/file?path=<absolute>

  • 支持 Accept-Ranges: bytes 与正确 MIME
  • 206 与 Content-Range(含 bytes=a-b、bytes=a-、bytes=-n)
  • 不可满足范围时 416
  • 流式传输,不整文件缓冲

客户端优先走该路由,失败则回退 /api/file,再回退为普通链接;连接载体不可用时仍可部分工作。

安装与启用

官方 README 给出的步骤是符号链接到 desktop profile 的 node_modules,并在 package.json 中声明 link 依赖与 bundle。不要凭插件名拼接 dsh plugin add github:... 一类未在文档出现的命令。

1、在插件源码目录执行:

ln -sfn "$PWD" ~/.dsh/profiles/desktop/node_modules/dsh-plugin-media-gen

2、编辑 ~/.dsh/profiles/desktop/package.json:添加 link: 依赖,并把 dsh-plugin-media-gen 写入 dsh.profile.bundles。

3、重启 DSH 应用。

插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,确认工具与自定义 HTTP 路由符合你的安全策略。

典型用法

在对话中让助手调用工具即可(具体措辞因模型与 Harness 配置而异,行为以工具 schema 为准)。

展示本地文件: 提供绝对路径,必要时加 title。例如助手调用 show_media,path 为 /home/user/clips/demo.mp4。

生成视频: 调用 generate_video,prompt 必填;按需设置 duration(1–15)、aspect_ratio、resolution、model、generate_audio、image_path、output_dir。需事先配置 GROK_API_KEY(环境变量或 ~/.dsh/.credentials.yaml)。

适用场景与限制

适合: 在 DSH 桌面 profile 里内联试听/预览本地音视频;在对话中生成 Grok Imagine 短片并直接在 Turn 卡片里播放;需要正确 HTTP Range 的视频 seek 行为时。

限制(README 原文要点):

  • 播放器只出现在 Turn 卡片与工具行,不会作为裸 assistant 块或 Markdown 扩展出现;Harness 未把文本渲染器作为扩展点暴露。
  • generate_video 在轮询期间阻塞当前 turn;生成约 1–3 分钟,声明超时为 15 分钟。
  • 第三方插件不 import @deepseek-ai/*;浏览器侧通过 Harness 的 window.__ModuleLoader__.load 加载,仅依赖 react。

社区插件目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录页与 GitHub 为准(撰写时 GitHub 星标为 0)。

结尾

dsh-plugin-media-gen 从插件层补上了 DSH 对本地视频/音频的内联播放,并用 Grok Imagine 把「生成 → 落盘 → 播放」串在同一条对话 Turn 里;自定义 /api/media-gen/file 解决了全量 200 导致 <video> 失败的问题。需要启用时按 README 的 link 与 bundle 步骤操作即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye