为纯文本模型接入生图与生视频能力
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/14 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yzhclcl/dsh-omni-modal该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 21 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 14 条)
- 写入本地文件lib/index.js:64
mkdirSync(dir, { recursive: true }); - 读取本地文件lib/index.js:145
if (!existsSync(file)) return defaultConfig(); - 读取本地文件lib/index.js:147
return normalizeConfig(JSON.parse(readFileSync(file, 'utf8'))); - 写入本地文件lib/index.js:157
writeFileSync(tmp, `${JSON.stringify(config, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 }); - 写入本地文件lib/index.js:158
renameSync(tmp, file); - 读取本地文件lib/index.js:160
statSync(file); - 读取本地文件lib/index.js:171
if (!existsSync(file)) return []; - 读取本地文件lib/index.js:173
const parsed = JSON.parse(readFileSync(file, 'utf8')); - 写入本地文件lib/index.js:184
writeFileSync(file, `${JSON.stringify(trimmed, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 }); - 发起网络请求lib/index.js:226
const res = await fetch(url, { method, headers, body, signal: controller.signal }); - 发起网络请求lib/index.js:259
const res = await fetch(url, { method: 'GET', headers, signal: controller.signal }); - 写入本地文件lib/index.js:351
writeFileSync(target, bytes); - 读取本地文件lib/index.js:935
if (!target.startsWith(rootDir) || !existsSync(target)) return sendText(res, 404, 'not found'); - 发起网络请求lib/client.js:98
response = await fetch(url, init);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness 加上全模态设置区:配置 OpenAI 兼容的图像/视频生成端点,支持切换配置档,另带 generate_image / generate_video / check_video 工具。
README
由 DeepSeek 最新模型翻译生成dsh-omni-modal(全模态设置)
给没有生图 / 生视频能力的模型补上这两项能力 —— 不用改 DSH 一行源码。
dsh-omni-modal 在 DSH 的「设置」左栏新增一个 全模态设置 分区:把 harness 指向任意 OpenAI 兼容的生图 / 生视频端点,并注册三个模型可见的工具:
| 工具 | 作用 |
| generate_image | 同步文生图。图片落盘为 PNG/JPEG/WebP,附件服务可用时还会返回一张可直接预览的图片卡片。 |
| generate_video | 异步提交。立刻返回任务 id,视频还在渲染。 |
| check_video | 查询该任务;成功后自动把成品视频下载到本地。 |
状态:可用,跟随 Harness 开发者预览版演进,接口可能变化。
生图 tab
生视频 tab
特性
- 可实时编辑的设置页 —— 是真正的 DSH 设置分区(不是静态技能)。改完端点、密钥、模型、路径或默认尺寸,点「保存」即对三个工具生效,无需重启。
- 多套配置档案 —— 可并存多套端点,各自命名,随时切换生效档案。每个工具也支持可选的 profile 参数,单次调用临时改用非生效档案。
- 生图与生视频分开配置 —— 两类 API 的形状往往不同。
展开完整文档(README 剩余 1 节)
dsh-omni-modal(全模态设置)
给没有生图 / 生视频能力的模型补上这两项能力 —— 不用改 DSH 一行源码。
dsh-omni-modal 在 DSH 的「设置」左栏新增一个 全模态设置 分区:把 harness 指向任意 OpenAI 兼容的生图 / 生视频端点,并注册三个模型可见的工具:
| 工具 | 作用 |
| generate_image | 同步文生图。图片落盘为 PNG/JPEG/WebP,附件服务可用时还会返回一张可直接预览的图片卡片。 |
| generate_video | 异步提交。立刻返回任务 id,视频还在渲染。 |
| check_video | 查询该任务;成功后自动把成品视频下载到本地。 |
状态:可用,跟随 Harness 开发者预览版演进,接口可能变化。
生图 tab
生视频 tab
特性
- 可实时编辑的设置页 —— 是真正的 DSH 设置分区(不是静态技能)。改完端点、密钥、模型、路径或默认尺寸,点「保存」即对三个工具生效,无需重启。
- 多套配置档案 —— 可并存多套端点,各自命名,随时切换生效档案。每个工具也支持可选的 profile 参数,单次调用临时改用非生效档案。
- 生图与生视频分开配置 —— 两类 API 的形状往往不同。每套档案为两侧各存一份独立的 baseUrl / apiKey / model / 路径 / 尺寸。
- 额外请求参数 —— 一个自由 JSON 对象,会合并进请求体,用于传递端点特有的参数({"quality":"high"}、{"mode":"text","aspect_ratio":"16:9"} 等)。
- 连通性测试 —— 一键探测 GET <baseUrl>/models(不支持时回退探测接口地址本身),不消耗生成额度。
- 生视频天然异步 —— 提交、记任务、稍后查询。任务记录跨重启保留。
- 无构建步骤 —— 宿主半是纯 ESM,客户端半是手写 CJS bundle,不需要编译,也不需要打包器。
安装
需要 Node.js ≥ 18 与 DeepSeek Harness。
dsh plugin --profile <profile> add github:yzhclcl/dsh-omni-modal
<profile> 是你的 DSH 档案名(web、desktop 等)。加 #v0.1.0 可锁定到某个 tag。
装完 重启 DSH —— 宿主半在启动时注册路由与工具,设置分区出现在「设置 → 全模态设置」。
手工安装(无 pnpm / 离线)
把本仓库复制到一个固定位置,然后在 ~/.dsh/profiles/<profile>/package.json 中加上:
{
"dependencies": {
"dsh-omni-modal": "link:/absolute/path/to/dsh-omni-modal"
},
"dsh": {
"profile": {
"bundles": ["dsh-omni-modal"]
}
}
}
并在 pnpm-lock.yaml 的 importers. → dependencies 段补上同名条目,然后建立链接:
New-Item -ItemType SymbolicLink
-Path "$HOME\.dsh\profiles\<profile>\node_modules\dsh-omni-modal"
-Target "/absolute/path/to/dsh-omni-modal"
不要把包复制进 node_modules 代替链接。DSH 以 Symbol 作为跨模块调用密钥,模块重复加载会让 Symbol 互不相等,导致所有工具调用抛 Cannot read properties of undefined (reading 'prepare'),且重启无法恢复。
使用
装好之后直接对 agent 说话即可:
- 「画一个浅蓝盘子上的草莓」→ generate_image
- 「做一段小红纸船顺流而下的短视频」→ generate_video,随后 check_video
设置页
| 分区 | 内容 |
| 配置档案 | 选择当前生效档案、改档案名、新增(复制当前档案)/ 删除档案 |
| 生图 | 接口地址、API Key、模型名称、请求路径、默认尺寸、额外请求参数 |
| 生视频 | 接口地址、API Key、模型名称、提交路径、查询路径、默认分辨率、默认时长、额外请求参数 |
| 任务记录 | 已提交的生视频任务及其状态 / 产物路径 |
要点:
- 保存后立即对工具生效,无需重启。
- 「接口地址」只填地址本身。 照文档抄时很容易把示例里的请求方法一起抄进来(写成 POST https://api.example.com/v1);插件会自动剥掉开头的 POST/GET 等词,但只填 https://api.example.com/v1 更稳妥。
- 「查询路径」支持两种写法:相对路径(如 /videos/generations/{id})拼在接口地址之后;或 完整 URL(如 https://api.example.com/agnesapi?video_id={id}&model_name={model})原样使用。当查询接口根本不在 baseUrl 之下时,只能用后者。
- 查询路径里可用的占位符:
| 占位符 | 替换为 |
| {id} | 提交时拿到的任务 ID |
| {model} | 该档案配置的模型名 |
- 三个工具始终使用「当前生效档案」,除非显式传入 profile。
工具
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/。
- 传入不存在的档案会直接报错并列出可用档案,不会静默回退到别的档案 —— 否则模型会悄悄用错端点与模型,而返回里仍写着它要的那个档案名,完全看不出问题。
- check_video 的失败是软失败:任务查不到(404)、下载地址不可用或下载失败,都返回 status: "failed" / "succeeded" 加 message,而不是抛异常。这些是可预期的业务结果,抛异常会让整轮工具调用失败。
- 视频地址识别覆盖多种常见返回形状:video_url / videoUrl / url、嵌套 video.url、data.、output.、result.、videos[0].url 等。
- 任务 ID 的识别优先取 video_id / videoId,其次才是 id / task_id —— 有些服务(如 Agnes)返回的 id 是内部任务号,用它查询会查不到。
- 接口返回 429(限流)/ 503(繁忙、队列满) 时,错误信息里会附带「稍等一会儿再试」的提示:这两类是可重试的服务端状态,不是配置错误。
接入示例:Agnes AI
Agnes AI 的图片与视频端点形状不同,视频侧需要按官方文档配置。以 apihub.agnes-ai.com 为例:
生图
| 字段 | 值 |
| 接口地址 | https://apihub.agnes-ai.com/v1 |
| 模型名称 | agnes-image-2.5-flash |
| 请求路径 | /images/generations |
| 默认尺寸 | 如 1312x736 |
生视频
| 字段 | 值 |
| 接口地址 | https://apihub.agnes-ai.com/v1 |
| 模型名称 | agnes-video-2.5-flash |
| 提交路径 | /videos |
| 查询路径 | https://apihub.agnes-ai.com/agnesapi?video_id={id}&model_name={model} |
| 默认分辨率 | 720P(Flash 仅支持 720P,其它值返回 400) |
| 默认时长 | 5(字符串,范围 "4"–"12") |
| 额外请求参数 | {"mode":"text","aspect_ratio":"16:9"} |
- 视频提交是 POST /v1/videos(不是 /v1/videos/generations),且 mode 是必填项(text / keyframe / reference),放进「额外请求参数」。
- 查询走 GET /agnesapi?video_id=…&model_name=…,不在 /v1 之下,所以「查询路径」要写完整 URL。
- 输出宽高由 aspect_ratio 决定:21:9→1680x720、16:9→1280x704、4:3→960x720、1:1→720x720、3:4→720x960、9:16→720x1280。
- 免费额度限流较严格;短时间内反复调用会收到 429,等一会儿即可恢复。
数据位置
| 内容 | 路径 |
| 配置 | ~/.dsh-omni-modal/config.json(含 API Key,权限 0600) |
| 生成产物 | ~/.dsh-omni-modal/media/ |
| 视频任务记录 | ~/.dsh-omni-modal/tasks.json |
设置环境变量 DSH_OMNI_DATA_DIR 可整体改到别处(便于隔离测试)。
卸载
dsh plugin --profile <profile> remove dsh-omni-modal
手工安装的话,删掉依赖与 bundles 条目、pnpm-lock.yaml 里的同名条目,然后删除符号链接:
cmd /c rmdir "$HOME\.dsh\profiles\<profile>\node_modules\dsh-omni-modal"
删符号链接只能用 cmd /c rmdir 或 [IO.Directory]::Delete(path, $false);绝不要用 Remove-Item -Recurse —— 它会顺着链接删掉源目录。操作前先完全退出 DSH。
~/.dsh-omni-modal/ 为插件数据,按需自行删除。
实现说明
- lib/index.js — 宿主半(Node ESM):配置存储、/omni-modal/ 路由、三个工具的定义与注册。
- lib/client.js — 浏览器半(手写 CJS bundle,经 window.__ModuleLoader__.load 装载):注册 settings.section 座位并渲染设置页。
- cordis.patch.yml — 插件名册插入行,由 dsh.bundle.patch 承载。
宿主半不导入任何 @deepseek-ai/ 裸模块(第三方插件解析不到那些内部导出),只用 node: 与相对路径;工具的参数与输出 schema 一律写成标准 JSON Schema(required 为字符串数组),而非 defineTool 的属性表 DSL —— 后者会让 LLM API 拒绝整个函数 schema。
See README.md.
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yzhclcl/dsh-omni-modal
为纯文本模型接入生图与生视频能力
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目