CLI arka uçları (geri dönüş çalışma zamanı)
OpenClaw, API sağlayıcıları devre dışı kaldığında, oran sınırına takıldığında veya geçici olarak hatalı davrandığında metin tabanlı bir geri dönüş olarak yerel AI CLI’lerini çalıştırabilir. Bu yaklaşım kasıtlı olarak muhafazakardır:- OpenClaw araçları doğrudan enjekte edilmez, ancak
bundleMcp: trueolan arka uçlar (varsayılan Claude CLI davranışı) gateway araçlarını bir loopback MCP köprüsü aracılığıyla alabilir. - JSONL akışı (Claude CLI,
--output-format stream-jsonkomutunu--include-partial-messagesile kullanır; istemler stdin üzerinden gönderilir). - Oturumlar desteklenir (böylece takip eden turlar tutarlı kalır).
- CLI görüntü yollarını kabul ediyorsa görüntüler iletilebilir.
Yeni başlayanlar için hızlı başlangıç
Claude CLI’yi hiçbir config olmadan kullanabilirsiniz (paketlenmiş Anthropic eklentisi varsayılan bir arka uç kaydeder):agents.defaults.cliBackends altında bu arka uca açıkça başvurduğunda sahip olan paketlenmiş eklentiyi otomatik yükler.
Bunu geri dönüş olarak kullanma
Bir CLI arka ucunu geri dönüş listenize ekleyin; böylece yalnızca birincil modeller başarısız olduğunda çalışır:agents.defaults.models(izin listesi) kullanıyorsanızclaude-cli/...değerini de eklemelisiniz.- Birincil sağlayıcı başarısız olursa (auth, oran sınırları, zaman aşımı), OpenClaw sıradaki olarak CLI arka ucunu dener.
- Paketlenmiş Claude CLI arka ucu hâlâ
claude-cli/opus,claude-cli/opus-4.6veyaclaude-cli/sonnetgibi daha kısa takma adları kabul eder, ancak belgeler ve config örnekleri kanonikclaude-cli/claude-*referanslarını kullanır.
Config genel bakışı
Tüm CLI arka uçları şu yolun altında bulunur:claude-cli, my-cli).
Sağlayıcı kimliği model referansınızın sol tarafı olur:
Örnek config
Nasıl çalışır
- Sağlayıcı önekine göre bir arka uç seçer (
claude-cli/...). - Aynı OpenClaw istemi + çalışma alanı bağlamını kullanarak bir sistem istemi oluşturur.
- Geçmişin tutarlı kalması için CLI’yi bir oturum kimliğiyle (destekleniyorsa) çalıştırır.
- Çıktıyı ayrıştırır (JSON veya düz metin) ve son metni döndürür.
- Oturum kimliklerini arka uç başına kalıcı hale getirir, böylece takip eden işlemler aynı CLI oturumunu yeniden kullanır.
Oturumlar
- CLI oturumları destekliyorsa
sessionArg(ör.--session-id) veya kimliğin birden fazla bayrağa eklenmesi gerektiğindesessionArgs({sessionId}yer tutucusu) ayarlayın. - CLI, farklı bayraklarla bir resume alt komutu kullanıyorsa
resumeArgsayarlayın (yeniden başlatırkenargsyerine geçer) ve isteğe bağlı olarakresumeOutputayarlayın (JSON olmayan yeniden başlatmalar için). sessionMode:always: her zaman bir oturum kimliği gönderir (saklı değilse yeni UUID).existing: yalnızca daha önce bir oturum kimliği saklandıysa gönderir.none: asla oturum kimliği göndermez.
serialize: true, aynı şerit üzerindeki çalıştırmaları sıralı tutar.- Çoğu CLI, tek bir sağlayıcı şeridinde serileştirir.
claude-clidaha dardır: yeniden başlatılan çalıştırmalar Claude oturum kimliği başına, yeni çalıştırmalar ise çalışma alanı yolu başına serileştirilir. Bağımsız çalışma alanları paralel çalışabilir.- OpenClaw, arka uç auth durumu değiştiğinde saklanan CLI oturumu yeniden kullanımını bırakır; buna yeniden oturum açma, token döndürme veya değişen bir auth profili kimlik bilgisi dahildir.
Görüntüler (iletme)
CLI’niz görüntü yollarını kabul ediyorsaimageArg ayarlayın:
imageArg ayarlıysa bu
yollar CLI bağımsız değişkenleri olarak geçirilir. imageArg eksikse OpenClaw
dosya yollarını isteme ekler (yol enjeksiyonu); bu, düz yollardan yerel dosyaları otomatik yükleyen
CLI’ler için yeterlidir (Claude CLI davranışı).
Girdiler / çıktılar
output: "json"(varsayılan), JSON’u ayrıştırmayı ve metin + oturum kimliği çıkarmayı dener.- Gemini CLI JSON çıktısı için OpenClaw,
usageeksik veya boş olduğunda yanıt metniniresponseiçinden ve kullanımıstatsiçinden okur. output: "jsonl", JSONL akışlarını ayrıştırır (örneğin Claude CLIstream-jsonve Codex CLI--json) ve varsa son agent mesajını ve oturum tanımlayıcılarını çıkarır.output: "text", stdout’u son yanıt olarak ele alır.
input: "arg"(varsayılan), istemi son CLI bağımsız değişkeni olarak geçirir.input: "stdin", istemi stdin üzerinden gönderir.- İstem çok uzunsa ve
maxPromptArgCharsayarlıysa stdin kullanılır.
Varsayılanlar (eklenti sahibi)
Paketlenmiş Anthropic eklentisi,claude-cli için bir varsayılan kaydeder:
command: "claude"args: ["-p", "--output-format", "stream-json", "--include-partial-messages", "--verbose", "--permission-mode", "bypassPermissions"]resumeArgs: ["-p", "--output-format", "stream-json", "--include-partial-messages", "--verbose", "--permission-mode", "bypassPermissions", "--resume", "{sessionId}"]output: "jsonl"input: "stdin"modelArg: "--model"systemPromptArg: "--append-system-prompt"sessionArg: "--session-id"systemPromptWhen: "first"sessionMode: "always"
codex-cli için bir varsayılan kaydeder:
command: "codex"args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]resumeArgs: ["exec","resume","{sessionId}","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]output: "jsonl"resumeOutput: "text"modelArg: "--model"imageArg: "--image"sessionMode: "existing"
google-gemini-cli için bir varsayılan kaydeder:
command: "gemini"args: ["--prompt", "--output-format", "json"]resumeArgs: ["--resume", "{sessionId}", "--prompt", "--output-format", "json"]modelArg: "--model"sessionMode: "existing"sessionIdFields: ["session_id", "sessionId"]
PATH üzerinde
gemini olarak erişilebilir olmalıdır (brew install gemini-cli veya
npm install -g @google/gemini-cli).
Gemini CLI JSON notları:
- Yanıt metni JSON
responsealanından okunur. usageyoksa veya boşsa kullanımstatsalanına geri düşer.stats.cached, OpenClawcacheReadiçine normalize edilir.stats.inputeksikse OpenClaw giriş token’larınıstats.input_tokens - stats.cachedüzerinden türetir.
command yolu).
Eklentiye ait varsayılanlar
CLI arka uç varsayılanları artık eklenti yüzeyinin bir parçasıdır:- Eklentiler bunları
api.registerCliBackend(...)ile kaydeder. - Arka uç
id, model referanslarında sağlayıcı öneki olur. agents.defaults.cliBackends.<id>içindeki kullanıcı config’i yine eklenti varsayılanını geçersiz kılar.- Arka uca özgü config temizliği, isteğe bağlı
normalizeConfighook’u aracılığıyla eklenti sahipliğinde kalır.
Bundle MCP bindirmeleri
CLI arka uçları OpenClaw araç çağrılarını doğrudan almaz, ancak bir arka uçbundleMcp: true ile oluşturulan bir MCP config bindirmesine dahil olabilir.
Mevcut paketlenmiş davranış:
claude-cli:bundleMcp: true(varsayılan)codex-cli: bundle MCP bindirmesi yokgoogle-gemini-cli: bundle MCP bindirmesi yok
- gateway araçlarını CLI sürecine açan bir loopback HTTP MCP sunucusu başlatır
- köprüyü oturum başına bir token ile doğrular (
OPENCLAW_MCP_TOKEN) - araç erişimini mevcut oturum, hesap ve kanal bağlamıyla sınırlar
- mevcut çalışma alanı için etkin bundle-MCP sunucularını yükler
- bunları var olan herhangi bir arka uç
--mcp-configdeğeriyle birleştirir - CLI bağımsız değişkenlerini
--strict-mcp-config --mcp-config <generated-file>geçecek şekilde yeniden yazar
--strict-mcp-config bayrağı, Claude CLI’nin ortamdan gelen
kullanıcı düzeyi veya global MCP sunucularını devralmasını engeller. MCP sunucusu etkin değilse bile OpenClaw,
arka plan çalıştırmalarının yalıtılmış kalması için yine de katı boş bir config enjekte eder.
Sınırlamalar
- Doğrudan OpenClaw araç çağrıları yoktur. OpenClaw, araç çağrılarını
CLI arka uç protokolüne enjekte etmez. Ancak
bundleMcp: trueolan arka uçlar (varsayılan Claude CLI davranışı), gateway araçlarını bir loopback MCP köprüsü üzerinden alır, böylece Claude CLI, OpenClaw araçlarını yerel MCP desteği aracılığıyla çağırabilir. - Akış arka uca özeldir. Claude CLI, JSONL akışı kullanır
(
--include-partial-messagesilestream-json); diğer CLI arka uçları ise çıkışa kadar tamponlanmış kalabilir. - Yapılandırılmış çıktılar, CLI’nin JSON biçimine bağlıdır.
- Codex CLI oturumları, düz metin çıktısıyla yeniden başlatılır (JSONL yoktur), bu da
ilk
--jsonçalıştırmasından daha az yapılandırılmıştır. OpenClaw oturumları yine de normal şekilde çalışır.
Sorun giderme
- CLI bulunamadı:
commandiçin tam yol ayarlayın. - Yanlış model adı:
provider/model→ CLI modeli eşlemesi içinmodelAliaseskullanın. - Oturum sürekliliği yok:
sessionArgayarlı olduğundan vesessionModedeğerininnoneolmadığından emin olun (Codex CLI şu anda JSON çıktısıyla yeniden başlatamaz). - Görüntüler yok sayılıyor:
imageArgayarlayın (ve CLI’nin dosya yollarını desteklediğini doğrulayın).