
OpenClaw 接入 ds4用本地 Metal 后端的 DeepSeek V4 Flash 驱动完整 Agent 工具调用【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw本文讲解如何把 OpenClaw 接到 ds4antirez 的 DeepSeek V4 Flash 本地推理服务上ds4 以 OpenAI 兼容的/v1API 从本地 Metal 后端提供模型推理OpenClaw 则通过通用的openai-completionsprovider 家族与之对接。读完本篇你可以独立完成 ds4-server 的启动与验证、编写 OpenClaw 的 provider 配置含按需启动localService、理解 DeepSeek 风格thinking/reasoning_effort参数的底层契约并用一键命令完成模型路由与 Agent 工具调用的冒烟测试。1. ds4 在 OpenClaw 中的定位纯配置 provider非内置插件ds4 不是一个随 OpenClaw 分发的 provider 插件它只是一个实现了 OpenAI 兼容 Chat Completions 协议的外部服务。OpenClaw 通过models.providers.ds4这个配置项接入它之后即可选择ds4/deepseek-v4-flash作为模型引用model ref。核心属性如下属性值Provider idds4插件无纯配置接入APIOpenAI 兼容 Chat Completionsopenai-completionsBase URLhttp://127.0.0.1:18000/v1推荐Model iddeepseek-v4-flashTool callsOpenAI 风格tools/tool_callsReasoningDeepSeek 风格thinking与reasoning_effort从源码结构看OpenClaw 对所有 OpenAI 兼容后端走同一条传输链路api: openai-completions决定了请求以标准 Chat Completions 格式发出而模型级别的compat元数据则负责处理各家后端的协议差异。例如 extra-params.ts 中对deepseek-v4-flash模型 id 有专门判断并对thinkingFormat为deepseek或未设置的后端发出 DeepSeek 原生的thinking: { type }线格式请求——这正是 ds4 配置中compat.thinkingFormat: deepseek的落点。而 model.compat.ts 中的readCompatThinkingFormat负责从 provider 配置里解析compat.thinkingFormat字段供请求构造阶段使用。2. 环境要求与上下文大小警告运行前提支持 Metal 的 macOS 机器一个可用的 ds4 检出目录下称DS4_DIR包含ds4-server可执行文件和 DeepSeek V4 Flash 的 GGUF 模型文件足够的内存容纳你选择的上下文长度——更大的--ctx会在服务启动时分配更多 KV 内存。关键警告OpenClaw 的 agent 回合包含工具 schema 和工作区上下文token 消耗远超一条 curl 消息。--ctx 4096这种极小上下文可能通过直接 curl 测试但完整 agent 运行会报500 prompt exceeds context。做 agent 与工具冒烟测试时至少使用--ctx 32768只有内存充足、且想启用 ds4 Think Max 时才考虑--ctx 393216。3. 快速上手三步走第 1 步启动 ds4-server。将DS4_DIR替换为你的 ds4 检出路径DS4_DIR/ds4-server \ --model DS4_DIR/ds4flash.gguf \ --host 127.0.0.1 \ --port 18000 \ --ctx 32768 \ --tokens 128第 2 步验证 OpenAI 兼容端点curl http://127.0.0.1:18000/v1/models响应中应包含deepseek-v4-flash。第 3 步写入 OpenClaw provider 配置并跑一次性模型检查。添加下面第 4 节的完整配置后执行openclaw infer model run \ --local \ --model ds4/deepseek-v4-flash \ --thinking off \ --prompt Reply with exactly: openclaw-ds4-ok \ --json4. 完整 provider 配置与字段解读以下配置假设 ds4 已在127.0.0.1:18000上运行{ agents: { defaults: { model: { primary: ds4/deepseek-v4-flash }, models: { ds4/deepseek-v4-flash: { alias: DS4 local, }, }, }, }, models: { mode: merge, providers: { ds4: { baseUrl: http://127.0.0.1:18000/v1, apiKey: ds4-local, api: openai-completions, timeoutSeconds: 300, models: [ { id: deepseek-v4-flash, name: DeepSeek V4 Flash (ds4), reasoning: true, input: [text], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 32768, maxTokens: 128, compat: { supportsUsageInStreaming: true, supportsReasoningEffort: true, maxTokensField: max_tokens, supportsStrictMode: false, thinkingFormat: deepseek, supportedReasoningEfforts: [low, medium, high, xhigh], }, }, ], }, }, }, }逐字段说明mode: merge让自定义 provider 与内置模型目录合并而不是整体替换apiKey: ds4-localds4 本地服务无鉴权此值仅作占位满足 provider 契约timeoutSeconds: 300provider 级请求超时避免长生成撞默认超时contextWindow必须与 ds4-server 的--ctx保持一致否则 OpenClaw 会在错误的窗口假设下切分和压缩上下文maxTokens应与--tokens对齐除非你有意让 OpenClaw 向服务端请求比服务端默认更少的输出compat.supportsUsageInStreaming: true允许 OpenClaw 在流式响应中读取 usage 统计compat.maxTokensField: max_tokens声明该后端用max_tokens字段而非其他变体控制最大输出长度compat.supportsStrictMode: false不支持 OpenAI 严格工具模式OpenClaw 会相应放宽工具 schema 约束compat.thinkingFormat: deepseek告知请求构造层使用 DeepSeek 原生thinking线格式见第 1 节的源码说明compat.supportedReasoningEfforts声明后端接受的推理强度档位--thinking或reasoning_effort的取值受此约束。5. 按需启动localService 让 ds4 随模型选择而拉起OpenClaw 支持只在某个ds4/...模型被选中时才启动 ds4。给同一个 provider 条目加上localService即可{ models: { providers: { ds4: { baseUrl: http://127.0.0.1:18000/v1, apiKey: ds4-local, api: openai-completions, timeoutSeconds: 300, localService: { command: DS4_DIR/ds4-server, args: [ --model, DS4_DIR/ds4flash.gguf, --host, 127.0.0.1, --port, 18000, --ctx, 32768, --tokens, 128, ], cwd: DS4_DIR, healthUrl: http://127.0.0.1:18000/v1/models, readyTimeoutMs: 300000, idleStopMs: 0, }, models: [ { id: deepseek-v4-flash, name: DeepSeek V4 Flash (ds4), reasoning: true, input: [text], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 32768, maxTokens: 128, compat: { supportsUsageInStreaming: true, supportsReasoningEffort: true, maxTokensField: max_tokens, supportsStrictMode: false, thinkingFormat: deepseek, supportedReasoningEfforts: [low, medium, high, xhigh], }, }, ], }, }, }, }localService各字段的完整语义在 Local model services 中有权威定义要点包括command必须是绝对可执行路径不会走 Shell PATH 查找也不做~展开args是纯进程参数不做 Shell 展开、管道、glob 或引号解析healthUrl缺省时默认取baseUrl加/models显式写出更稳妥readyTimeoutMs缺省为 120000ds4 冷启动较慢Metal 驻留 模型预热文档建议给到 300000idleStopMs为 0 或省略时由 OpenClaw 拉起的进程会一直存活直到 OpenClaw 退出。工作机制同样见 Local model services模型或嵌入请求解析到该 provider 后OpenClaw 先探测healthUrl健康则复用已运行服务不健康则用commandargs拉起子进程并轮询健康端点直到readyTimeoutMs到期随后请求走正常模型传输。该服务只是最早需要它的 OpenClaw 进程的普通子进程OpenClaw 不会替你安装 launchd、systemd 或 Docker 守护。同一 provider 的启动按 command/args/env 组合串行化并发请求不会重复拉起服务。6. Think Max大上下文 最高推理档的联动开关ds4 只在两个条件同时成立时启用 Think Maxds4-server以--ctx 393216或更高启动请求携带reasoning_effort: max或等价的 ds4 effort 字段。小上下文下会回退到 high 级推理。如果你要跑这么长的上下文需要同步更新服务端参数和 OpenClaw 的模型元数据{ contextWindow: 393216, maxTokens: 384000, compat: { supportsUsageInStreaming: true, supportsReasoningEffort: true, maxTokensField: max_tokens, supportsStrictMode: false, thinkingFormat: deepseek, supportedReasoningEfforts: [low, medium, high, xhigh, max], }, }注意supportedReasoningEfforts在这里比标准配置多了max档位——只有同时声明它OpenClaw 才允许向 ds4 发出reasoning_effort: max请求Think Max 才有可能被触发。7. 验证与冒烟测试三层递进第一层绕过 OpenClaw 的直接 HTTP 检查确认服务端本身可用curl http://127.0.0.1:18000/v1/chat/completions \ -H content-type: application/json \ -d {model:deepseek-v4-flash,messages:[{role:user,content:Reply with exactly: ds4-ok}],max_tokens:16,stream:false,thinking:{type:disabled}}第二层OpenClaw 模型路由检查与快速上手相同openclaw infer model run \ --local \ --model ds4/deepseek-v4-flash \ --thinking off \ --prompt Reply with exactly: openclaw-ds4-ok \ --json第三层完整 agent 工具调用冒烟测试上下文至少 32768openclaw agent \ --local \ --session-id ds4-tool-smoke \ --model ds4/deepseek-v4-flash \ --thinking off \ --message Use the shell command pwd once, then reply exactly: tool-ok output \ --json \ --timeout 240预期结果可用于自动化断言executionTrace.winnerProvider为ds4executionTrace.winnerModel为deepseek-v4-flashtoolSummary.calls至少为1证明 OpenAI 风格tools/tool_calls链路打通finalAssistantVisibleText以tool-ok开头。8. 故障排查curl /v1/models连不上ds4 没在运行或没有绑定到baseUrl中声明的主机/端口。先启动ds4-server再重试curl http://127.0.0.1:18000/v1/models500 prompt exceeds context配置的--ctx对 OpenClaw 的回合来说太小。调大ds4-server --ctx同时把models.providers.ds4.models[].contextWindow改成一致的值。带工具的完整 agent 回合所需上下文远大于一条 curl 单消息。Think Max 不生效ds4 只在--ctx至少为393216且请求要求reasoning_effort: max时才走 Think Max小上下文会回退到 high 推理。另外检查模型元数据的supportedReasoningEfforts是否包含max。首个请求很慢ds4 有冷 Metal 驻留与模型预热阶段。由 OpenClaw 按需拉起服务时把localService.readyTimeoutMs设为 300000避免就绪轮询在预热完成前超时报错。9. 延伸阅读Local model serviceslocalService全部字段的完整语义与冷启动/就绪/空闲停机控制Local models本地模型后端的选择与操作指引Model providersprovider 引用、鉴权与故障转移的通用机制DeepSeekDeepSeek 官方 provider 的原生行为与 thinking 控制可与 ds4 的 DeepSeek 线格式对照阅读。【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考