文档导航

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