快速开始

推断

inferrs 可以通过兼容 OpenAI 的 /v1 API 提供本地模型。OpenClaw 通过通用的 openai-completions 路径使用 inferrs

属性
提供商 ID inferrs(自定义;在 models.providers.inferrs 下配置)
插件 无 — inferrs 不是内置的 OpenClaw 提供商插件
身份验证环境变量 可选。如果你的 inferrs 服务器没有身份验证,任意值都可以
API 兼容 OpenAI(openai-completions
建议的基础 URL http://127.0.0.1:8080/v1(或你的 inferrs 服务器所在位置)

入门指南

  • 使用模型启动 inferrs

    inferrs serve google/gemma-4-E2B-it \
      --host 127.0.0.1 \
      --port 8080 \
      --device metal
    
  • 验证服务器可访问

    curl http://127.0.0.1:8080/health
    curl http://127.0.0.1:8080/v1/models
    
  • 添加 OpenClaw 提供商条目

    添加一个显式提供商条目,并将你的默认模型指向它。请参阅下面的完整配置示例。

  • 完整配置示例

    此示例在本地 inferrs 服务器上使用 Gemma 4。

    {
      agents: {
        defaults: {
          model: { primary: "inferrs/google/gemma-4-E2B-it" },
          models: {
            "inferrs/google/gemma-4-E2B-it": {
              alias: "Gemma 4 (inferrs)",
            },
          },
        },
      },
      models: {
        mode: "merge",
        providers: {
          inferrs: {
            baseUrl: "http://127.0.0.1:8080/v1",
            apiKey: "inferrs-local",
            api: "openai-completions",
            models: [
              {
                id: "google/gemma-4-E2B-it",
                name: "Gemma 4 E2B (inferrs)",
                reasoning: false,
                input: ["text"],
                cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
                contextWindow: 131072,
                maxTokens: 4096,
                compat: {
                  requiresStringContent: true,
                },
              },
            ],
          },
        },
      },
    }
    

    高级配置

    为什么 requiresStringContent 很重要

    某些 inferrs Chat Completions 路由只接受字符串 messages[].content,不接受结构化的内容片段数组。

    compat: {
      requiresStringContent: true
    }
    

    OpenClaw 会在发送请求前,将纯文本内容片段展平为普通字符串。

    Gemma 和工具 schema 注意事项

    某些当前的 inferrs + Gemma 组合可以接受小型直接 /v1/chat/completions 请求,但仍会在完整的 OpenClaw 智能体运行时 轮次中失败。

    如果发生这种情况,请先尝试:

    compat: {
      requiresStringContent: true,
      supportsTools: false
    }
    

    这会为该模型禁用 OpenClaw 的工具 schema 接口面,并且可以降低更严格本地后端上的提示词压力。

    如果很小的直接请求仍然可用,但普通 OpenClaw 智能体轮次继续在 inferrs 内崩溃,剩余问题通常是上游模型/服务器 行为,而不是 OpenClaw 的传输层。

    手动冒烟测试

    配置完成后,测试这两层:

    curl http://127.0.0.1:8080/v1/chat/completions \
      -H 'content-type: application/json' \
      -d '{"model":"google/gemma-4-E2B-it","messages":[{"role":"user","content":"What is 2 + 2?"}],"stream":false}'
    
    openclaw infer model run \
      --model inferrs/google/gemma-4-E2B-it \
      --prompt "What is 2 + 2? Reply with one short sentence." \
      --json
    

    如果第一条命令可用但第二条失败,请查看下面的故障排除部分。

    代理风格行为

    inferrs 被视为代理风格的 OpenAI 兼容 /v1 后端,而不是 原生 OpenAI 端点。

    • 仅适用于原生 OpenAI 的请求整形不会在这里应用
    • 没有 service_tier、没有 Responses store、没有提示词缓存提示,也没有 OpenAI reasoning 兼容载荷整形
    • 隐藏的 OpenClaw 归因标头(originatorversionUser-Agent) 不会注入到自定义 inferrs 基础 URL 上

    故障排除

    curl /v1/models 失败

    inferrs 未运行、不可访问,或未绑定到预期的 主机/端口。请确保服务器已启动,并正在你配置的地址上监听。

    messages[].content 预期为字符串

    在模型条目中设置 compat.requiresStringContent: true。详见上面的 requiresStringContent 部分。

    直接 /v1/chat/completions 调用通过,但 openclaw infer model run 失败

    尝试设置 compat.supportsTools: false 来禁用工具 schema 接口面。 请参阅上面的 Gemma 工具 schema 注意事项。

    inferrs 在更大的智能体轮次中仍然崩溃

    如果 OpenClaw 不再收到 schema 错误,但 inferrs 在更大的 智能体轮次中仍然崩溃,请将其视为上游 inferrs 或模型限制。降低 提示词压力,或切换到其他本地后端或模型。

    相关内容