dsh-omni-modal:为纯文本模型接上 OpenAI 兼容的生图与生视频

前言

DeepSeek Harness(DSH)里的对话模型通常是纯文本接口:能写代码、能调工具,但本身不会「画一张图」或「渲一段视频」。常见做法是改 Harness 源码、写一次性脚本,或把生成能力塞进静态 Skill——维护和切换 endpoint 都不方便。

下面介绍社区插件 dsh-omni-modal(维护者 yzhclcl):在 DSH 设置侧栏增加 Omni-modal settings,把任意 OpenAI 兼容 的图像 / 视频 API 配进去,并向模型注册 generate_image、generate_video、check_video 三个工具。无需改 Harness 源码。插件分类为「模型推理」,当前 GitHub 星标为 0;状态为可用,跟随 Harness 开发者预览,接口可能变动。

这是什么

dsh-omni-modal 是 DSH 官方插件机制下的 npm 包(版本 0.1.0,MIT 许可证)。它在设置里提供可实时保存的配置页(不是静态 Skill),Host 侧注册路由与工具,Client 侧注入设置 UI。目标很明确:让文本模型通过工具调用完成文生图、异步文生视频及轮询取片,并把产物落到插件数据目录。

核心功能

设置页与多配置档

  • Omni-modal settings:在 Settings → Omni-modal settings 中编辑 endpoint、API Key、模型、路径、默认尺寸等,点 Save 后下次工具调用即生效,无需重启 DSH(安装后首次需重启以加载 Host 与设置入口)。
  • 多配置档(Config profiles):可并存多套 endpoint,命名、切换当前激活档;单次调用也可传可选参数 profile 使用非激活档。
  • 图像与视频分开配置:同一 profile 下,图像与视频各自拥有独立的 baseUrl、apiKey、model、路径、尺寸等字段。
  • 额外请求参数:自由 JSON 合并进请求体,用于各厂商特有字段(如 {"quality":"high"}、{"mode":"text","aspect_ratio":"16:9"})。
  • 连通性测试:一键探测 GET <baseUrl>/models(失败则回退到 base URL 本身),不消耗生成配额。

三个模型可见工具

工具 作用
generate_image 同步文生图,PNG/JPEG/WebP 写入磁盘;若附件服务可用,可返回内联预览卡片。
generate_video 异步提交,立即返回 task id,成片仍在渲染。
check_video 轮询任务;成功时下载视频到磁盘。任务记录可跨重启保留。

工具签名(来自 README):

generate_image(prompt, size?, model?, profile?, save_to?)
generate_video(prompt, model?, profile?, size?, seconds?, image_url?)
check_video(task_id, profile?, save_to?)

要点:

  • generate_image 同步返回;文件在插件数据目录的 media/。模型看不到像素;若要「看」图,需对返回路径再调 read_image。
  • generate_video 返回 taskId 后,稍后调用 check_video(task_id);状态为 succeeded 时自动下载到 media/。
  • 传入不存在的 profile 会硬错误并列出可用 profile,避免静默用错 endpoint。
  • check_video 对 404、下载失败等返回 status: "failed" / "succeeded" 与 message,属于软失败,避免整轮 tool call 被 throw 打断。
  • 429 / 503 会提示稍后重试,视为可重试的服务端状态。

实现形态

README 说明:纯 ESM Host 加手写 CJS Client bundle,无构建步骤,无需 bundler。

安装与启用

环境要求:Node.js ≥ 18、已安装 DeepSeek Harness;package.json 中 engines.dsh 与若干 @deepseek-ai/* peer 依赖需与当前 Harness 预览版本区间匹配。

官方安装命令(README 原文):

dsh plugin --profile <profile> add github:yzhclcl/dsh-omni-modal

<profile> 为 DSH profile 名(如 web、desktop)。需要固定版本时在仓库名后加 #v0.1.0。

安装完成后 重启 DSH:Host 在启动时注册路由与工具,设置项才会出现在侧栏。

离线或不用 pnpm 时,README 提供手动 link: 依赖与 bundles 配置,并强调须用符号链接放入 node_modules,不要整包复制进去,否则 Symbol 跨模块不一致会导致 Cannot read properties of undefined (reading 'prepare') 且重启无法恢复。细节见 GitHub README。

典型用法

对话里直接说需求

安装并配好 Omni-modal 后,用自然语言即可触发工具,README 示例:

  • 「Draw a strawberry on a pale blue plate.」→ 调用 generate_image
  • 「Make a short video of a paper boat drifting down a stream.」→ 先 generate_video,再 check_video

设置页各区块

区块 内容
Config profiles 选择激活档、重命名、新增(从当前复制)/ 删除
Image Base URL、API key、model、request path、default size、extra request params
Video Base URL、API key、model、submit path、query path、default resolution、default duration、extra request params
Task records 已提交视频任务的状态与产物路径

配置注意(README):

  • Base URL 只写地址,例如 https://api.example.com/v1;插件会剥掉误粘贴的 POST/GET 前缀,但只写 URL 更安全。
  • Query path 可为相对路径(拼在 base URL 后),或完整 URL(当查询接口不在 base 下时)。占位符:{id} → 提交返回的任务 id;{model} → 该 profile 的模型名。
  • 未传 profile 时,工具始终使用当前激活档。

示例:Agnes AI

README 以 apihub.agnes-ai.com 演示图像与视频字段差异(视频查询走 base 外的 /agnesapi?...)。图像侧示例:Base URL https://apihub.agnes-ai.com/v1,Model agnes-image-2.5-flash,Request path /images/generations。视频侧:Submit path /videos(非 /videos/generations),Query path 为完整 URL 带 {id}、{model},Extra params 含 "mode":"text" 等。完整表格见 仓库 README。

适用场景与注意

适合谁:已在 DSH 里跑文本模型,希望统一在设置里管理多套 OpenAI 兼容生图 / 生视频 endpoint,并让 Agent 通过标准工具调用完成生成与取片,而不动 Harness 核心代码。

权限与安全:插件以当前 DSH 进程权限运行,会向配置的第三方 URL 发送 API Key 与 prompt,并将媒体写入本地 media/。安装前请阅读 源码 与 MIT 许可证,确认 endpoint 与密钥管理方式符合你的环境策略。

生态说明:DSH 社区插件目录托管在独立站点 SkillHub,与 DeepSeek / 幻方无官方从属关系;选用插件属于个人/团队自行评估。

结尾

dsh-omni-modal 把「配 endpoint + 生图 + 异步生视频 + 轮询下载」收成 DSH 内一块 Omni-modal 设置与三个工具,支持多 profile 与图像 / 视频分离配置,适合对接各类 OpenAI 兼容服务。

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

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

Xiaoye