跳到主要内容

在 您的终端 运行 130+ 个 AI 模型

一条命令和一个 API 密钥,即可从终端生成视频、图像、音乐、语音并与 LLM 对话。

@unifically/cli

支持 macOS、Linux 和 Windows。需要 Node.js 18 或更高版本。

terminal
$ uai run google/veo-3.1-fast prompt="a cat walking on the beach at sunset" duration=8 --sync⠹ google/veo-3.1-fast · processing · 0:12 · est $0.30✓ generated in 0:47  ▸ veo-3.1-fast-b4e1.mp4 (2.1MB)

这是什么

所有模型,一个界面

CLI 与 Playground 使用同一个 UnificAlly API:Flux、Veo、Kling、SeeDream、Suno、ElevenLabs、GPT、Claude 以及目录中的其余模型。媒体任务默认返回任务 id;--sync 会等待任务完成并下载结果。

每个 key=value 参数都会成为模型输入的一部分,因此同一条命令适用于整个模型目录。CLI 会自动刷新目录,并在提交前拒绝未知的 provider/model id。

模型

130+

安装

npm i -g

命令

uai · unifically

许可证

MIT

配置

安装并登录

从 npm 安装,然后连接仪表盘中的 API 密钥 。

一个 npm 包。需要 Node.js 18 或更高版本:

npm
$ npm install -g @unifically/cli

交互式

直接运行 uai 进入会话

无需 uai 前缀的命令,输入框风格类似 Claude Code。将脚本通过管道传给 uai session,每行按顺序执行。

uai · session
$ uai session › model google/veo-3.1-fast✓ session model google/veo-3.1-fast› params duration=8› run prompt="a cat on the beach at sunset" --sync⠹ processing · 0:24 · est $0.30✓ generated in 0:52  ▸ veo-3.1-fast-c81d.mp4 (2.0MB)

固定模型

用 model 选定一次模型,本次会话其余时间只需 run prompt="..."(model off 可清除)。

model google/veo-3.1-fast

会话默认值

params 会把默认值注入每次 run;显式值优先。unset 移除某一项,session 显示当前生效的设置。

params duration=8 · unset duration · session

粘贴图像

粘贴文件或截图会变成 [Image N],并在后台上传到 CDN。

[Image 1]

Shell 转义

行首加 ! 即可在您的 shell 中执行该行,无需离开会话。

!ffprobe out.mp4

补全与历史

Tab 补全命令、模型 id、参数和配置键。方向键翻阅持久历史记录。

Tab · ↑ / ↓

批处理模式

通过管道传入脚本,每行按顺序执行。出错不会中断其余行;exit 提前结束。

uai session < script.txt

输入

参数如何传给模型

每个 key=value 都会成为模型输入,因此新模型无需升级 CLI 即可使用。运算符负责类型、文件和嵌套。

输入运算符

httpie 风格。默认会自动推断类型,其他运算符用于关闭推断或深入嵌套。

key=valueseed=42

自动推断:数字、true/false 和 null 会转成真实类型。

key==valueversion==3.0

字面字符串,绝不推断。version==3.0 仍是 "3.0"。

key:=jsonurls:='["a","b"]'

严格 JSON,用于数组和对象。

key=@pathimage_url=@photo.png

先上传文件或 URL,再发送托管后的 URL。

a.0.b=valuemessages.0.role=user

点号语法可构建嵌套对象和数组。

媒体引用

本地文件自动上传,URL 直接透传。复数参数填入数组字段,单数参数填入字符串字段,请按模型文档选择。

--images / --imageimage_urls[] / image_url

复数参数填充 image_urls[];单数参数填充 image_url。

--videos / --videovideo_urls[] / video_url

复数参数填充 video_urls[];单数参数填充 video_url。

--audios / --audioaudio_urls[] / audio_url

复数参数填充 audio_urls[];单数参数填充 audio_url。

--first-image / --start-imagestart_image_url

首帧。kling-*-video 模型会自动使用 start_frame_url。

--last-image / --end-imageend_image_url

尾帧。kling-*-video 模型会自动使用 end_frame_url。

key=@fileany other file field

参数未覆盖的字段,可用 @ 传文件。

参考

全部命令

完整命令集:每个命令都有语法、参数和可直接复制到终端的真实示例。

生成

uai run

提交生成任务。加上 --sync 可一步完成轮询与下载。

语法

uai run <provider/model> [key=value ...] [flags]

参数与选项

-w, --sync--async--url--open / --web-o, --output <path>--save / --no-save--dry-run--confirm--json
uai run
$ uai run black-forest-labs/flux.2-pro prompt="a fox" aspect_ratio=1:1 --sync✓ generated in 0:06 · $0.03  ▸ flux.2-pro-a1f3.png (1.4MB)

uai run <llm>

大模型走同一个 run 命令 —— CLI 会自动路由到对话并直接流式输出到终端,没有任务 id,也无需下载。

语法

uai run <provider/model> "prompt" [key=value ...]

参数与选项

system="..."temperature=max_tokens=top_p=stop=seed=response_format:=tools:=tool_choice=--images <file>--stream / --no-stream--json
uai run
$ uai run openai/gpt-5.5 "explain quantum tunneling in one paragraph"Quantum tunneling is a particle passing through an energybarrier it classically lacks the energy to cross... # stdin becomes the prompt$ cat essay.txt | uai run anthropic/claude-fable-5 system="be terse"

uai cost

运行前估算任务成本。试算,不收费。

语法

uai cost <provider/model> [key=value ...]

参数与选项

--json
uai cost
$ uai cost google/veo-3.1-quality prompt="test" duration=8est $1.20 · dry run, nothing charged

任务与监控

uai status / uai wait

查询任务,或阻塞直到完成并下载。不带 id 时默认为最近一个任务。

语法

uai status [task_id] · uai wait [task_id]

参数与选项

status: --url, --jsonwait: --urlwait: --save / --no-savewait: -o, --output <path>wait: --poll-interval <s>wait: --timeout <s>wait: --json
uai status
$ uai statustask_9f27c1 · google/veo-3.1-fast · processing · 0:31$ uai wait task_9f27c1✓ completed in 1:12  ▸ veo-3.1-fast-9f27.mp4 (2.4MB)

uai tasks

列出您账户的任务,最新在前。可按模型、状态、类型、提供商或日期筛选。

语法

uai tasks [provider/model] [filters]

参数与选项

--status processing|completed|failed--type <csv>--provider <csv>--since <date|unix>--before <date|unix>--page <n>--page-size 10|25|50|100--search <q>--json
uai tasks
$ uai tasks --status completed --type video --page-size 25task_9f27c1 · google/veo-3.1-fast · completed · $0.30 · 2mtask_b7d2aa · kuaishou/kling-3.0-video · completed · $0.4536 · 3h

目录与检索

uai models

有 API 密钥时浏览和搜索实时目录;离线时使用本地缓存。用 refresh 可明确刷新缓存。

语法

uai models [--type ...] [--search ...] · uai models <provider/model> · uai models refresh

参数与选项

--type image|video|audio|llm--search <q>--refresh--json
uai models
$ uai models --search flux --type imageblack-forest-labs/flux.2-pro       image · from $0.03black-forest-labs/flux.2-klein-4b  image · from $0.014

uai resources

按易记名称访问语音列表和辅助端点。传入语音名称,CLI 会解析成模型需要的 id。

语法

uai resources <path ...>

参数与选项

--search <q>--all--json
uai resources
$ uai resources elevenlabs voices --search sarahSarah - Mature, Reassuring, Confident   EXAVITQu4vr4xnSDxMaL$ uai run elevenlabs/text-to-speech text="Hello" voice="Sarah"  voice "Sarah" → voice=EXAVITQu4vr4xnSDxMaL

素材

uai upload

将本地文件或 URL 上传到 CDN,并返回 file_url。

语法

uai upload <file | url> [more ...]

参数与选项

--json
uai upload
$ uai upload poster.png✓ uploaded  ▸ https://files.unifically.com/u/poster-8c1a.png

账户与设置

uai account

查看账户身份和实时余额。

语法

uai account

参数与选项

--json
uai account
$ uai accountyou@example.com · balance $14.20

uai config / uai auth

默认设置(输出目录、轮询、保存)和 API 密钥管理。

语法

uai config list|get|set|unset|path · uai auth login|status|logout

参数与选项

saveoutputDirpollIntervaltimeoutbaseUrllogologoStyle--json
uai config
$ uai config set outputDir ~/Downloads/ai✓ outputDir = ~/Downloads/ai$ uai auth status✓ key sk-...9f2 · valid

uai onboard

首次运行向导:连接 API 密钥、选择默认输出目录并加载在线模型目录。

语法

uai onboard

参数与选项

--force
uai onboard
$ uai onboard✓ API key connected✓ output directory ~/ai✓ model catalog loaded

uai exec

面向智能体和脚本的机器模式:以 JSONL 事件流运行任意 API 命令——stdout 每行一个 JSON 对象(start、submitted、progress、delta、saved、result、error),stderr 静默,退出码一致。

语法

uai exec <command ...> → JSONL events on stdout

参数与选项

--verbose
uai exec
$ uai exec run black-forest-labs/flux.2-pro prompt="a fox" --sync -o fox.png{"event":"submitted","task_id":"0c15…","model":"…"}{"event":"progress","status":"processing","elapsed_ms":3401}{"event":"saved","dest":"fox.png","bytes":342502}{"event":"result","data":{"status":"completed", …}}

uai / uai session

经典行内会话——无需 uai 前缀直接输入命令。用管道把脚本传给 uai session,每行按顺序执行;出错不会中断后续行。

语法

uai · uai session · uai --resume <session-id> · uai session < script.txt

参数与选项

--no-logo--resume <session-id>
uai session
$ uai session --no-logo <<'EOF'run black-forest-labs/flux.2-pro prompt="a fox" --syncrun google/veo-3.1-fast prompt="a fox walking" --syncEOF

uai completion

bash、zsh、fish 和 PowerShell 的补全脚本,覆盖命令、参数和已缓存的模型 id。

语法

uai completion install [shell] · uai completion bash|zsh|fish|powershell
uai completion
$ uai completion install✓ bash tab-completion installed

uai help / uai version

内置参考手册和当前安装版本。

语法

uai help | --help | -h · uai version | --version | -v
uai help
$ uai helpUsage: uai <command> [options]

粘贴媒体

把图片直接粘贴进会话

不用手动上传,也不用来回复制 URL:粘贴文件或截图,再把占位符放到需要 URL 的位置。

[Image N]

在交互式会话中粘贴图片文件或截图,它会变成 [Image N] 并在后台上传到 CDN。把占位符放到需要 URL 的位置即可。

paste
# in a session, paste an image (Explorer copy, drag-drop, or Ctrl+V):› run google/nano-banana-pro prompt="restyle this" [Image 1]✓ [Image 1] uploaded · generated in 0:09  ▸ nano-banana-pro-e2d4.png (1.1MB)

参数

CLI 参数

上方命令卡片列出了 --status 和 --search 等专用筛选项。参数与配置同时适用时,以参数为准。

-w, --sync阻塞:轮询至完成并下载。
--async显式默认行为:提交后返回任务 id。
-o, --output <path>保存到指定文件或目录。
--url仅在 stdout 打印输出 URL;隐含 --sync。
--open / --web下载结果并用默认应用打开;隐含 --sync。
--save / --no-save / --no-download强制开启或关闭下载。
--out-template <t>文件名模板:{model} {id} {index} {ext}。
--json在 stdout 输出机器可读数据。
--dry-run仅预估费用,不提交任务。
--confirm显示预估费用并在扣费前确认。
--webhook <url>任务完成后 POST 到回调 URL。
--poll-interval <s>轮询间隔秒数(默认 3)。
--timeout <s>--sync 与大模型流式输出的最长等待时间(默认 600)。
--stream / --no-stream强制开启或关闭大模型流式输出。
--api-key <key> / --base-url <url>单次调用的 API 密钥和基础 URL 覆盖。
--resume <session-id>按 id 恢复已保存的交互会话。
--no-logo跳过会话 logo。
--verbose在 uai exec 中将可读进度输出到 stderr。
-h, --help / -v, --version输出命令参考或已安装的 CLI 版本。
--no-color / -q, --quiet关闭颜色,或用 -q 静默输出。

为脚本和智能体准备的干净管道

--json 在 stdout 输出结构化数据,日志和加载动画走 stderr。stdin 不是终端时跳过交互提示,每个请求都有超时。

scripting
$ URL=$(uai run black-forest-labs/flux.2-pro prompt="a fox" --url)$ uai tasks --status processing --json | jq -r '.tasks[].task_id'task_9f27c1# agents: JSONL event stream — one JSON object per stdout line$ uai exec run google/veo-3.1-fast prompt="a fox" --sync | jq -r .eventstart → submitted → progress → saved → result

花钱之前先知道价格

uai cost 是免费试算,--confirm 会在提交前确认。真正的余额不足始终返回 HTTP 402;上游容量问题会被明确标注。

uai cost
$ uai cost google/veo-3.1-quality prompt="test" duration=8est $1.20 · dry run, nothing charged$ uai run google/veo-3.1-quality prompt="test" duration=8 --confirmest $1.20 · continue? [Y/n]

设计

工作原理

一条命令一个任务

run 会立即提交并打印任务 id,适合脚本和智能体。加上 --sync 可一步完成轮询与下载。等待超时后可用 uai wait <task_id> 继续。

文件自动变成 URL

在会话中粘贴图片,它会变成 [Image N] 并在后台上传到 CDN。凡是需要 URL 的地方,本地文件路径都会自动上传;URL 则原样透传。

先看价格再花钱

uai cost 可对任何任务试算,--confirm 显示估价并在提交前询问,uai account 显示实时余额。真正的余额不足始终是 HTTP 402;提供商容量错误会被明确指出,让您知道该充值还是重试。

为脚本和智能体而建

--json 将结构化数据输出到 stdout,日志和进度条走 stderr,管道保持干净。绝不挂起:每个请求都有超时,stdin 不是终端时会跳过交互提示。

嵌套参数

除了扁平的 key=value,点号语法还能构建嵌套对象和数组:多轮对话用 messages.0.role=user messages.0.content="...",嵌套选项用 settings.instrumental=true,数组用 inputs.images.0=@photo.jpg。

CLI 免费

只为生成付费,价格与 API 的按任务计价一致,计入您的密钥。先用 uai cost 试算任意任务,或查看定价页面。

常见问题

UnificAlly CLI 常见问题解答

一个命令行工具(npm 包 @unifically/cli,MIT 许可),通过 UnificAlly API 运行 130+ 个图像、视频、音频和 LLM 模型。它提交任务、轮询至完成并下载结果,只需一个 API 密钥。

npm install -g @unifically/cli,需要 Node.js 18 或更高版本。会安装两个完全相同的命令:uai 和 unifically。运行一次 uai onboard 即可连接密钥并加载模型目录。

CLI 免费。您只为生成付费,价格与 UnificAlly API 的按任务计价相同。uai cost 可在消费前估算任意任务,--confirm 会在提交前询问。

可以。--json 将结构化输出放在 stdout、日志放在 stderr,--url 只打印结果 URL,stdin 不是终端时会跳过交互提示,且每个请求都有超时。

使用 --images、--videos 或 --first-image 等参数。本地文件会自动上传到 CDN,URL 原样透传,在会话中粘贴图片则会变成 [Image N]。

支持。大模型走同一个 run 命令:uai run openai/gpt-5.5 "你的提示词" 会直接流式输出到终端。用 system="..." 设置系统提示词,用 --no-stream 输出为整段文本,也可以把 stdin 作为提示词管道传入。