首页 / 资讯中心 / 文章详情

Strix Halo 实战指南:用 Ollama 与 OpenClaw 让本地大模型真正长出手脚

Strix Halo 实战指南:用 Ollama 与 OpenClaw 让本地大模型真正长出手脚 ★ FEATURED ARTICLE
1. Strix Halo 本地跑 Ollama 为什么总卡在“只会聊天”如果你手里有一台 Strix Halo 设备比如搭载 Ryzen AI Max 的迷你主机或笔记本大概率已经试过用 Ollama 拉几个模型跑跑对话。问它写代码、解释概念、翻译文档体验都还不错。但一旦你想让它“动手”——读取本地某个文件夹里的 Markdown、批量总结会议记录、根据代码库生成一份变更说明——它就开始装傻要么说“我无法访问你的文件系统”要么干脆编一段看起来像那么回事但完全不对的内容。这不是模型笨而是你只给了它一张嘴没给它手和脚。Ollama 本身是一个推理引擎它负责把权重加载进内存、把 token 一个一个吐出来。它不负责调度工具、不负责管理多轮任务、更不负责在上下文快满的时候自动做摘要或检索。这些活需要另一个角色来做也就是 Agent 框架。OpenClaw 就是干这个的它把 Ollama 当作一个 OpenAI 兼容的模型提供方然后在外面套一层任务规划、工具调用和上下文管理的逻辑。Strix Halo 这个平台有意思的地方在于它的统一内存架构让 CPU 和 GPU 共享一大块高带宽内存。128GB 的版本意味着你可以把参数量不小的模型几乎全量塞进去同时还能留出足够空间给上下文缓存。但很多人第一次跑的时候会发现两个典型症状一是 GPU 利用率上不去风扇不转推理速度只有个位数 token/s二是上下文稍微长一点就报错Agent 直接断片。前者通常是后端没选对后者是 Context Length 没配对。我试过在 Windows 下用 ROCm 和 Vulkan 两种后端分别跑 OllamaVulkan 在 Strix Halo 上的稳定性明显更好模型加载时不容易意外回退到 CPU。所以这篇内容会围绕 Vulkan 后端来写把 Ollama 的环境变量、OpenClaw 的配置片段、以及验证工具调用链路是否生效的命令都过一遍。目标很简单让你本地的大模型真正能读文件、能调工具、能处理长文档而不是停留在对话框里陪聊。适合谁看如果你已经能在 Strix Halo 上跑通 Ollama 的基本对话想进一步做本地自动化、代码库分析、文档批处理那这篇就是为你写的。如果你还没装 Ollama也没关系步骤会从环境变量开始照着做就行。2. 前置准备Ollama 的 Vulkan 后端与 Context Length 环境变量配置在 Strix Halo 上让 Ollama 正确调用 Radeon GPU核心不是装什么特殊驱动而是确保它走 Vulkan 后端而不是默认的 CPU 回退。Ollama 在 Windows 和 Linux 下对 AMD GPU 的支持策略不太一样但共同点是如果你不显式干预它可能在模型加载时悄悄用 CPU 跑表现就是推理慢、GPU 占用低。先确认 Ollama 版本。打开终端执行ollama --version建议用 0.5.x 以上的版本对 Vulkan 后端的支持更完整。如果版本太旧先去官网更新。更新完之后不要急着拉模型先把环境变量配好。在 Windows 下环境变量可以通过系统设置里的“环境变量”面板添加也可以用 PowerShell 临时设置。我习惯在用户变量里加这样重启终端也生效。需要加的关键变量有这几个OLLAMA_VULKAN1 OLLAMA_KEEP_ALIVE24h OLLAMA_NUM_PARALLEL2 OLLAMA_MAX_LOADED_MODELS1 OLLAMA_CONTEXT_LENGTH131072逐个解释。OLLAMA_VULKAN1是告诉 Ollama 优先使用 Vulkan 后端这是让 Radeon GPU 真正干活的关键。OLLAMA_KEEP_ALIVE24h让模型在内存里常驻避免每次请求都重新加载对 Agent 场景很重要因为 OpenClaw 会频繁调用模型。OLLAMA_NUM_PARALLEL2控制并发请求数Strix Halo 内存够大开 2 到 4 都可以但不要开太高否则上下文缓存会互相挤占。OLLAMA_MAX_LOADED_MODELS1限制同时只加载一个模型避免多个模型抢显存导致崩溃。最重要的是OLLAMA_CONTEXT_LENGTH131072。Ollama 默认的上下文窗口通常是 4096 或 8192做 Agent 任务时根本不够用。你让 Agent 读一个几十页的 PDF 或者遍历一个代码库信息还没读完就被截断了生成的结果自然缺胳膊少腿。Strix Halo 的统一内存优势就在这里128GB 的版本可以轻松撑起 128k 甚至更长的上下文。设置成 131072 就是 128k这是很多模型支持的上限也是实际测试中比较稳的值。在 Linux 下可以把这些写进~/.bashrc或~/.profileexport OLLAMA_VULKAN1 export OLLAMA_KEEP_ALIVE24h export OLLAMA_NUM_PARALLEL2 export OLLAMA_MAX_LOADED_MODELS1 export OLLAMA_CONTEXT_LENGTH131072然后source ~/.bashrc让配置生效。设置完之后重启 Ollama 服务。Windows 下可以在任务管理器里结束 ollama 进程然后重新运行ollama serve。Linux 下用systemctl restart ollama或者手动重启。接下来拉模型。推荐 Qwen2.5-Coder 或 Llama-3.1 的量化版本。量化等级的选择有个经验不要盲目上 Q6 或 Q8虽然精度高但在长时间运行的 Agent 场景下更容易崩。Q5_K_M 是智能程度和稳定性的平衡点。拉模型的命令ollama pull qwen2.5-coder:14b-instruct-q5_K_M如果你的 Strix Halo 是 128GB 版本可以上更大的参数比如 32b 的量化版。拉完之后用ollama list确认模型在本地。验证 Vulkan 后端是否生效可以跑一个简单请求同时开另一个终端看 GPU 占用。Windows 下用任务管理器的性能标签Linux 下用radeontop或nvtop如果装了。执行ollama run qwen2.5-coder:14b-instruct-q5_K_M 用一句话解释什么是递归如果 GPU 占用明显上升推理速度在 20 tokens/s 以上说明 Vulkan 后端在工作。如果 GPU 几乎不动、CPU 跑满回去检查OLLAMA_VULKAN1是否真的生效有时候需要重启终端甚至重启系统。还有一个容易忽略的点Strix Halo 的驱动版本。较新的芯片可能需要设置HSA_OVERRIDE_GFX_VERSION但这个变量主要影响 ROCm 路径Vulkan 路径一般不需要。如果你在 Linux 下用 ROCm 遇到问题可以尝试加这个变量但本篇以 Vulkan 为主先不展开。3. 可复制配置OpenClaw 接入本地 Ollama 的 JSON 片段与参数对照Ollama 跑通之后下一步是让 OpenClaw 连上它。OpenClaw 是一个开源 Agent 框架它的作用是接收你的自然语言指令拆解成步骤然后调用模型和工具去执行。它需要一个模型提供方Ollama 的 OpenAI 兼容接口正好可以用。OpenClaw 的配置文件通常在~/.openclaw/config.jsonWindows 下在C:\Users\你的用户名\.openclaw\config.json。如果文件不存在手动创建一个。下面是一个经过验证的配置片段你可以直接复制然后按自己的模型名调整{ models: { providers: { ollama-local: { baseUrl: http://127.0.0.1:11434/v1, apiKey: ollama, api: openai-compatible, models: [ { id: qwen2.5-coder:14b-instruct-q5_K_M, contextWindow: 131072, maxTokens: 8192 } ] } } }, agents: { defaults: { model: { primary: ollama-local/qwen2.5-coder:14b-instruct-q5_K_M } } } }这里有几个参数必须和 Ollama 那边对齐。baseUrl指向 Ollama 的 OpenAI 兼容端点默认端口 11434路径是/v1。apiKey随便填Ollama 不校验但 OpenClaw 要求有这个字段写ollama就行。api指定为openai-compatible这样 OpenClaw 会用 OpenAI 的请求格式去调。contextWindow必须和OLLAMA_CONTEXT_LENGTH一致都是 131072。如果这里设小了比如只写 8192Agent 在处理长文档时会直接报Context window too small任务中断。maxTokens控制单次生成的最大 token 数设成 8192 是为了让生成的报告足够详细。如果是简单问答可以调到 2048 或 4096响应更快。agents.defaults.model.primary里的格式是提供方名称/模型ID要和上面providers里的键名以及models里的id完全对应。写错了会报模型找不到。如果你用的是 Cline 或者 Claude Code 这类工具配置逻辑类似都是填 Base URL、API Key、Model ID 三件套。Base URL 填http://127.0.0.1:11434/v1API Key 填ollamaModel ID 填你拉下来的模型名。有些工具要求填完整的模型路径比如ollama-local/qwen2.5-coder:14b-instruct-q5_K_M注意区分。配置写完后重启 OpenClaw 服务。如果是命令行启动的CtrlC 停掉再重新运行。然后检查日志看它有没有成功加载配置、有没有报连接错误。正常的话会看到类似Loaded provider ollama-local和Agent default model set to ...的输出。这里有个细节OpenClaw 在启动时会尝试连接模型提供方做健康检查。如果 Ollama 没在运行或者端口不对会报local proxy failed或connection refused。所以确保 Ollama 服务先起来再启动 OpenClaw。另外如果你在 OpenClaw 里配置了多个提供方比如同时有云端 API 和本地 Ollama注意primary指向的是本地那个。Agent 默认走 primary除非你在具体任务里覆盖。4. 验证工具调用链路从读取文件到生成报告的完整命令与预期输出配置写完只是第一步真正要确认的是工具调用链路有没有生效。也就是说Agent 能不能真的读到本地文件、能不能把文件内容塞进上下文、能不能调用模型生成结果。下面用一个具体任务来验证让 Agent 读取当前目录下所有.md文件总结核心观点生成一份新的汇报文档。先准备测试环境。新建一个目录放几个 Markdown 文件进去mkdir -p ~/agent-test cd ~/agent-test echo # 项目周报\n本周完成了登录模块的重构修复了三个历史遗留 bug。 report1.md echo # 技术调研\n对比了三种向量数据库的检索性能Qdrant 在本地部署场景下表现最稳。 report2.md echo # 会议记录\n讨论了下一阶段的排期决定优先做工具调用链路的稳定性验证。 report3.md然后启动 OpenClaw给它下指令。具体命令取决于 OpenClaw 的 CLI 用法假设它支持openclaw run或者交互式对话。在交互式模式下输入读取当前目录下所有 .md 文件总结每份文件的核心观点然后生成一份汇总报告保存为 summary.md预期行为是OpenClaw 先调用文件读取工具遍历目录把三个文件的内容读进来。然后把这些内容作为上下文发给 Ollama让模型做总结。模型返回总结后OpenClaw 再调用文件写入工具把结果保存成summary.md。如果链路正常你会在终端看到类似这样的日志[agent] Planning task: read files, summarize, write report [tool] list_files: found 3 files [tool] read_file: report1.md (86 bytes) [tool] read_file: report2.md (102 bytes) [tool] read_file: report3.md (98 bytes) [model] ollama-local/qwen2.5-coder:14b-instruct-q5_K_M [model] tokens: prompt412, completion256 [tool] write_file: summary.md (512 bytes) [agent] Task completed然后cat summary.md看结果应该能看到三份文件的要点汇总。如果只看到模型在胡编或者报Context window too small说明上下文配置没对齐。如果报tool not found或permission denied说明工具权限没开。验证工具调用是否真的走了模型而不是 OpenClaw 自己拼字符串可以看日志里的[model]行。有 prompt 和 completion 的 token 计数说明确实调了 Ollama。如果这一行没有或者显示skipped那模型根本没参与。另一个验证方式是故意给一个需要多步推理的任务比如读取 report1.md找出里面提到的 bug 数量然后乘以 2把结果写进 math.md这个任务需要模型理解“三个历史遗留 bug”这句话提取数字 3做乘法再写文件。如果 Agent 能正确输出 6说明模型和工具链是打通的。如果输出的是原文复制或者乱码说明模型没理解或者上下文没传对。在 Strix Halo 上跑这个流程速度取决于模型大小和上下文长度。14B Q5_K_M 在 Vulkan 后端下128k 上下文的首次加载可能需要十几秒之后每个请求的响应在几秒到十几秒之间。如果发现特别慢先检查 GPU 占用再检查OLLAMA_NUM_PARALLEL是不是设太高导致上下文缓存频繁换出。5. 常见报错排查401、local proxy failed、Context window too small 与 OAuth 问题实际跑的时候大概率会遇到几个典型报错。下面按报错信息逐个拆。401 Unauthorized。这个通常出现在 OpenClaw 连接 Ollama 的时候。Ollama 本身不校验 API Key但 OpenClaw 的 OpenAI 兼容客户端可能会因为apiKey字段为空或者格式不对而报 401。检查config.json里的apiKey是不是写了ollama不要留空。如果用的是其他工具比如 Cline同样填一个非空字符串就行。有些工具要求 Key 以sk-开头但 Ollama 不认这个填ollama反而能过。如果还是 401检查baseUrl是不是写成了http://127.0.0.1:11434而漏了/v1。local proxy failed。这个报错说明 OpenClaw 尝试连接本地模型提供方时失败了。最常见的原因是 Ollama 服务没启动或者端口被占用。先执行ollama list确认服务在跑。如果没跑ollama serve启动。如果端口 11434 被别的程序占了改 Ollama 的监听端口同时改 OpenClaw 的baseUrl。Windows 下可以用netstat -ano | findstr 11434查占用。另一个可能是防火墙拦了本地回环请求但这种情况少见一般只在某些企业安全软件下出现。Context window too small。这个报错最典型也最容易解决。原因是 Ollama 的OLLAMA_CONTEXT_LENGTH和 OpenClaw 的contextWindow不一致。比如 Ollama 设了 131072但 OpenClaw 里只写了 8192Agent 在处理长文档时就会报这个错。两边必须完全一致。改完之后重启两个服务。如果改完还报检查模型本身支持的最大上下文。有些量化版模型在导出时限制了上下文长度比如只支持 32k那你设 128k 也没用模型加载时会截断。换一个支持长上下文的模型或者把两边都降到模型支持的上限。OAuth 相关报错。如果你在 OpenClaw 里同时配了云端提供方比如某些需要 OAuth 的服务可能会在启动时尝试刷新 token 失败然后报错。如果你只用本地 Ollama可以把云端提供方的配置删掉或者在agents.defaults.model.primary里明确指向本地模型避免它去走 OAuth 流程。如果报错信息里出现OAuth token expired或refresh failed检查是不是有残留的云端配置在干扰。模型加载崩溃或推理中断。Strix Halo 内存虽然大但如果你同时加载了多个模型或者OLLAMA_MAX_LOADED_MODELS设成了大于 1上下文缓存会互相挤占导致崩溃。设成 1只加载当前用的模型。另外量化等级太高Q6/Q8在长时间运行下更容易出问题降到 Q5_K_M 或 Q4_K_M 试试。如果还是崩检查 NVMe 剩余空间Ollama 在加载大模型时可能需要磁盘做交换缓存空间不足会直接失败。GPU 利用率低、推理慢。回去检查OLLAMA_VULKAN1是否生效。可以在 Ollama 启动日志里找vulkan字样如果没有说明后端没走 Vulkan。Windows 下有时候需要把 Ollama 的安装目录加到 PATH或者用管理员权限启动。Linux 下检查用户是否在render和video组里没有的话加进去再重启。排查的时候日志是最好的朋友。Ollama 的日志在 Windows 下通常在%LOCALAPPDATA%\Ollama\Linux 下在journalctl -u ollama或~/.ollama/logs/。OpenClaw 的日志在它的运行目录或~/.openclaw/logs/。先看报错关键词再对照上面的情况定位。6. 把本地 Agent 跑顺之后下一步可以做什么链路验证通过之后你可以把 OpenClaw 接到更多工具上。比如让它调用 shell 命令做文件批量重命名或者接一个简单的 HTTP 工具去查本地服务的状态。Strix Halo 的算力足够支撑这些轻量级自动化任务而且所有数据都在本地内存里流转不经过外部网络。如果你想让模型能力再上一个台阶可以考虑用 TaoToken 的模型对话功能来对比不同模型在工具调用场景下的表现。本地 Ollama 跑的是开源模型TaoToken 那边可以快速切换不同提供方的模型看看同样的任务在别的模型上是不是更稳。接入方式很简单把 Base URL 换成https://taotoken.net/apiAPI Key 在控制台生成模型 ID 按文档填就行。对于长期做编码和 Agent 任务的场景Coding Plan 会更划算不用每次单独算 token。本地 Agent 的价值在于可控和可重复。你调好一次配置之后每次跑任务都是同样的环境、同样的模型、同样的上下文长度不会因为云端服务的波动而受影响。Strix Halo 的统一内存让这种稳定性有了硬件基础剩下的就是慢慢把工具链打磨顺。
阅读完成 · 觉得有帮助?
咨询建站