高级
高级配置¶
遗留 OpenAI 兼容模式
Warning
此模式下的工具调用不可靠。 仅当代理需要 OpenAI 格式,并且你不依赖原生工具调用时使用它。
对于位于
/v1/chat/completions 后面的代理,请显式设置 api: "openai-completions":
{
models: {
providers: {
ollama: {
baseUrl: "http://ollama-host:11434/v1",
api: "openai-completions",
injectNumCtxForOpenAICompat: true, // default: true
apiKey: "ollama-local",
models: [...]
}
}
}
}
此模式可能无法同时支持流式和工具调用;你可能需要在模型上设置 params: { streaming: false }。
在此模式下,OpenClaw 默认注入 options.num_ctx,以免 Ollama 静默回退到 4096 Token 上下文。如果你的代理拒绝未知的 options 字段,请禁用它:
上下文窗口
对于自动发现的模型,OpenClaw 使用 /api/show 报告的上下文窗口,包括来自自定义 Modelfile 的更大 PARAMETER num_ctx 值;否则它会回退到 OpenClaw 的默认 Ollama 上下文窗口。
每个模型的 contextWindow 声明原生窗口元数据,每个模型的 contextTokens 限制活动输入。提供商级别的 maxTokens 仍然是输出 Token 默认值;模型条目可以覆盖它。原生 /api/chat 请求首先从正的 params.num_ctx 设置 options.num_ctx,然后(如果存在)从有效模型的 contextTokens 设置。本地发现通常将 contextTokens 限制在 32,768(或模型更小的原生窗口),因此即使没有显式的 params.num_ctx,OpenClaw 也可以覆盖更小的 Modelfile 上下文。无效、零、负数或非有限 params.num_ctx 值会被忽略。只有当两个值都不可用时,Ollama 才会选择其自身的模型、Modelfile、OLLAMA_CONTEXT_LENGTH 或基于 VRAM 的默认值;原生适配器不会直接回退到标称的 contextWindow。升级旧配置后,运行 openclaw doctor --fix。Doctor 会保留当前 contextTokens 上限,而不会创建更强的模型或提供商 num_ctx 固定值;未设上限的遗留原生条目仍会迁移其旧的上下文预算。现有的显式 params.num_ctx 值仍然具有权威性,包括旧版 Doctor 已经写入的固定值。检查或移除过大的现有固定值,以便 contextTokens 再次驱动请求。使用 params.num_ctx 显式覆盖原生请求上下文。OpenAI 兼容适配器默认仍从 params.num_ctx 注入 options.num_ctx,然后从匹配模型条目的 contextTokens 或 contextWindow 注入;如果上游拒绝 options,请使用 injectNumCtxForOpenAICompat: false 禁用。
原生模型条目还接受 params 下的常见 Ollama 运行时选项,并作为原生 /api/chat 的 options 转发:num_keep、seed、num_predict、top_k、top_p、min_p、typical_p、repeat_last_n、temperature、repeat_penalty、presence_penalty、frequency_penalty、stop、num_batch、num_gpu、main_gpu、use_mmap 和 num_thread。运行时采样控制(temperature、topP、frequencyPenalty、presencePenalty 和 seed)会覆盖匹配的模型默认值,包括显式零值。Gateway 的 Chat Completions API 将 top_p、frequency_penalty 和 presence_penalty 映射到这些控制项。在 temperature: 0 时,OpenClaw 在应用覆盖后仍会将 top_p 规范化为 1,用于贪心采样。少数键(format、keep_alive、truncate、shift)作为顶层请求字段转发,而不是嵌套的 options。本地原生聊天请求默认使用 truncate: false 和 shift: false,因此支持的服务器会拒绝溢出输入,而不是静默丢弃历史。然后 OpenClaw 会尝试压缩并重试,或报告失败。填满窗口的生成仍可能产生带标签的部分回复。此行为已在 Ollama 0.33.3 上验证;旧版服务器可能忽略这些字段。显式的每模型值会覆盖这些默认值。托管模型和 OpenAI 兼容端点保持其现有行为。OpenClaw 仅转发这些 Ollama 请求键,因此诸如 streaming 等仅运行时参数永远不会发送到 Ollama。使用 params.think(或 params.thinking)设置顶层 think;false 会禁用 Qwen 风格思考模型的 API 级思考。
{
models: {
providers: {
ollama: {
models: [
{
id: "llama3.3",
contextWindow: 131072,
contextTokens: 32768,
maxTokens: 65536,
params: {
num_ctx: 32768,
temperature: 0.7,
top_p: 0.9,
thinking: false,
},
}
]
}
}
}
}
每个模型的 agents.defaults.models["ollama/<model>"].params.num_ctx 也有效;如果两者都设置,则显式的提供商模型条目优先。
思考控制
原生本地 Ollama 压缩摘要默认关闭思考。这可避免摘要使用其默认的三分钟请求窗口进行推理;Qwen3.5 将 low 视为启用思考,而不是降低思考预算。显式的 agents.defaults.compaction.thinkingLevel 会覆盖此偏好。现有的每模型 params.think/params.thinking 设置保持其正常优先级。托管路由保持其压缩默认值。
OpenClaw 会按 Ollama 期望的方式转发思考:顶层 think,而不是
options.think。自动发现的模型如果其 /api/show 报告了
thinking 能力,会提供 /think low、/think medium、/think high
和 /think max;非思考模型只提供 /think off。
在重放助手消息时,原生请求会将其可用的推理保留在 Ollama 单独的
`thinking` 字段中,与文本和工具调用并列。这使得工具后续操作可以复用
由会话历史策略保留的推理,而不会将其混入可见的回答文本。
```bash
openclaw agent --model ollama/gemma4 --thinking off
openclaw agent --model ollama/gemma4 --thinking low
```
或设置模型默认值:
```json5
{
agents: {
defaults: {
models: {
"ollama/gemma4": {
params: { thinking: "low" },
},
},
},
},
}
```
每个模型的 `params.think`/`params.thinking` 可以为特定模型禁用或强制
API 思考。OpenClaw 会在当前运行仅有隐式 `off` 默认值时保留该显式配置;
非 off 的运行时命令(例如 `/think medium`)仍会覆盖它。真值思考请求
永远不会发送到明确标记为 `reasoning: false` 的模型;而 `think: false`
请求无论如何都会发送。
模型成本
Ollama 在本地运行且免费,因此自动发现和手动定义的模型的所有模型成本
均为 0。
记忆嵌入
内置 Ollama 插件为 记忆搜索 注册了一个记忆
嵌入提供方。它使用已配置的 Ollama 基础 URL 和 API 密钥,调用
/api/embed,并在可能时将多个记忆块批量放入一个 input 请求。
当 proxy.enabled=true 时,发往由已配置 baseUrl 派生的精确主机本地
回环源地址的嵌入请求会使用 OpenClaw 的受保护直连路径,而不是受管正向
代理。已配置的主机名本身必须是 localhost 或回环 IP 字面量——仅解析
到回环的 DNS 名称仍会使用受管代理路径。局域网、tailnet、私有网络和公共
Ollama 主机始终保持在受管代理路径上,重定向到其他主机/端口不会继承
信任。proxy.loopbackMode: "proxy" 仍会将回环流量通过代理路由;
proxy.loopbackMode: "block" 会在连接前拒绝它——参见
受管代理。
| 属性 | 值 |
|---|---|
| 默认模型 | nomic-embed-text |
| 自动拉取 | 是,如果本地不存在 |
| 嵌入并发 | 由提供方管理;无需记忆搜索调优键 |
查询时嵌入会对要求或建议使用检索前缀的模型使用检索前缀:
nomic-embed-text、qwen3-embedding 和 mxbai-embed-large。文档批次
保持原始状态,因此现有索引无需格式迁移。
嵌入并发和批处理行为由 Ollama 记忆提供方管理。对于远程嵌入主机,请使用
受支持的 remote.baseUrl 和 remote.apiKey 字段,将身份验证范围限定
到该主机:
流式配置
Ollama 默认使用 **原生 API**(`/api/chat`),它同时支持流式传输和
工具调用——无需特殊配置。
对于原生请求,思考控制会直接转发:`/think off` 和
`openclaw agent --thinking off` 会发送顶层 `think: false`,除非配置了
显式的 `params.think`/`params.thinking`;`/think low|medium|high`
会发送对应的努力程度字符串。已验证的全努力 Ollama Cloud 系列(例如
GLM 5.2 和 DeepSeek V4)也会为 `/think max` 发送原生
`think: "max"`;其他模型和本地服务器保持兼容的 `think: "high"`
映射。
Tip
如果改用 OpenAI 兼容端点,请参见上文中的“旧版 OpenAI 兼容模式”—— 那里的流式传输和工具调用可能无法同时工作。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw