Local models

Chạy local hoàn toàn khả thi, nhưng OpenClaw yêu cầu context lớn + khả năng phòng thủ mạnh chống prompt injection. Card nhỏ sẽ cắt ngắn context và làm giảm tính bảo mật. Mục tiêu cao: ≥2 Mac Studios cấu hình tối đa hoặc GPU rig tương đương (~$30k+). Một GPU 24 GB chỉ hoạt động tốt với các prompt nhẹ và độ trễ cao hơn. Dùng model variant lớn nhất / full-size mà các bạn có thể chạy; các checkpoint bị quantize mạnh hoặc “small” sẽ tăng nguy cơ prompt-injection (xem Security).

Khuyên dùng: LM Studio + MiniMax M2.1 (Responses API, full-size)

Stack local tốt nhất hiện tại. Load MiniMax M2.1 trong LM Studio, bật local server (mặc định http://127.0.0.1:1234), và dùng Responses API để tách reasoning ra khỏi text cuối cùng.

{
  agents: {
    defaults: {
      model: { primary: "lmstudio/minimax-m2.1-gs32" },
      models: {
        "anthropic/claude-opus-4-5": { alias: "Opus" },
        "lmstudio/minimax-m2.1-gs32": { alias: "Minimax" },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      lmstudio: {
        baseUrl: "http://127.0.0.1:1234/v1",
        apiKey: "lmstudio",
        api: "openai-responses",
        models: [
          {
            id: "minimax-m2.1-gs32",
            name: "MiniMax M2.1 GS32",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 196608,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
}

Checklist setup

  • Cài đặt LM Studio: https://lmstudio.ai
  • Trong LM Studio, tải MiniMax M2.1 build lớn nhất có sẵn (tránh các variant “small”/bị quantize nặng), khởi động server, xác nhận http://127.0.0.1:1234/v1/models có list nó ra.
  • Giữ model luôn được load; cold-load sẽ tăng độ trễ khởi động.
  • Điều chỉnh contextWindow/maxTokens nếu LM Studio build của các bạn khác.
  • Với WhatsApp, dùng Responses API để chỉ gửi text cuối cùng.

Vẫn giữ các hosted model được config ngay cả khi chạy local; dùng models.mode: "merge" để các fallback vẫn sẵn sàng.

Config hybrid: hosted primary, local fallback

{
  agents: {
    defaults: {
      model: {
        primary: "anthropic/claude-sonnet-4-5",
        fallbacks: ["lmstudio/minimax-m2.1-gs32", "anthropic/claude-opus-4-5"],
      },
      models: {
        "anthropic/claude-sonnet-4-5": { alias: "Sonnet" },
        "lmstudio/minimax-m2.1-gs32": { alias: "MiniMax Local" },
        "anthropic/claude-opus-4-5": { alias: "Opus" },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      lmstudio: {
        baseUrl: "http://127.0.0.1:1234/v1",
        apiKey: "lmstudio",
        api: "openai-responses",
        models: [
          {
            id: "minimax-m2.1-gs32",
            name: "MiniMax M2.1 GS32",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 196608,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
}

Local-first với hosted safety net

Đổi thứ tự primary và fallback; giữ nguyên providers block và models.mode: "merge" để các bạn có thể fallback về Sonnet hoặc Opus khi local box bị down.

Regional hosting / data routing

  • Các hosted MiniMax/Kimi/GLM variant cũng có trên OpenRouter với các endpoint được pin theo khu vực (ví dụ: US-hosted). Chọn regional variant ở đó để giữ traffic trong khu vực pháp lý mà các bạn chọn, đồng thời vẫn dùng models.mode: "merge" cho các Anthropic/OpenAI fallback.
  • Local-only vẫn là con đường bảo mật mạnh nhất; hosted regional routing là giải pháp trung gian khi các bạn cần các tính năng của provider nhưng vẫn muốn kiểm soát luồng dữ liệu.

Các OpenAI-compatible local proxy khác

vLLM, LiteLLM, OAI-proxy, hoặc custom gateway đều hoạt động nếu chúng expose một OpenAI-style /v1 endpoint. Thay thế provider block ở trên bằng endpoint và model ID của các bạn:

{
  models: {
    mode: "merge",
    providers: {
      local: {
        baseUrl: "http://127.0.0.1:8000/v1",
        apiKey: "sk-local",
        api: "openai-responses",
        models: [
          {
            id: "my-local-model",
            name: "Local Model",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 120000,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
}

Giữ models.mode: "merge" để các hosted model vẫn sẵn sàng làm fallback.

Troubleshooting

  • Gateway có thể reach được proxy không? curl http://127.0.0.1:1234/v1/models.
  • LM Studio model bị unload? Reload lại; cold start là nguyên nhân phổ biến gây “treo”.
  • Lỗi context? Giảm contextWindow hoặc tăng giới hạn server của các bạn.
  • Bảo mật: local model bỏ qua các filter phía provider; giữ Agent hẹp và bật compaction để giới hạn phạm vi tấn công prompt injection.