Gateway

Konfigurasi — alat dan penyedia kustom

tools.* kunci konfigurasi dan penyiapan penyedia khusus / URL dasar. Untuk agen, saluran, dan kunci konfigurasi tingkat atas lainnya, lihat Referensi konfigurasi.

Alat

Profil alat

tools.profile menetapkan daftar izin dasar sebelum tools.allow/tools.deny:

Profil Mencakup
minimal hanya session_status
coding group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, video_generate
messaging group:messaging, sessions_list, sessions_history, sessions_send, session_status
full Tidak ada pembatasan (sama seperti tidak diatur)

Grup alat

Grup Alat
group:runtime exec, process, code_execution (bash diterima sebagai alias untuk exec)
group:fs read, write, edit, apply_patch
group:sessions sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status
group:memory memory_search, memory_get
group:web web_search, x_search, web_fetch
group:ui browser, canvas
group:automation heartbeat_respond, cron, gateway
group:messaging message
group:nodes nodes
group:agents agents_list, update_plan
group:media image, image_generate, music_generate, video_generate, tts
group:openclaw Semua alat bawaan (mengecualikan Plugin penyedia)

tools.allow / tools.deny

Kebijakan izinkan/tolak alat global (tolak menang). Tidak peka huruf besar/kecil, mendukung wildcard *. Diterapkan bahkan ketika sandbox Docker nonaktif.

{
  tools: { deny: ["browser", "canvas"] },
}

write dan apply_patch adalah id alat terpisah. allow: ["write"] juga mengaktifkan apply_patch untuk model yang kompatibel, tetapi deny: ["write"] tidak menolak apply_patch. Untuk memblokir semua mutasi file, tolak group:fs atau cantumkan setiap alat yang memutasi secara eksplisit:

{
  tools: { deny: ["write", "edit", "apply_patch"] },
}

tools.byProvider

Batasi alat lebih lanjut untuk penyedia atau model tertentu. Urutan: profil dasar → profil penyedia → izinkan/tolak.

{
  tools: {
    profile: "coding",
    byProvider: {
      "google-antigravity": { profile: "minimal" },
      "openai/gpt-5.4": { allow: ["group:fs", "sessions_list"] },
    },
  },
}

tools.elevated

Mengontrol akses exec yang ditingkatkan di luar sandbox:

{
  tools: {
    elevated: {
      enabled: true,
      allowFrom: {
        whatsapp: ["+15555550123"],
        discord: ["1234567890123", "987654321098765432"],
      },
    },
  },
}
  • Penimpaan per agen (agents.list[].tools.elevated) hanya dapat semakin membatasi.
  • /elevated on|off|ask|full menyimpan status per sesi; direktif inline berlaku untuk satu pesan.
  • exec yang ditingkatkan melewati sandboxing dan menggunakan jalur escape yang dikonfigurasi (gateway secara default, atau node ketika target exec adalah node).

tools.exec

{
  tools: {
    exec: {
      backgroundMs: 10000,
      timeoutSec: 1800,
      cleanupMs: 1800000,
      notifyOnExit: true,
      notifyOnExitEmptySuccess: false,
      applyPatch: {
        enabled: false,
        allowModels: ["gpt-5.5"],
      },
    },
  },
}

tools.loopDetection

Pemeriksaan keamanan loop alat dinonaktifkan secara default. Atur enabled: true untuk mengaktifkan deteksi. Pengaturan dapat didefinisikan secara global di tools.loopDetection dan ditimpa per agen di agents.list[].tools.loopDetection.

{
  tools: {
    loopDetection: {
      enabled: true,
      historySize: 30,
      warningThreshold: 10,
      criticalThreshold: 20,
      globalCircuitBreakerThreshold: 30,
      detectors: {
        genericRepeat: true,
        knownPollNoProgress: true,
        pingPong: true,
      },
    },
  },
}
historySizenumber

Riwayat panggilan alat maksimum yang disimpan untuk analisis loop.

warningThresholdnumber

Ambang pola berulang tanpa progres untuk peringatan.

criticalThresholdnumber

Ambang berulang yang lebih tinggi untuk memblokir loop kritis.

globalCircuitBreakerThresholdnumber

Ambang penghentian paksa untuk setiap eksekusi tanpa progres.

detectors.genericRepeatboolean

Peringatkan pada panggilan alat yang sama/argumen yang sama secara berulang.

detectors.knownPollNoProgressboolean

Peringatkan/blokir pada alat polling yang dikenal (process.poll, command_status, dll.).

detectors.pingPongboolean

Peringatkan/blokir pada pola pasangan tanpa progres yang bergantian.

tools.web

{
  tools: {
    web: {
      search: {
        enabled: true,
        apiKey: "brave_api_key", // or BRAVE_API_KEY env
        maxResults: 5,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
      },
      fetch: {
        enabled: true,
        provider: "firecrawl", // optional; omit for auto-detect
        maxChars: 50000,
        maxCharsCap: 50000,
        maxResponseBytes: 2000000,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
        maxRedirects: 3,
        readability: true,
        userAgent: "custom-ua",
      },
    },
  },
}

tools.media

Mengonfigurasi pemahaman media masuk (gambar/audio/video):

{
  tools: {
    media: {
      concurrency: 2,
      asyncCompletion: {
        directSend: false, // deprecated: completions stay agent-mediated
      },
      audio: {
        enabled: true,
        maxBytes: 20971520,
        scope: {
          default: "deny",
          rules: [{ action: "allow", match: { chatType: "direct" } }],
        },
        models: [
          { provider: "openai", model: "gpt-4o-mini-transcribe" },
          { type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"] },
        ],
      },
      image: {
        enabled: true,
        timeoutSeconds: 180,
        models: [{ provider: "ollama", model: "gemma4:26b", timeoutSeconds: 300 }],
      },
      video: {
        enabled: true,
        maxBytes: 52428800,
        models: [{ provider: "google", model: "gemini-3-flash-preview" }],
      },
    },
  },
}
Kolom entri model media

Entri penyedia (type: "provider" atau dihilangkan):

  • provider: id penyedia API (openai, anthropic, google/gemini, groq, dll.)
  • model: pengganti id model
  • profile / preferredProfile: pemilihan profil auth-profiles.json

Entri CLI (type: "cli"):

  • command: executable untuk dijalankan
  • args: arg bertemplat (mendukung {{MediaPath}}, {{Prompt}}, {{MaxChars}}, dll.; openclaw doctor --fix memigrasikan placeholder {input} yang tidak digunakan lagi ke {{MediaPath}})

Kolom umum:

  • capabilities: daftar opsional (image, audio, video). Default: openai/anthropic/minimax → gambar, google → gambar+audio+video, groq → audio.
  • prompt, maxChars, maxBytes, timeoutSeconds, language: pengganti per entri.
  • tools.media.image.timeoutSeconds dan entri model gambar timeoutSeconds yang cocok juga berlaku saat agen memanggil tool image eksplisit.
  • Kegagalan beralih ke entri berikutnya.

Autentikasi penyedia mengikuti urutan standar: auth-profiles.json → variabel env → models.providers.*.apiKey.

Kolom penyelesaian asinkron:

  • asyncCompletion.directSend: flag kompatibilitas yang tidak digunakan lagi. Tugas media asinkron yang selesai tetap dimediasi oleh sesi peminta sehingga agen menerima hasilnya, memutuskan cara memberi tahu pengguna, dan menggunakan tool pesan saat pengiriman sumber memerlukannya.

tools.agentToAgent

{
  tools: {
    agentToAgent: {
      enabled: false,
      allow: ["home", "work"],
    },
  },
}

tools.sessions

Mengontrol sesi mana yang dapat ditargetkan oleh tool sesi (sessions_list, sessions_history, sessions_send).

Default: tree (sesi saat ini + sesi yang dibuat olehnya, seperti subagen).

{
  tools: {
    sessions: {
      // "self" | "tree" | "agent" | "all"
      visibility: "tree",
    },
  },
}
Cakupan visibilitas
  • self: hanya kunci sesi saat ini.
  • tree: sesi saat ini + sesi yang dibuat oleh sesi saat ini (subagen).
  • agent: sesi apa pun milik id agen saat ini (dapat mencakup pengguna lain jika Anda menjalankan sesi per pengirim di bawah id agen yang sama).
  • all: sesi apa pun. Penargetan lintas agen tetap memerlukan tools.agentToAgent.
  • Batas sandbox: saat sesi saat ini berada dalam sandbox dan agents.defaults.sandbox.sessionToolsVisibility="spawned", visibilitas dipaksa menjadi tree meskipun tools.sessions.visibility="all".

tools.sessions_spawn

Mengontrol dukungan lampiran inline untuk sessions_spawn.

{
  tools: {
    sessions_spawn: {
      attachments: {
        enabled: false, // opt-in: set true to allow inline file attachments
        maxTotalBytes: 5242880, // 5 MB total across all files
        maxFiles: 50,
        maxFileBytes: 1048576, // 1 MB per file
        retainOnSessionKeep: false, // keep attachments when cleanup="keep"
      },
    },
  },
}
Catatan lampiran
  • Lampiran hanya didukung untuk runtime: "subagent". Runtime ACP menolaknya.
  • File diwujudkan ke workspace anak di .openclaw/attachments/<uuid>/ dengan .manifest.json.
  • Konten lampiran otomatis disunting dari persistensi transkrip.
  • Input Base64 divalidasi dengan pemeriksaan alfabet/padding yang ketat dan penjaga ukuran pra-dekode.
  • Izin file adalah 0700 untuk direktori dan 0600 untuk file.
  • Pembersihan mengikuti kebijakan cleanup: delete selalu menghapus lampiran; keep mempertahankannya hanya saat retainOnSessionKeep: true.

tools.experimental

Flag alat bawaan eksperimental. Default nonaktif kecuali aturan pengaktifan otomatis GPT-5 strict-agentic berlaku.

{
  tools: {
    experimental: {
      planTool: true, // enable experimental update_plan
    },
  },
}
  • planTool: mengaktifkan alat update_plan terstruktur untuk pelacakan pekerjaan multi-langkah yang tidak trivial.
  • Default: false kecuali agents.defaults.embeddedPi.executionContract (atau override per-agen) disetel ke "strict-agentic" untuk run keluarga GPT-5 OpenAI atau OpenAI Codex. Setel true untuk memaksa alat aktif di luar cakupan itu, atau false agar tetap nonaktif bahkan untuk run GPT-5 strict-agentic.
  • Saat diaktifkan, prompt sistem juga menambahkan panduan penggunaan agar model hanya menggunakannya untuk pekerjaan substansial dan menjaga paling banyak satu langkah in_progress.

agents.defaults.subagents

{
  agents: {
    defaults: {
      subagents: {
        allowAgents: ["research"],
        model: "minimax/MiniMax-M2.7",
        maxConcurrent: 8,
        runTimeoutSeconds: 900,
        archiveAfterMinutes: 60,
      },
    },
  },
}
  • model: model default untuk sub-agen yang dibuat. Jika dihilangkan, sub-agen mewarisi model pemanggil.
  • allowAgents: allowlist default id agen target untuk sessions_spawn saat agen peminta tidak menyetel subagents.allowAgents miliknya sendiri (["*"] = apa pun; default: agen yang sama saja).
  • runTimeoutSeconds: timeout default (detik) untuk sessions_spawn saat pemanggilan alat menghilangkan runTimeoutSeconds. 0 berarti tanpa timeout.
  • Kebijakan alat per-subagen: tools.subagents.tools.allow / tools.subagents.tools.deny.

Penyedia kustom dan URL dasar

OpenClaw menggunakan katalog model bawaan. Tambahkan penyedia kustom melalui models.providers dalam config atau ~/.openclaw/agents/<agentId>/agent/models.json.

{
  models: {
    mode: "merge", // merge (default) | replace
    providers: {
      "custom-proxy": {
        baseUrl: "http://localhost:4000/v1",
        apiKey: "LITELLM_KEY",
        api: "openai-completions", // openai-completions | openai-responses | anthropic-messages | google-generative-ai
        models: [
          {
            id: "llama-3.1-8b",
            name: "Llama 3.1 8B",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 128000,
            contextTokens: 96000,
            maxTokens: 32000,
          },
        ],
      },
    },
  },
}
Auth dan prioritas merge
  • Gunakan authHeader: true + headers untuk kebutuhan auth kustom.
  • Override root config agen dengan OPENCLAW_AGENT_DIR (atau PI_CODING_AGENT_DIR, alias variabel lingkungan lama).
  • Prioritas merge untuk ID penyedia yang cocok:
    • Nilai baseUrl models.json agen yang tidak kosong menang.
    • Nilai apiKey agen yang tidak kosong menang hanya saat penyedia itu tidak dikelola SecretRef dalam konteks config/auth-profile saat ini.
    • Nilai apiKey penyedia yang dikelola SecretRef disegarkan dari penanda sumber (ENV_VAR_NAME untuk ref env, secretref-managed untuk ref file/exec) alih-alih mempertahankan rahasia yang sudah di-resolve.
    • Nilai header penyedia yang dikelola SecretRef disegarkan dari penanda sumber (secretref-env:ENV_VAR_NAME untuk ref env, secretref-managed untuk ref file/exec).
    • apiKey/baseUrl agen yang kosong atau hilang fallback ke models.providers dalam config.
    • contextWindow/maxTokens model yang cocok menggunakan nilai yang lebih tinggi antara config eksplisit dan nilai katalog implisit.
    • contextTokens model yang cocok mempertahankan batas runtime eksplisit saat ada; gunakan untuk membatasi konteks efektif tanpa mengubah metadata model native.
    • Gunakan models.mode: "replace" saat Anda ingin config sepenuhnya menulis ulang models.json.
    • Persistensi penanda bersifat otoritatif sumber: penanda ditulis dari snapshot config sumber aktif (pra-resolusi), bukan dari nilai rahasia runtime yang sudah di-resolve.

Detail field penyedia

Katalog tingkat atas
  • models.mode: perilaku katalog penyedia (merge atau replace).
  • models.providers: peta penyedia kustom dengan kunci id penyedia.
    • Pengeditan aman: gunakan openclaw config set models.providers.<id> '<json>' --strict-json --merge atau openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge untuk pembaruan aditif. config set menolak penggantian destruktif kecuali Anda meneruskan --replace.
Koneksi dan auth penyedia
  • models.providers.*.api: adaptor permintaan (openai-completions, openai-responses, anthropic-messages, google-generative-ai, dll). Untuk backend /v1/chat/completions yang di-host sendiri seperti MLX, vLLM, SGLang, dan sebagian besar server lokal yang kompatibel dengan OpenAI, gunakan openai-completions. Penyedia kustom dengan baseUrl tetapi tanpa api default ke openai-completions; setel openai-responses hanya saat backend mendukung /v1/responses.
  • models.providers.*.apiKey: kredensial penyedia (utamakan substitusi SecretRef/env).
  • models.providers.*.auth: strategi auth (api-key, token, oauth, aws-sdk).
  • models.providers.*.contextWindow: jendela konteks native default untuk model di bawah penyedia ini saat entri model tidak menyetel contextWindow.
  • models.providers.*.contextTokens: batas konteks runtime efektif default untuk model di bawah penyedia ini saat entri model tidak menyetel contextTokens.
  • models.providers.*.maxTokens: batas token output default untuk model di bawah penyedia ini saat entri model tidak menyetel maxTokens.
  • models.providers.*.timeoutSeconds: timeout permintaan HTTP model opsional per-penyedia dalam detik, termasuk penanganan connect, header, body, dan penghentian total permintaan.
  • models.providers.*.injectNumCtxForOpenAICompat: untuk Ollama + openai-completions, injeksikan options.num_ctx ke dalam permintaan (default: true).
  • models.providers.*.authHeader: paksa transport kredensial di header Authorization saat diperlukan.
  • models.providers.*.baseUrl: URL dasar API upstream.
  • models.providers.*.headers: header statis ekstra untuk routing proxy/tenant.
Override transport permintaan

models.providers.*.request: override transport untuk permintaan HTTP penyedia-model.

  • request.headers: header ekstra (digabung dengan default penyedia). Nilai menerima SecretRef.
  • request.auth: override strategi auth. Mode: "provider-default" (gunakan auth bawaan penyedia), "authorization-bearer" (dengan token), "header" (dengan headerName, value, prefix opsional).
  • request.proxy: override proxy HTTP. Mode: "env-proxy" (gunakan var env HTTP_PROXY/HTTPS_PROXY), "explicit-proxy" (dengan url). Kedua mode menerima sub-objek tls opsional.
  • request.tls: override TLS untuk koneksi langsung. Field: ca, cert, key, passphrase (semuanya menerima SecretRef), serverName, insecureSkipVerify.
  • request.allowPrivateNetwork: saat true, izinkan HTTPS ke baseUrl saat DNS resolve ke rentang privat, CGNAT, atau serupa, melalui penjaga fetch HTTP penyedia (opt-in operator untuk endpoint kompatibel OpenAI tepercaya yang di-host sendiri). URL stream penyedia-model loopback seperti localhost, 127.0.0.1, dan [::1] diizinkan otomatis kecuali ini secara eksplisit disetel ke false; host LAN, tailnet, dan DNS privat tetap memerlukan opt-in. WebSocket menggunakan request yang sama untuk header/TLS tetapi tidak menggunakan gate SSRF fetch itu. Default false.
Entri katalog model
  • models.providers.*.models: entri katalog model penyedia eksplisit.
  • models.providers.*.models.*.input: modalitas input model. Gunakan ["text"] untuk model khusus teks dan ["text", "image"] untuk model image/vision native. Lampiran gambar hanya diinjeksikan ke turn agen saat model yang dipilih ditandai mampu-gambar.
  • models.providers.*.models.*.contextWindow: metadata jendela konteks native model. Ini mengoverride contextWindow tingkat penyedia untuk model tersebut.
  • models.providers.*.models.*.contextTokens: batas konteks runtime opsional. Ini mengoverride contextTokens tingkat penyedia; gunakan saat Anda menginginkan anggaran konteks efektif yang lebih kecil daripada contextWindow native model; openclaw models list menampilkan kedua nilai saat berbeda.
  • models.providers.*.models.*.compat.supportsDeveloperRole: petunjuk kompatibilitas opsional. Untuk api: "openai-completions" dengan baseUrl non-native yang tidak kosong (host bukan api.openai.com), OpenClaw memaksanya menjadi false saat runtime. baseUrl kosong/dihilangkan mempertahankan perilaku default OpenAI.
  • models.providers.*.models.*.compat.requiresStringContent: petunjuk kompatibilitas opsional untuk endpoint chat kompatibel OpenAI khusus-string. Saat true, OpenClaw meratakan array messages[].content teks murni menjadi string biasa sebelum mengirim permintaan.
Penemuan Amazon Bedrock
  • plugins.entries.amazon-bedrock.config.discovery: root pengaturan penemuan otomatis Bedrock.
  • plugins.entries.amazon-bedrock.config.discovery.enabled: aktifkan/nonaktifkan penemuan implisit.
  • plugins.entries.amazon-bedrock.config.discovery.region: region AWS untuk penemuan.
  • plugins.entries.amazon-bedrock.config.discovery.providerFilter: filter id penyedia opsional untuk penemuan tertarget.
  • plugins.entries.amazon-bedrock.config.discovery.refreshInterval: interval polling untuk penyegaran penemuan.
  • plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: jendela konteks fallback untuk model yang ditemukan.
  • plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: token output maksimum fallback untuk model yang ditemukan.

Onboarding penyedia kustom interaktif menyimpulkan input gambar untuk ID model vision umum seperti GPT-4o, Claude, Gemini, Qwen-VL, LLaVA, Pixtral, InternVL, Mllama, MiniCPM-V, dan GLM-4V, serta melewati pertanyaan ekstra untuk keluarga khusus teks yang dikenal. ID model yang tidak dikenal tetap meminta dukungan gambar. Onboarding non-interaktif menggunakan inferensi yang sama; teruskan --custom-image-input untuk memaksa metadata mampu-gambar atau --custom-text-input untuk memaksa metadata khusus teks.

Contoh penyedia

Cerebras (GLM 4.7 / GPT OSS)

Plugin penyedia cerebras bawaan dapat mengonfigurasi ini melalui openclaw onboard --auth-choice cerebras-api-key. Gunakan config penyedia eksplisit hanya saat mengoverride default.

{
  env: { CEREBRAS_API_KEY: "sk-..." },
  agents: {
    defaults: {
      model: {
        primary: "cerebras/zai-glm-4.7",
        fallbacks: ["cerebras/gpt-oss-120b"],
      },
      models: {
        "cerebras/zai-glm-4.7": { alias: "GLM 4.7 (Cerebras)" },
        "cerebras/gpt-oss-120b": { alias: "GPT OSS 120B (Cerebras)" },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      cerebras: {
        baseUrl: "https://api.cerebras.ai/v1",
        apiKey: "${CEREBRAS_API_KEY}",
        api: "openai-completions",
        models: [
          { id: "zai-glm-4.7", name: "GLM 4.7 (Cerebras)" },
          { id: "gpt-oss-120b", name: "GPT OSS 120B (Cerebras)" },
        ],
      },
    },
  },
}

Gunakan cerebras/zai-glm-4.7 untuk Cerebras; zai/glm-4.7 untuk Z.AI langsung.

Kimi Coding
{
  env: { KIMI_API_KEY: "sk-..." },
  agents: {
    defaults: {
      model: { primary: "kimi/kimi-code" },
      models: { "kimi/kimi-code": { alias: "Kimi Code" } },
    },
  },
}

Kompatibel dengan Anthropic, penyedia bawaan. Pintasan: openclaw onboard --auth-choice kimi-code-api-key.

Local models (LM Studio)

Lihat Model Lokal. Ringkasnya: jalankan model lokal besar melalui LM Studio Responses API pada perangkat keras yang mumpuni; tetap gabungkan model yang di-host untuk cadangan.

MiniMax M2.7 (direct)
{
  agents: {
    defaults: {
      model: { primary: "minimax/MiniMax-M2.7" },
      models: {
        "minimax/MiniMax-M2.7": { alias: "Minimax" },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      minimax: {
        baseUrl: "https://api.minimax.io/anthropic",
        apiKey: "${MINIMAX_API_KEY}",
        api: "anthropic-messages",
        models: [
          {
            id: "MiniMax-M2.7",
            name: "MiniMax M2.7",
            reasoning: true,
            input: ["text"],
            cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 },
            contextWindow: 204800,
            maxTokens: 131072,
          },
        ],
      },
    },
  },
}

Tetapkan MINIMAX_API_KEY. Pintasan: openclaw onboard --auth-choice minimax-global-api atau openclaw onboard --auth-choice minimax-cn-api. Katalog model secara default hanya menggunakan M2.7. Pada jalur streaming yang kompatibel dengan Anthropic, OpenClaw menonaktifkan pemikiran MiniMax secara default kecuali Anda menetapkan thinking sendiri secara eksplisit. /fast on atau params.fastMode: true menulis ulang MiniMax-M2.7 menjadi MiniMax-M2.7-highspeed.

Moonshot AI (Kimi)
{
  env: { MOONSHOT_API_KEY: "sk-..." },
  agents: {
    defaults: {
      model: { primary: "moonshot/kimi-k2.6" },
      models: { "moonshot/kimi-k2.6": { alias: "Kimi K2.6" } },
    },
  },
  models: {
    mode: "merge",
    providers: {
      moonshot: {
        baseUrl: "https://api.moonshot.ai/v1",
        apiKey: "${MOONSHOT_API_KEY}",
        api: "openai-completions",
        models: [
          {
            id: "kimi-k2.6",
            name: "Kimi K2.6",
            reasoning: false,
            input: ["text", "image"],
            cost: { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
            contextWindow: 262144,
            maxTokens: 262144,
          },
        ],
      },
    },
  },
}

Untuk endpoint Tiongkok: baseUrl: "https://api.moonshot.cn/v1" atau openclaw onboard --auth-choice moonshot-api-key-cn.

Endpoint Moonshot native mengiklankan kompatibilitas penggunaan streaming pada transport openai-completions bersama, dan OpenClaw menentukannya berdasarkan kemampuan endpoint, bukan hanya id penyedia bawaan.

OpenCode
{
  agents: {
    defaults: {
      model: { primary: "opencode/claude-opus-4-6" },
      models: { "opencode/claude-opus-4-6": { alias: "Opus" } },
    },
  },
}

Tetapkan OPENCODE_API_KEY (atau OPENCODE_ZEN_API_KEY). Gunakan referensi opencode/... untuk katalog Zen atau referensi opencode-go/... untuk katalog Go. Pintasan: openclaw onboard --auth-choice opencode-zen atau openclaw onboard --auth-choice opencode-go.

Synthetic (Anthropic-compatible)
{
  env: { SYNTHETIC_API_KEY: "sk-..." },
  agents: {
    defaults: {
      model: { primary: "synthetic/hf:MiniMaxAI/MiniMax-M2.5" },
      models: { "synthetic/hf:MiniMaxAI/MiniMax-M2.5": { alias: "MiniMax M2.5" } },
    },
  },
  models: {
    mode: "merge",
    providers: {
      synthetic: {
        baseUrl: "https://api.synthetic.new/anthropic",
        apiKey: "${SYNTHETIC_API_KEY}",
        api: "anthropic-messages",
        models: [
          {
            id: "hf:MiniMaxAI/MiniMax-M2.5",
            name: "MiniMax M2.5",
            reasoning: true,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 192000,
            maxTokens: 65536,
          },
        ],
      },
    },
  },
}

URL dasar sebaiknya menghilangkan /v1 (klien Anthropic menambahkannya). Pintasan: openclaw onboard --auth-choice synthetic-api-key.

Z.AI (GLM-4.7)
{
  agents: {
    defaults: {
      model: { primary: "zai/glm-4.7" },
      models: { "zai/glm-4.7": {} },
    },
  },
}

Tetapkan ZAI_API_KEY. z.ai/* dan z-ai/* diterima sebagai alias. Pintasan: openclaw onboard --auth-choice zai-api-key.

  • Endpoint umum: https://api.z.ai/api/paas/v4
  • Endpoint pengodean (default): https://api.z.ai/api/coding/paas/v4
  • Untuk endpoint umum, definisikan penyedia khusus dengan penggantian URL dasar.

Terkait