本地起好 ollama、模型也拉下来了,一接到 openclaw 跑 Agent 流程,常见卡点是工具调用不触发、多步任务中途断、响应慢到超时。这篇不讲协议也不讲客户端怎么填,只给工程落地顺序:先怎么确认通、再挑能干活的模型、接着把超时并发降级日志铺上,最后用几条固定用例验证不退化。
本地 ollama 起好了,模型也拉下来了,一接到 openclaw 跑 Agent,常见卡点是工具调用不触发、多步任务中途断、响应慢到超时。这篇不讲协议字段怎么填,只讲工程落地顺序:先确认通、再挑能干活的模型、接着把超时并发降级日志铺上,最后用几条固定用例验证不退化。
顺序别跳。绝大多数接入问题都不是「模型不行」,而是配置没通、能力没匹配、边界没设。按下面四节走一遍,能省掉大半来回试的时间。
第一步:先确认 openclaw 真能拿到 ollama 的响应
动手前先把变量拆开:ollama 服务端能不能回、openclaw 能不能发出去、中间有没有东西拦。两头一起改,出问题就不知道是谁的锅。建议先手动打一个最小请求,确认服务端活着,再去动 openclaw 的配置。
- 确认服务在跑看 ollama 进程和日志有没有启动报错,端口是不是在监听,这一步不通后面全白搭。
- 列模型对名字把 ollama 的模型列表拉出来,openclaw 里写的模型名必须逐字一致,多一个空格或大小写不同都会走空。
- 发一条不带工具的提问用最简单的一句话问它,能正常回话再进工具环节;这样能把配置问题和模型能力问题分开。
- 接不上就按顺序查服务在不在 → 端口通不通 → 模型存在不存在 → 请求被谁拦了。别跳步,跳步就是在猜。
| 现象 | 优先怀疑 | 先做的动作 |
|---|---|---|
| 完全没响应 | 服务或端口 | 手动请求一次服务端 |
| 报模型找不到 | 名字对不上 | 打开模型列表逐字比 |
| 有响应但很慢 | 算力或模型太大 | 换小模型试同一条提问 |
| 简单问答正常、带工具就废 | 模型能力或提示词结构 | 退回两步任务单独测 |
选模型:不是所有本地模型都适合跑 Agent
Agent 流程吃的是按格式吐出工具调用参数的能力,聊天顺的模型未必能稳定输出结构化内容。判断方法很土但有效:给它一个两步任务,查一个值、再用这个值算一步,能自己走完基本可用,走不完换模型通常比调提示词快。
- 上下文长度决定能塞多少工具描述和中间结果,任务一长最先炸的是这里,别只看参数量。
- 工具调用格式稳定性比单轮回答质量重要,多步任务里一次格式崩了就断链。
- 响应速度影响超时预算,慢模型要配更大的超时余量,或者退到异步。
- 某个模型适不适合哪类任务,到 /models 和 /embeddings 按当时的清单核对,别照抄过期推荐。
什么情况下不必纠结模型选型:只做单轮问答、不派工具、不做多步编排的场景,本地小模型够用,硬上大模型只是浪费显存。反过来,只要流程里有「用上一步结果决定下一步」,就得按 Agent 的标准挑。
超时、并发与降级:Agent 跑飞前的三道闸
本地模型首字慢是常态,超时不能只设一个总数。建议连接、读取、整体分开设,整体超时要能给到覆盖最长一步的余量,否则长任务会在最后一步被砍掉。并发也别一上来拉满,显存和算力决定真实上限,先低并发跑通再往上加,观察有没有请求排队堆积。
| 闸门 | 设什么 | 设错的后果 |
|---|---|---|
| 超时 | 连接 / 读取 / 整体分别设 | 单步被砍,任务断在中间 |
| 并发 | 按显存和算力定上限 | 排队堆积,整体变慢 |
| 重试 | 每步次数上限 | 同一工具反复调,时间耗光 |
| 步数 | Agent 最大步数 | 陷入循环停不下来 |
| 工具 | 白名单 + 参数校验 | 误调不该调的工具 |
重试到上限还是失败,就要有降级路径:换更小的模型重试一次、退化成单步问答、或者把中间结果直接交回人工。别让 Agent 在一个循环里反复调同一个工具。什么情况下不适用:任务本身允许长耗时、且每一步都幂等,可以把步数上限放宽,但重试上限仍要留着。
日志与最小评测:让「这次跑得对不对」可复盘
没有日志就没有复盘。每次运行至少记:用了哪个模型、花了多久、调了哪些工具、每步入参出参、最后停在哪一步。失败样本要能一键重放,本地环境下把输入原样存下来比事后猜有用得多。
- 固定一小批用例,改配置或换模型后重跑一遍,看通过率有没有掉。
- 日志里路径、凭据这类字段该脱敏就脱敏,本地跑也一样。
- 记录每步耗时,才能看出瓶颈是模型慢还是工具慢。
- 失败样本连同当时的配置一起存,否则重放结果对不上。
关于「通过率有没有掉」这种判断,别凭感觉说好像还行。具体到阈值怎么定、基准怎么跑,到 /tools/speed-test 按当时的说明核对,用统一口径比才靠谱。
下一步接入跑通后,真正的坑在长期稳定性:模型能力会变、中转质量会变。想按当时的清单核对可选模型和接入建议,去站内模型页看一眼再定。→常见问题
openclaw 接本地 ollama,模型回答正常但就是不调用工具,先查哪里?
先看模型本身支不支持结构化工具调用,不支持的话说再多也没用;再确认工具描述有没有被截断,上下文不够时最先丢的就是这段;最后看你在 openclaw 里注册的工具名和模型吐出来的名字对不对得上。按这个顺序查比反复改提示词快。
本地模型跑 Agent 特别慢,是配置问题还是硬件问题?
先分清是首字慢还是每步都慢。首字慢多半是模型加载和上下文太长,砍掉没用的工具描述能缓解;每步都慢就是算力不够或者并发开太高在排队,把并发降下来看有没有变快。拿不准就先在 /tools/speed-test 量一条基线,有个数再判断。
换了个本地模型之后 Agent 就跑不通了,需要重新配 openclaw 吗?
多数情况不用动 openclaw 的接入配置,改模型名再跑一遍就行。跑不通通常是新模型不擅长工具调用,或者输出格式和老模型不一样。先用最小两步任务试一下,走不通就换模型,比改一堆配置省事。