CLI 参考
Ollaya 是一个单一二进制文件:CLI、服务器和模型运行器都在其中。如果你用过 Ollama,这些命令会似曾相识。
| 命令 | 作用 |
|---|---|
ollaya serve |
在 127.0.0.1:11435 上启动服务器 |
ollaya run MODEL [STATE] |
就某个状态回答一组问题,或打开一个提示界面;按需拉取并加载模型 |
ollaya pull MODEL |
从 registry 下载一个模型 |
ollaya list (ls) |
列出本机上的模型 |
ollaya ps |
列出已加载到内存的模型 |
ollaya show MODEL |
显示某个模型的详情、能力和许可证 |
ollaya stop MODEL |
卸载一个正在运行的模型 |
ollaya stop |
停掉由 CLI 启动的服务器 |
ollaya mcp [--http [ADDR]] |
通过 MCP 把这些模型提供给 AI agent(Agents) |
ollaya rm MODEL… |
删除一个或多个模型 |
ollaya cp SOURCE DESTINATION |
把模型复制成一个新名字 |
ollaya create NAME [-f Modelfile] |
从 Modelfile 创建一个模型 |
ollaya update [--check] |
用最新版本覆盖安装当前版本 |
ollaya -v |
打印服务器(以及客户端)的版本 |
除 serve 和 update 外,每条命令都会与 OLLAYA_HOST 上的服务器通信。当那里没有应答、且地址是本机地址时,CLI(除了不带模型的 ollaya stop)会在后台启动 ollaya serve,把日志写入 ~/.ollaya/logs/server.log(或 OLLAYA_LOG_DIR 中的 server.log)。
模型名
模型以 name:tag 引用;不给 tag 时使用 latest。名字不区分大小写。
ollaya run laya # same as laya:latest, a router
ollaya run laya:multilingual
ollaya pull laya:en-fp32
像 laya:en 这样的模型带有一份 fp16 和一份 fp32 计算图,两者共享同一个权重文件。精度在模型加载时选定:CUDA GPU 上用 fp16,CPU 上用 fp32。-fp16 和 -fp32 两个 tag 则可以固定其一。
ollaya run
ollaya run laya --preset triage "Your app crashed during checkout and I was charged twice. Please refund one of the charges."
run 连接到服务器(需要时启动它),如果模型不在本机上就拉取,然后加载它,并为每个问题打印一行:答案、一个条形和它的概率。
| 旗标 | 作用 |
|---|---|
--preset NAME |
使用一个预设:内置的(triage、email、guard、moderation、router 或 agent)或用 ollaya preset create 保存的自定义预设 |
--questions FILE|@FILE|JSON |
使用这些题目(问题 id → 问题),覆盖模型自带的:一个文件路径、@file(@- 表示 stdin),或以 { 开头的行内 JSON |
--format text|json |
text(默认)打印表格;json 打印完整的 /api/decide 响应 |
--keepalive DURATION |
之后让模型保持加载多久:5m、1h、0(立即卸载)、-1(保持加载) |
--verbose |
同时打印每个选项的概率、路由决策和各项耗时 |
--state-json |
把状态按 JSON 解析。看起来像 JSON 对象或数组的状态本来就会被识别出来 |
--image FILE |
一张要据以决策的 PNG 图片,用于视觉模型(decider:2b-vision)。它配合每一个状态,在 REPL 里也一样 |
题目的来源按先匹配者优先:--questions,然后 --preset,然后模型内置的题目(qwen3guard 自带的,或用 Modelfile 加进去的),最后是 triage 预设。当 run 回退到 triage 时,它会在 stderr 上说明。
--questions 也像 curl -d 那样,直接在命令行上接收 JSON:以 { 开头的值是行内 JSON,其他任何内容都当作文件路径。@file 永远是文件(如果文件名以 { 开头就很方便),而 @- 从 stdin 读取题目,此时状态写在命令行上:
ollaya run winnow:e4b --questions '{"topic":{"type":"choice","criteria":["billing","access","other"]}}' "..."
ollaya run winnow:e4b --questions @questions.json "..."
cat questions.json | ollaya run winnow:e4b --questions @- "..."
状态就是命令行剩下的部分。没有状态时,run 读取管道传入的 stdin:
cat ticket.txt | ollaya run laya --preset triage
在终端上不带状态时,run 会打开一个提示界面。输入一个状态并按 Enter;多行内容用 """ 包起来。命令:
| 命令 | 作用 |
|---|---|
/preset NAME |
切换到一组内置题目 |
/set questions FILE |
使用一个 JSON 文件里的题目 |
/show |
显示模型和当前题目 |
/clear |
清屏 |
/bye |
退出(或 Ctrl+D) |
/?, /help |
帮助 |
ollaya serve
启动 CLI 和你的应用所通信的服务器。它提供原生 API(/api/*)和 TypeSafe 兼容 API(/v1/*);见 API 参考。Linux 安装程序把它作为 ollaya systemd 服务运行。
ollaya serve
你很少需要它:服务器没在运行时,其他命令会在后台把它启动起来。如果 OLLAYA_HOST 上已经有服务器在运行,ollaya serve 会说明这一点并退出;要以前台方式运行服务器,先用 ollaya stop 停掉那个。
它通过环境变量配置:
| 变量 | 默认值 | 作用 |
|---|---|---|
OLLAYA_HOST |
127.0.0.1:11435 |
绑定的地址;CLI 的目标 |
OLLAYA_MODELS |
~/.ollaya/models |
模型仓库 |
OLLAYA_KEEP_ALIVE |
5m |
一个模型在最后一次请求之后保持加载多久 |
OLLAYA_MAX_LOADED_MODELS |
3 |
同时保持加载的模型数 |
OLLAYA_MAX_QUEUE |
512 |
在返回 503 QUEUE_FULL 之前允许在途的决策请求数 |
OLLAYA_LOAD_TIMEOUT |
5m |
一个模型加载可以花多久 |
OLLAYA_DEVICE |
auto |
auto(安装程序加入了 CUDA 库时用 NVIDIA GPU,否则用 CPU)、cpu、cuda 或 cuda:<n> |
OLLAYA_API_KEY |
未设置 | 要求 Authorization: Bearer <key>;CLI 也会发送它 |
OLLAYA_ORIGINS |
未设置 | 额外允许的浏览器来源,逗号分隔 |
OLLAYA_REGISTRY |
ollaya.dev |
模型名中的默认 registry 主机 |
OLLAYA_LOG |
info |
日志级别;debug 记录每个请求及其状态和耗时 |
OLLAYA_LOG_DIR |
未设置 | 把日志写入 <dir>/server.log 而不是 stderr(不存在时创建;追加写入,绝不轮转) |
对于 systemd 服务,用 sudo systemctl edit ollaya 和 Environment= 行来修改它们。
ollaya pull
下载一个模型,并用它的 sha256 校验每一层。拉取一个 router 也会拉取它路由到的每一个模型。只下载本机需要的那几层,中断的下载会续传。
ollaya pull laya
ollaya list 与 ollaya ps
list 显示本机上的模型,带上它们的 ID、大小和拉取时间。ps 显示已加载的模型、它们运行的设备(cpu、cuda:0)、精度,以及何时会被卸载。
NAME ID SIZE MODIFIED
laya:latest b87ca1631b11 11 KB 13 seconds ago
laya:multilingual ba7a334675b4 684 MB 13 seconds ago
laya:en bf30e4654e94 854 MB 30 seconds ago
ollaya show
打印模型的架构、参数、上下文长度、各种精度、语言、能力和许可证。对于 router,它打印路由。
| 旗标 | 只打印 |
|---|---|
--questions |
模型内置的题目 |
--license |
许可证 |
--modelfile |
一份能重建该模型的 Modelfile |
--parameters |
参数,例如固定的精度 |
ollaya stop
ollaya stop MODEL 会在一个正在运行的模型的在途请求结束后卸载它,而不是等 keep-alive 到期。
不带模型的 ollaya stop 会停掉 OLLAYA_HOST 上的服务器,这会卸载每一个模型。它只停掉你自己启动的服务器 —— 用 ollaya serve 或运行其他命令启动的。它绝不会停掉别的用户的服务器,比如 Linux systemd 服务;那个要用 sudo systemctl stop ollaya 停。
ollaya rm 与 ollaya cp
ollaya cp laya:en my-guardrail
ollaya rm my-guardrail
rm 还会删除没有其他模型使用的 blob。删除一个 router 会保留它路由到的那些模型。cp 会覆盖已存在的目标。
ollaya preset
预设是一组有名字的题目,你可以在任何模型上复用它:ollaya run MODEL --preset NAME,或者在 /api/decide 上用 "preset": "NAME"。内置六个。保存你自己的:
ollaya preset create billing-check --questions billing.json --description "Billing, and how upset the customer is"
ollaya run winnow:e4b --preset billing-check "I was charged twice this month."
| 命令 | 作用 |
|---|---|
ollaya preset list |
内置和自定义的预设,带上它们的题目 id |
ollaya preset show NAME |
某个预设的题目,以 JSON 形式 |
ollaya preset create NAME --questions FILE|@FILE|JSON [--description TEXT] |
保存一个自定义预设,替换同名的那个。--questions 接受与 ollaya run 中相同的形式 |
ollaya preset rm NAME... |
删除自定义预设。内置预设无法删除 |
名字由小写字母、数字、- 和 _ 组成。自定义预设由服务器保存(存放在模型旁边的 presets/ 里),所以 CLI、API 和 MCP 服务器都能看到它们。预设与用 Modelfile 的 QUESTIONS 做出来的模型不同:它不绑定到某一个模型,也不复制任何东西。
ollaya update
用最新版本覆盖安装当前版本:它把安装脚本再跑一遍,装进同一个前缀,所以模型、预设和 systemd 服务保持原样。
ollaya update --check # only say whether a newer release exists
ollaya update
随桌面应用一起装上的二进制文件(macOS 应用、Windows 安装程序、AppImage,或 .deb 和 .rpm 包)要通过安装新版应用来更新,容器则通过拉取新镜像;ollaya update 会说明这一点,而不去改动它。
ollaya create
从 Modelfile 构建一个模型,例如把一组题目、重新拟合的校准或固定的精度烤进去。-f 默认为 ./Modelfile。
ollaya create triage -f Modelfile