Jetson 上建议的联动方式是:OpenClaw -> Ollama(主模型,原生 API)+ llama.cpp(备用/低资源模型,OpenAI 兼容 API)+ Ollama embeddings(memorySearch)。 这样做的原因是,OpenClaw 官方把 Ollama + openclaw onboard 作为最低冲突的本地方案;同时它也支持把 vLLM / LiteLLM / 自定义 OpenAI-compatible 本地代理 作为额外 provider 接进来。Ollama 这边,OpenClaw 明确推荐走原生 http://host:11434,不要给它配 /v1,否则工具调用会变差;而 llama.cpp 的 llama-server 则原生提供 OpenAI-compatible chat completions / responses / embeddings 路由,适合当第二套本地后端。
另外,OpenClaw 的本地模型指南也明确提醒:它默认期待大上下文和较强的提示注入防护,小硬件上的强量化/小模型更容易丢上下文或降低安全裕量。所以在 Jetson Orin NX 16G 上,更稳的策略是把 Ollama 设为主模型,把 llama.cpp 设为 fallback 或专用模型,而不是反过来。
下面给你一份推荐版模板:
特点是 Ollama 走自动发现,你不用手工维护本地模型清单;llama.cpp 作为一个显式自定义 provider 接入;memorySearch 用 Ollama 的 /api/embeddings。OpenClaw 的文档说明,只要设置了 OLLAMA_API_KEY 且没有显式写 models.providers.ollama,它就会从本地 http://127.0.0.1:11434 自动发现模型。memorySearch.provider = "ollama" 也是官方支持的,只是不会自动选中,所以这里显式打开。
先准备环境变量:
export OLLAMA_API_KEY="ollama-local"
export OPENCLAW_GATEWAY_TOKEN="replace-with-a-long-random-token"
把下面保存为 ~/.openclaw/openclaw.json:
{
"identity": {
"name": "Jetson-Claw",
"theme": "local edge agent",
"emoji": "🦙"
},
"gateway": {
"bind": "loopback",
"port": 18789,
"auth": {
"token": "${OPENCLAW_GATEWAY_TOKEN}"
}
},
"agent": {
"workspace": "~/.openclaw/workspace"
},
"agents": {
"defaults": {
"model": {
"primary": "ollama/qwen2.5:7b-instruct",
"fallbacks": [
"llamacpp/qwen2.5-7b-instruct-gguf",
"ollama/llama3.2:3b"
]
},
"models": {
"ollama/qwen2.5:7b-instruct": { "alias": "Ollama 主模型" },
"llamacpp/qwen2.5-7b-instruct-gguf": { "alias": "llama.cpp 备用" },
"ollama/llama3.2:3b": { "alias": "Ollama 小模型" }
},
"memorySearch": {
"enabled": true,
"provider": "ollama",
"model": "YOUR_OLLAMA_EMBED_MODEL",
"fallback": "none",
"cache": {
"enabled": true,
"maxEntries": 50000
},
"sync": {
"watch": true
}
}
}
},
"models": {
"mode": "merge",
"providers": {
"llamacpp": {
"baseUrl": "http://127.0.0.1:8080/v1",
"apiKey": "llama-local",
"api": "openai-completions",
"models": [
{
"id": "qwen2.5-7b-instruct-gguf",
"name": "Qwen2.5 7B Instruct GGUF",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 4096,
"maxTokens": 1024
}
]
}
}
}
}
这个模板的关键点有三个:
第一,Ollama 不写 models.providers.ollama。因为官方文档说,一旦你显式写了 models.providers.ollama,自动发现会被关闭,你就得自己维护模型列表;不写则会自动从本地 Ollama 实例发现模型。
第二,llama.cpp 走 /v1,并用 api: "openai-completions"。OpenClaw 官方对'其他 OpenAI-compatible 本地代理'给的标准接法,就是 models.providers.<id> + baseUrl + api + models 这一套;而 llama.cpp 官方文档确认 llama-server 提供 OpenAI-compatible 路由。
第三,memorySearch 用 Ollama,不用 local。因为 OpenClaw 文档里写得很清楚:memorySearch.provider = "local" 走的是 node-llama-cpp,可能需要额外的 pnpm approve-builds / pnpm rebuild;而 memorySearch.provider = "ollama" 是官方支持的本地/self-hosted embeddings 路径,更适合先把 Jetson 跑稳。
启动顺序
先起 Ollama。Ollama 官方 API 默认就在 http://localhost:11434/api。
ollama serve
ollama list
然后起 llama.cpp:
~/src/llama.cpp/build/bin/llama-server \
-m ~/models/base/model.gguf \
--host 127.0.0.1 \
--port 8080 \
-c 4096 \
-np 1 \
-ctk q8_0 \
-ctv q8_0
再检查两个后端:
curl http://127.0.0.1:11434/api/tags
curl http://127.0.0.1:8080/v1/models
最后让 OpenClaw 读配置:
openclaw gateway restart
openclaw models list
openclaw health
openclaw gateway status
如果你想把 Ollama 也改成'显式配置'
只有在这几种情况下才建议这么做:你要连远程 Ollama、你想强制指定 contextWindow/maxTokens、或者你想完全手工管模型列表。官方文档明确说,远程 Ollama 时应使用 baseUrl: "http://host:11434",不要加 /v1,并把 api 设成 "ollama" 以保证原生工具调用行为。
对应模板是:
{
"models": {
"mode": "merge",
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434",
"apiKey": "${OLLAMA_API_KEY}",
"api": "ollama",
"models": [
{
"id": "qwen2.5:7b-instruct",
"name": "Qwen2.5 7B Instruct",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 8192,
"maxTokens": 2048
},
{
"id": "llama3.2:3b",
"name": "Llama 3.2 3B",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 8192,
"maxTokens": 2048
}
]
}
}
}
}
远程控制这台 Jetson 的模板
OpenClaw 官方建议把 Gateway 绑在 loopback,然后通过 SSH 隧道 从笔记本连进去;默认网关端口是 18789。如果你希望本地电脑上的 OpenClaw CLI 默认连这台 Jetson,可以把 gateway.mode: "remote" 和 gateway.remote.url/token 写进去。
先在你的笔记本上开隧道:
ssh -N -L 18789:127.0.0.1:18789 user@jetson-host
然后在本地电脑的 OpenClaw 配置里加:
{
"gateway": {
"mode": "remote",
"remote": {
"url": "ws://127.0.0.1:18789",
"token": "your-token"
}
}
}
这样之后本地的 openclaw health、openclaw status 之类就会默认走这个远程 Gateway。
两个最容易踩的坑
不要把 OpenClaw 连 Ollama 时写成 http://127.0.0.1:11434/v1。 官方文档明确说,这会切到 OpenAI-compatible 模式,工具调用会变得不可靠,模型可能把工具 JSON 当纯文本吐出来。
不要一开始就把 memorySearch.provider 设成 local。 这条路走的是 node-llama-cpp,本地编译和依赖更重;Jetson 上先用 ollama embeddings 更省心。
参考链接
- Local Models - OpenClaw: https://docs.openclaw.ai/gateway/local-models
- Ollama - OpenClaw: https://docs.openclaw.ai/providers/ollama
- Memory configuration reference - OpenClaw: https://docs.openclaw.ai/reference/memory-config
- Introduction - Ollama: https://docs.ollama.com/api/introduction
- Remote Access - OpenClaw: https://docs.openclaw.ai/gateway/remote

