qwen-omni-multimodal
by @zhouweico
基于阿里云百炼 Qwen3.5-Omni 的全模态 skill。支持文本、图片、音频、视频理解,以及文本/语音输出。 当用户需要分析图片、转写或理解音频、理解视频、进行跨模态问答,或直接生成语音回复时,使用此 skill。
clawhub install qwen-omni-multimodal📖 About This Skill
name: qwen-omni-multimodal version: 0.2.0 description: | 基于阿里云百炼 Qwen3.5-Omni 的全模态 skill。支持文本、图片、音频、视频理解,以及文本/语音输出。 当用户需要分析图片、转写或理解音频、理解视频、进行跨模态问答,或直接生成语音回复时,使用此 skill。 homepage: https://help.aliyun.com/zh/model-studio/qwen-omni metadata: openclaw: requires: env: - DASHSCOPE_API_KEY bins: - node primaryEnv: DASHSCOPE_API_KEY
Qwen Omni Multimodal
通过阿里云百炼 OpenAI 兼容接口调用 Qwen Omni 模型,默认使用 qwen3.5-omni-flash,自动选型时会在 qwen3.5-omni-flash 和 qwen3.5-omni-plus 之间切换;同时保留对 qwen3-omni-flash 与 qwen-omni-turbo 的显式兼容。支持文本、图片、音频、视频输入,并可返回文本或音频。
详细参数与约束见 references/api.md。
脚本支持单轮调用,也支持带本地会话历史的多轮对话。
Setup
1. 配置 API Key:
export DASHSCOPE_API_KEY="sk-xxx"
也可以在 skill 目录下创建 config.json:
可先参考 config.example.json 再复制为 config.json。
{
"apiKey": "sk-xxx",
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"selectionPolicy": "auto",
"defaultModel": "qwen3.5-omni-flash",
"modelCandidates": [
"qwen3.5-omni-flash",
"qwen3.5-omni-plus"
],
"voiceByModelFamily": {
"qwen3.5-omni": "Tina",
"qwen3-omni-flash": "Cherry",
"qwen-omni-turbo": "Serena"
},
"voice": "Tina"
}
2. 运行环境要求 Node.js >= 18
3. 可选:如果使用新加坡地域,覆盖 Base URL:
export DASHSCOPE_BASE_URL="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
配置优先级:
config.json具体覆盖规则:
CLI --model > DASHSCOPE_MODEL > selectionPolicy=auto > config.defaultModel > config.model > 内置默认DASHSCOPE_BASE_URL > config.baseUrl > 内置默认CLI --voice > DASHSCOPE_VOICE > config.voiceByModelFamily[模型家族] > config.voice > 内置默认DASHSCOPE_API_KEY > config.apiKeyselectionPolicy=fixed|autofixed:按默认模型走,不自动切换
- auto:音频/视频理解优先 qwen3.5-omni-plus,文本/图片理解与语音输出优先 qwen3.5-omni-flash
config.modelCandidates 用于维护候选模型列表;selectionPolicy=auto 时会优先在候选列表里选模型config.voiceByModelFamily 用于给不同模型家族配置不同默认音色,避免切模型后沿用不兼容音色何时使用
关键限制
stream=trueuser 消息只允许包含文本和一种模态数据modalities=["text","audio"]qwen3.5-omni-plus 和 qwen3.5-omni-flash 为非思考模型,不支持 --enable-thinking=trueqwen3-omni-flash 开启思考模式时,不支持音频输出Qwen3.5-Omni:4 到 512 张图片
- qwen3-omni-flash:2 到 128 张图片
fresh 时不会把旧话题继续注入给模型支持模型与选择建议
qwen3.5-omni-flashqwen3.5-omni-plus
- 文本/图片理解、语音输出:qwen3.5-omni-flash
qwen3-omni-flash、qwen-omni-turboconfig.json 中使用:selectionPolicy:设置 fixed 或 auto
- defaultModel:设置默认模型
- modelCandidates:维护允许 Agent 自动优先考虑的模型列表
qwen3.5-omni-plus
- qwen3.5-omni-plus-2026-03-15
- qwen3.5-omni-flash
- qwen3.5-omni-flash-2026-03-15
- qwen3-omni-flash
- qwen3-omni-flash-2025-12-01
- qwen3-omni-flash-2025-09-15
- qwen-omni-turbo
- qwen-omni-turbo-latest
- qwen-omni-turbo-2025-03-26
- qwen-omni-turbo-2025-01-19
qwen3.5-omni-flash:成本更低,适合默认文本/图片理解与语音输出
- qwen3.5-omni-plus:长音频、长视频与复杂跨模态理解更稳
- qwen-omni-turbo:保留显式兼容,不再作为默认自动选型目标
qwen3.5-omni-flashselectionPolicy=auto 时,会按任务类型在 qwen3.5-omni-flash 和 qwen3.5-omni-plus 之间自动二选一音色选择建议
--with-audio 时校验音色是否合法--list-voices --model 查看当前模型家族支持的音色config.voiceByModelFamily 中,而不是只写一个全局 voiceqwen3.5-omni 当前默认音色:Tina(甜甜 Tina)qwen3.5-omni 当前内置音色示例:Tina(甜甜 Tina)、Serena(苏瑶 Serena)、Ethan(晨煦 Ethan)、Katerina(卡捷琳娜 Katerina)、Jennifer(詹妮弗 Jennifer)
- Ryan(甜茶 Ryan)、Sunny(四川-晴儿 Sunny)、Dylan(北京-晓东 Dylan)、Rocky(粤语-阿强 Rocky)、Chloe(思怡 Chloe)
- 以及其余官方文档列出的全部 55 个音色,可通过 --list-voices 查看
qwen-omni-turbo 当前内置音色:Cherry(辛悦)
- Serena(苏瑶)
- Ethan(晨煦)
- Chelsie(千雪)
qwen3-omni-flash 当前内置音色:Cherry(辛悦)、Ethan(晨煦)、Nofish(不吃鱼)、Jennifer(詹妮弗)、Ryan(甜茶)
- Katerina(卡捷琳娜)、Elias(墨讲师)、Jada(上海-阿珍)、Dylan(北京-晓东)、Sunny(四川-晴儿)
- Li(南京-老李)、Marcus(陕西-秦川)、Roy(闽南-阿杰)、Peter(天津-李彼得)、Rocky(粤语-阿强)、Kiki(粤语-阿清)、Eric(四川-程川)
Tina
- 温柔女声可优先 Serena
- 标准男声可优先 Ethan
- 方言或角色化表达再按模型支持表显式选CLI
主要脚本:node scripts/qwen-omni-chat.js
文本
node scripts/qwen-omni-chat.js \
--selection-policy="auto" \
--prompt="用中文概括一下什么是全模态模型"
图片理解
node scripts/qwen-omni-chat.js \
--prompt="描述这张图片,并指出最重要的三个细节" \
--image="/absolute/path/image.jpg"
可重复 --image 传多张图。
音频理解
node scripts/qwen-omni-chat.js \
--prompt="转写这段音频,并给出简短摘要" \
--audio="/absolute/path/audio.mp3"
视频理解
node scripts/qwen-omni-chat.js \
--prompt="概括这个视频的主要内容" \
--video="/absolute/path/video.mp4"
图片列表形式的视频
node scripts/qwen-omni-chat.js \
--prompt="描述这个动作序列发生了什么" \
--video-frames="/abs/1.jpg,/abs/2.jpg,/abs/3.jpg,/abs/4.jpg"
文本加语音输出
node scripts/qwen-omni-chat.js \
--prompt="请用中文做一个 20 秒以内的语音自我介绍" \
--with-audio \
--voice="Tina" \
--audio-out="/tmp/qwen-omni.wav"
查看某个模型支持的音色
node scripts/qwen-omni-chat.js --list-voices --model="qwen3.5-omni-flash"
仅做预检,不实际调用
node scripts/qwen-omni-chat.js \
--prompt="描述这张图片,并指出最重要的三个细节" \
--image="/absolute/path/image.jpg" \
--dry-run
多轮对话
node scripts/qwen-omni-chat.js \
--session="demo-chat" \
--prompt="先分析这张图片" \
--image="/abs/demo.jpg"
node scripts/qwen-omni-chat.js \
--session="demo-chat" \
--prompt="把刚才的结论总结成三点" \
--mode="continue"
新话题切换
node scripts/qwen-omni-chat.js \
--session="demo-chat" \
--prompt="现在换个新问题,解释一下多模态模型训练难点" \
--mode="fresh"
会话管理
node scripts/qwen-omni-chat.js --list-sessions
node scripts/qwen-omni-chat.js --show-session --session="demo-chat"
node scripts/qwen-omni-chat.js --clear-session --session="demo-chat"
工作流
1. 先判断输入属于图片、音频、视频中的哪一种。
2. 如果用户一次给了多种非文本模态,先拆成多次调用,或让用户明确优先级。
3. 默认模型为 qwen3.5-omni-flash。只有在用户明确要求或你确认更合适时再切换模型。
- 音频或视频理解任务,优先尝试 qwen3.5-omni-plus
- 文本/图片理解或语音输出,默认优先 qwen3.5-omni-flash
- 只有在兼容旧调用或用户指定时,再显式切回 qwen3-omni-flash / qwen-omni-turbo
4. 需要语音回复时,关闭思考模式并保存脚本生成的 WAV 文件路径。
5. 需要延续当前话题时使用同一个 --session;需要切换新内容时使用 --mode=fresh 或直接新建 session。
6. 脚本会在调用前输出中国内地单价提醒;如果响应 usage 足够完整,还会输出本次费用估算。
多轮策略
--mode=auto--mode=continue--mode=fresh会话文件保存在 sessions/ 目录。
会话与覆盖规则
CLI --mode > 默认 autoCLI --session 或 --new-session--session 时,只允许单轮调用;不能使用 --mode=continue--reset-session 会在当前请求前重置活动上下文--mode=fresh 会重置当前活动话题,但保留同一个 session 文件--dry-run 不会写入或删除任何 session 文件;如果同时传了 --reset-session,只打印将要发生的变化参数约定
--prompt:用户文本提示,必填--session:会话 ID,用于多轮对话--selection-policy=fixed|auto:模型选择策略,默认读配置,未配置时为 fixed--new-session:创建新 session;不传值时自动生成 ID--mode=auto|continue|fresh:会话路由模式,默认 auto--history-window:多轮模式下保留的最近轮数,默认 6--reset-session:在当前请求前重置活动上下文--list-sessions:列出已保存会话--show-session:查看某个会话摘要--clear-session:删除某个会话--image:图片路径、HTTP(S) URL 或 Data URL,可重复--audio:音频路径、HTTP(S) URL 或 Data URL--video:视频路径、HTTP(S) URL 或 Data URL--video-frames:逗号分隔的图片列表,按视频帧顺序传入--with-audio:启用音频输出--voice:输出音色,默认 Tina--list-voices:查看当前模型家族支持的音色列表--audio-out:输出 WAV 文件路径,默认 /tmp/qwen-omni-.wav --enable-thinking=true|false:是否开启思考模式,默认 false--system:可选系统提示词--dry-run:只打印价格提醒和脱敏后的请求体,不实际调用 API,也不会落盘 session 变更推荐的 Agent 调用方式
--sessionconfig.selectionPolicy + config.defaultModel + config.modelCandidates 控制,不要反复改脚本config.voiceByModelFamily 控制;切模型家族时不要假设同一个音色参数总是可用--mode=fresh 或直接不带 session--mode=continue--with-audio,同时确保 --enable-thinking=false;不确定音色时先运行 --list-voices--dry-run,确认模型来源、模态判定、会话模式、请求体预览和价格提醒成本提醒
Qwen3.5-Omni 当前内置价格按中国内地官方阶梯价提醒:qwen3.5-omni-flash
- 输入文本/图片/视频:0.2 ~ 0.8 元/百万Token
- 输入音频:1.24 元/百万Token
- 输出文本:4.0 ~ 16.0 元/百万Token
- 输出音频:25.551 元/百万Token
- qwen3.5-omni-plus
- 输入文本/图片/视频:0.8 ~ 2.0 元/百万Token
- 输入音频:4.96 元/百万Token
- 输出文本:9.6 ~ 24.0 元/百万Token
- 输出音频:61.322 元/百万Token
usage 带了足够的 token 明细,脚本会进一步输出本次费用估算失败时优先检查
DASHSCOPE_API_KEYconfig.json 是否是合法 JSONQwen3.5-Omni 传了 --enable-thinking=trueqwen3-omni-flash 上同时传了 --with-audio 和 --enable-thinking=true--session--mode=continue⚙️ Configuration
1. 配置 API Key:
export DASHSCOPE_API_KEY="sk-xxx"
也可以在 skill 目录下创建 config.json:
可先参考 config.example.json 再复制为 config.json。
{
"apiKey": "sk-xxx",
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"selectionPolicy": "auto",
"defaultModel": "qwen3.5-omni-flash",
"modelCandidates": [
"qwen3.5-omni-flash",
"qwen3.5-omni-plus"
],
"voiceByModelFamily": {
"qwen3.5-omni": "Tina",
"qwen3-omni-flash": "Cherry",
"qwen-omni-turbo": "Serena"
},
"voice": "Tina"
}
2. 运行环境要求 Node.js >= 18
3. 可选:如果使用新加坡地域,覆盖 Base URL:
export DASHSCOPE_BASE_URL="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
配置优先级:
config.json具体覆盖规则:
CLI --model > DASHSCOPE_MODEL > selectionPolicy=auto > config.defaultModel > config.model > 内置默认DASHSCOPE_BASE_URL > config.baseUrl > 内置默认CLI --voice > DASHSCOPE_VOICE > config.voiceByModelFamily[模型家族] > config.voice > 内置默认DASHSCOPE_API_KEY > config.apiKeyselectionPolicy=fixed|autofixed:按默认模型走,不自动切换
- auto:音频/视频理解优先 qwen3.5-omni-plus,文本/图片理解与语音输出优先 qwen3.5-omni-flash
config.modelCandidates 用于维护候选模型列表;selectionPolicy=auto 时会优先在候选列表里选模型config.voiceByModelFamily 用于给不同模型家族配置不同默认音色,避免切模型后沿用不兼容音色