Gateway
CLI arka uçları
OpenClaw, API sağlayıcıları kapalı, hız sınırına takılmış veya geçici olarak hatalı davrandığında yalnızca metin yedeği olarak yerel yapay zeka CLI'lerini çalıştırabilir. Bu, bilinçli olarak temkinli tasarlanmıştır:
- OpenClaw araçları doğrudan enjekte edilmez, ancak
bundleMcp: truekullanan arka uçlar, local loopback MCP köprüsü üzerinden gateway araçları alabilir. - Destekleyen CLI'ler için JSONL akışı.
- Oturumlar desteklenir (böylece takip turları tutarlı kalır).
- CLI görüntü yollarını kabul ediyorsa görüntüler geçirilebilir.
Bu, birincil yol olmaktan çok bir güvenlik ağı olarak tasarlanmıştır. Harici API'lere güvenmeden "her zaman çalışır" metin yanıtları istediğinizde kullanın.
ACP oturum kontrolleri, arka plan görevleri, iş parçacığı/konuşma bağlama ve kalıcı harici kodlama oturumları içeren eksiksiz bir harness çalışma zamanı istiyorsanız, bunun yerine ACP Agents kullanın. CLI arka uçları ACP değildir.
Yeni başlayanlar için uygun hızlı başlangıç
Codex CLI'yi hiçbir config olmadan kullanabilirsiniz (paketle gelen OpenAI plugin'i varsayılan bir arka uç kaydeder):
openclaw agent --message "hi" --model codex-cli/gpt-5.5
Gateway'iniz launchd/systemd altında çalışıyorsa ve PATH minimal ise, yalnızca komut yolunu ekleyin:
{
agents: {
defaults: {
cliBackends: {
"codex-cli": {
command: "/opt/homebrew/bin/codex",
},
},
},
},
}
Hepsi bu. CLI'nin kendisinin ötesinde anahtar veya ek auth config gerekmez.
Bir Gateway ana makinesinde birincil mesaj sağlayıcısı olarak paketle gelen bir CLI arka ucu kullanırsanız,
config'iniz bir model referansında veya
agents.defaults.cliBackends altında bu arka uca açıkça referans verdiğinde OpenClaw artık sahip olan paketlenmiş plugin'i otomatik yükler.
Yedek olarak kullanma
CLI arka ucunu yedek listenize ekleyin; böylece yalnızca birincil modeller başarısız olduğunda çalışır:
{
agents: {
defaults: {
model: {
primary: "anthropic/claude-opus-4-6",
fallbacks: ["codex-cli/gpt-5.5"],
},
models: {
"anthropic/claude-opus-4-6": { alias: "Opus" },
"codex-cli/gpt-5.5": {},
},
},
},
}
Notlar:
agents.defaults.models(allowlist) kullanıyorsanız, CLI arka uç modellerinizi de oraya eklemeniz gerekir.- Birincil sağlayıcı başarısız olursa (auth, hız sınırları, zaman aşımları), OpenClaw sırada CLI arka ucunu dener.
Configuration genel bakışı
Tüm CLI arka uçları şunun altında bulunur:
agents.defaults.cliBackends
Her girdi bir sağlayıcı id ile anahtarlanır (ör. codex-cli, my-cli).
Sağlayıcı id, model referansınızın sol tarafı olur:
<provider>/<model>
Örnek configuration
{
agents: {
defaults: {
cliBackends: {
"codex-cli": {
command: "/opt/homebrew/bin/codex",
},
"my-cli": {
command: "my-cli",
args: ["--json"],
output: "json",
input: "arg",
modelArg: "--model",
modelAliases: {
"claude-opus-4-6": "opus",
"claude-sonnet-4-6": "sonnet",
},
sessionArg: "--session",
sessionMode: "existing",
sessionIdFields: ["session_id", "conversation_id"],
systemPromptArg: "--system",
// For CLIs with a dedicated prompt-file flag:
// systemPromptFileArg: "--system-file",
// Codex-style CLIs can point at a prompt file instead:
// systemPromptFileConfigArg: "-c",
// systemPromptFileConfigKey: "model_instructions_file",
systemPromptWhen: "first",
imageArg: "--image",
imageMode: "repeat",
serialize: true,
},
},
},
},
}
Nasıl çalışır?
- Sağlayıcı önekine (
codex-cli/...) göre bir arka uç seçer. - Aynı OpenClaw prompt + çalışma alanı bağlamını kullanarak bir sistem prompt'u oluşturur.
- Geçmişin tutarlı kalması için CLI'yi bir oturum id'siyle (destekleniyorsa) çalıştırır.
Paketle gelen
claude-cliarka ucu, her OpenClaw oturumu için bir Claude stdio sürecini canlı tutar ve takip turlarını stream-json stdin üzerinden gönderir. - Çıktıyı ayrıştırır (JSON veya düz metin) ve son metni döndürür.
- Takip turlarının aynı CLI oturumunu yeniden kullanması için arka uç başına oturum id'lerini kalıcılaştırır.
Paketle gelen OpenAI codex-cli arka ucu, OpenClaw'ın sistem prompt'unu
Codex'in model_instructions_file config override'ı üzerinden geçirir (-c model_instructions_file="..."). Codex, Claude tarzı bir
--append-system-prompt bayrağı sunmaz; bu yüzden OpenClaw, her yeni Codex CLI oturumu için
birleştirilen prompt'u geçici bir dosyaya yazar.
Paketle gelen Anthropic claude-cli arka ucu, OpenClaw Skills anlık görüntüsünü
iki yolla alır: eklenen sistem prompt'undaki kompakt OpenClaw skills kataloğu ve
--plugin-dir ile geçirilen geçici bir Claude Code plugin'i. Plugin,
yalnızca o agent/oturum için uygun skills'i içerir; böylece Claude Code'un yerel skill çözümleyicisi,
OpenClaw'ın aksi halde prompt'ta duyuracağı aynı filtrelenmiş kümeyi görür.
Skill env/API anahtarı override'ları, çalışma için OpenClaw tarafından alt süreç ortamına hâlâ uygulanır.
Claude CLI'nin kendi etkileşimsiz izin modu da vardır. OpenClaw bunu,
Claude'a özel config eklemek yerine mevcut exec ilkesine eşler: etkin istenen exec ilkesi YOLO olduğunda (tools.exec.security: "full" ve
tools.exec.ask: "off"), OpenClaw --permission-mode bypassPermissions ekler.
Agent başına agents.list[].tools.exec ayarları, o agent için global tools.exec ayarlarını geçersiz kılar.
Farklı bir Claude modunu zorlamak için
agents.defaults.cliBackends.claude-cli.args altında --permission-mode default veya --permission-mode acceptEdits gibi açık raw arka uç arg'ları ve eşleşen resumeArgs ayarlayın.
Paketle gelen Anthropic claude-cli arka ucu ayrıca OpenClaw /think düzeylerini,
kapalı olmayan düzeyler için Claude Code'un yerel --effort bayrağına eşler. minimal ve
low, low'a; adaptive ve medium, medium'a; high,
xhigh ve max ise doğrudan eşlenir. Diğer CLI arka uçlarının, /think oluşturulan CLI'yi etkileyebilmeden önce
sahip olan plugin'lerinin eşdeğer bir argv eşleyici bildirmesi gerekir.
OpenClaw paketle gelen claude-cli arka ucunu kullanabilmeden önce, Claude Code'un kendisinin
aynı ana makinede zaten oturum açmış olması gerekir:
claude auth login
claude auth status --text
openclaw models auth login --provider anthropic --method cli --set-default
agents.defaults.cliBackends.claude-cli.command ayarını yalnızca claude
binary'si zaten PATH üzerinde değilse kullanın.
Oturumlar
- CLI oturumları destekliyorsa, id'nin birden fazla bayrağa eklenmesi gerektiğinde
sessionArg(ör.--session-id) veyasessionArgs(placeholder{sessionId}) ayarlayın. - CLI farklı bayraklara sahip bir resume alt komutu kullanıyorsa,
resumeArgs(resume sırasındaargsyerine geçer) ve isteğe bağlı olarakresumeOutput(JSON olmayan resume'lar için) ayarlayın. sessionMode:always: her zaman bir oturum id'si gönder (saklı yoksa yeni UUID).existing: yalnızca daha önce saklanmışsa bir oturum id'si gönder.none: hiçbir zaman oturum id'si gönderme.
claude-clivarsayılan olarakliveSession: "claude-stdio",output: "jsonl"veinput: "stdin"kullanır; böylece takip turları etkin olduğu sürece canlı Claude sürecini yeniden kullanır. Sıcak stdio artık, taşıma alanlarını atlayan özel config'ler dahil, varsayılandır. Gateway yeniden başlatılırsa veya boşta duran süreç çıkarsa, OpenClaw saklanan Claude oturum id'sinden resume eder. Saklı oturum id'leri, resume öncesinde var olan okunabilir bir proje transcript'ine karşı doğrulanır; böylece hayalet bağlamalar,--resumealtında sessizce yeni bir Claude CLI oturumu başlatmak yerinereason=transcript-missingile temizlenir.- Claude canlı oturumları sınırlı JSONL çıktı korumalarını tutar. Varsayılanlar tur başına
8 MiB ve 20.000 ham JSONL satırına kadar izin verir. Araç yoğun Claude turları, bunları arka uç başına
agents.defaults.cliBackends.claude-cli.reliability.outputLimits.maxTurnRawCharsvemaxTurnLinesile yükseltebilir; OpenClaw bu ayarları 64 MiB ve 100.000 satırla sınırlar. - Saklı CLI oturumları sağlayıcıya ait sürekliliktir. Örtük günlük oturum
sıfırlaması bunları kesmez;
/resetve açıksession.resetilkeleri yine de keser.
Serileştirme notları:
serialize: trueaynı hat çalıştırmalarını sıralı tutar.- Çoğu CLI tek bir sağlayıcı hattında serileştirir.
- Seçili auth kimliği değiştiğinde OpenClaw saklı CLI oturumu yeniden kullanımını bırakır; buna değişen auth profile id'si, statik API anahtarı, statik token veya CLI bir tane sunuyorsa OAuth hesap kimliği dahildir. OAuth erişim ve yenileme token'ı rotasyonu saklı CLI oturumunu kesmez. Bir CLI kararlı bir OAuth hesap id'si sunmuyorsa, OpenClaw o CLI'nin resume izinlerini uygulamasına izin verir.
claude-cli oturumlarından fallback başlangıcı
Bir claude-cli denemesi, agents.defaults.model.fallbacks içindeki
CLI olmayan bir adaya geçerse, OpenClaw bir sonraki denemeyi
~/.claude/projects/ içindeki Claude Code'un yerel JSONL transcript'inden toplanan bağlam başlangıcıyla besler.
Bu seed olmadan, OpenClaw'ın kendi oturum transcript'i claude-cli çalışmaları için boş olduğundan
fallback sağlayıcısı soğuk başlardı.
- Başlangıç, en son
/compactözetini veyacompact_boundaryişaretçisini tercih eder, ardından karakter bütçesine kadar en son sınır sonrası turları ekler. Sınır öncesi turlar atılır çünkü özet zaten onları temsil eder. - Araç blokları, prompt bütçesini dürüst tutmak için kompakt
(tool call: name)ve(tool result: …)ipuçlarına birleştirilir. Özet taşarsa(truncated)olarak etiketlenir. - Aynı sağlayıcı
claude-cli->claude-clifallback'leri Claude'un kendi--resumemekanizmasına dayanır ve başlangıcı atlar. - Seed, mevcut Claude oturum dosyası yolu doğrulamasını yeniden kullanır; bu nedenle rastgele yollar okunamaz.
Görüntüler (geçirme)
CLI'niz görüntü yollarını kabul ediyorsa, imageArg ayarlayın:
imageArg: "--image",
imageMode: "repeat"
OpenClaw base64 görüntüleri geçici dosyalara yazar. imageArg ayarlıysa, bu
yollar CLI arg'ları olarak geçirilir. imageArg eksikse, OpenClaw dosya yollarını
prompt'a ekler (yol enjeksiyonu); bu, düz yollardan yerel dosyaları otomatik yükleyen CLI'ler için yeterlidir.
Girdiler / çıktılar
output: "json"(varsayılan) JSON ayrıştırmayı ve metin + oturum id'si çıkarmayı dener.- Gemini CLI JSON çıktısı için OpenClaw,
usageeksik veya boş olduğunda yanıt metniniresponseiçinden, kullanımı isestatsiçinden okur. output: "jsonl"JSONL akışlarını (örneğin Codex CLI--json) ayrıştırır ve varsa son agent mesajı ile oturum tanımlayıcılarını çıkarır.output: "text"stdout'u son yanıt olarak ele alır.
Girdi modları:
input: "arg"(varsayılan) prompt'u son CLI arg'ı olarak geçirir.input: "stdin"prompt'u stdin üzerinden gönderir.- Prompt çok uzunsa ve
maxPromptArgCharsayarlıysa, stdin kullanılır.
Varsayılanlar (plugin'e ait)
Paketle gelen OpenAI plugin'i ayrıca 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}","-c","sandbox_mode=\"workspace-write\"","--skip-git-repo-check"]output: "jsonl"resumeOutput: "text"modelArg: "--model"imageArg: "--image"sessionMode: "existing"
Paketle gelen Google plugin'i ayrıca google-gemini-cli için bir varsayılan kaydeder:
command: "gemini"args: ["--output-format", "json", "--prompt", "{prompt}"]resumeArgs: ["--resume", "{sessionId}", "--output-format", "json", "--prompt", "{prompt}"]imageArg: "@"imagePathScope: "workspace"modelArg: "--model"sessionMode: "existing"sessionIdFields: ["session_id", "sessionId"]
Ön koşul: yerel Gemini CLI kurulmuş ve PATH üzerinde
gemini olarak kullanılabilir 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ım bilgisistatsdeğerine geri döner.stats.cached, OpenClawcacheReaddeğerine normalleştirilir.stats.inputeksikse OpenClaw giriş tokenlerinistats.input_tokens - stats.cachedüzerinden türetir.
Yalnızca gerekirse geçersiz kılın (yaygın: mutlak command yolu).
Plugin'e ait varsayılanlar
CLI arka uç varsayılanları artık plugin yüzeyinin bir parçasıdır:
- Plugin'ler bunları
api.registerCliBackend(...)ile kaydeder. - Arka uç
iddeğeri, model başvurularında sağlayıcı öneki olur. agents.defaults.cliBackends.<id>içindeki kullanıcı yapılandırması yine de plugin varsayılanını geçersiz kılar.- Arka uca özgü yapılandırma temizliği, isteğe bağlı
normalizeConfighook'u üzerinden plugin'e ait kalır.
Küçük prompt/ileti uyumluluk shim'lerine ihtiyaç duyan Plugin'ler, bir sağlayıcıyı veya CLI arka ucunu değiştirmeden çift yönlü metin dönüşümleri tanımlayabilir:
api.registerTextTransforms({
input: [
{ from: /red basket/g, to: "blue basket" },
{ from: /paper ticket/g, to: "digital ticket" },
{ from: /left shelf/g, to: "right shelf" },
],
output: [
{ from: /blue basket/g, to: "red basket" },
{ from: /digital ticket/g, to: "paper ticket" },
{ from: /right shelf/g, to: "left shelf" },
],
});
input, CLI'ye iletilen sistem prompt'unu ve kullanıcı prompt'unu yeniden yazar. output,
OpenClaw kendi denetim işaretçilerini ve kanal teslimini işlemeden önce akışlı asistan deltalarını ve ayrıştırılmış son metni
yeniden yazar.
Claude Code stream-json uyumlu JSONL yayan CLI'ler için bu arka ucun yapılandırmasında
jsonlDialect: "claude-stream-json" ayarlayın.
Bundle MCP katmanları
CLI arka uçları OpenClaw araç çağrılarını doğrudan almaz, ancak bir arka uç
bundleMcp: true ile üretilmiş bir MCP yapılandırma katmanına dahil olmayı seçebilir.
Geçerli paket davranışı:
claude-cli: üretilmiş katı MCP yapılandırma dosyasıcodex-cli:mcp_serversiçin satır içi yapılandırma geçersiz kılmaları; üretilmiş OpenClaw loopback sunucusu, Codex'in sunucu başına araç onay modu ile işaretlenir; böylece MCP çağrıları yerel onay prompt'larında takılamazgoogle-gemini-cli: üretilmiş Gemini sistem ayarları dosyası
bundle MCP etkinleştirildiğinde OpenClaw:
- Gateway araçlarını CLI işlemine sunan bir loopback HTTP MCP sunucusu başlatır
- köprüyü oturum başına bir token (
OPENCLAW_MCP_TOKEN) ile kimlik doğrular - araç erişimini geçerli oturum, hesap ve kanal bağlamıyla sınırlar
- geçerli çalışma alanı için etkin bundle-MCP sunucularını yükler
- bunları mevcut arka uç MCP yapılandırması/ayarları biçimiyle birleştirir
- başlatma yapılandırmasını, sahip olan extension'dan gelen arka uca ait entegrasyon modunu kullanarak yeniden yazar
Hiçbir MCP sunucusu etkin değilse, bir arka uç bundle MCP'ye dahil olmayı seçtiğinde OpenClaw yine de arka plan çalıştırmalarının yalıtılmış kalması için katı bir yapılandırma enjekte eder.
Oturum kapsamlı paket MCP çalışma zamanları, bir oturum içinde yeniden kullanım için önbelleğe alınır, ardından
mcp.sessionIdleTtlMs milisaniye boşta kalma süresinden sonra temizlenir (varsayılan 10
dakika; devre dışı bırakmak için 0 ayarlayın). Kimlik doğrulama yoklamaları,
slug üretimi ve active-memory hatırlama isteği gibi tek seferlik gömülü çalıştırmalar, stdio
alt işlemlerinin ve Streamable HTTP/SSE akışlarının çalıştırmadan uzun yaşamaması için çalıştırma sonunda temizlenir.
Sınırlamalar
- Doğrudan OpenClaw araç çağrısı yok. OpenClaw, CLI arka uç protokolüne araç çağrıları enjekte etmez.
Arka uçlar Gateway araçlarını yalnızca
bundleMcp: trueseçtiklerinde görür. - Akış arka uca özgüdür. Bazı arka uçlar JSONL akışı yapar; diğerleri çıkışa kadar tamponlar.
- Yapılandırılmış çıktılar CLI'nin JSON biçimine bağlıdır.
- Codex CLI oturumları metin çıktısı üzerinden sürdürülür (JSONL yoktur); bu, ilk
--jsonçalıştırmasına göre daha az yapılandırılmıştır. OpenClaw oturumları yine de normal şekilde çalışır.
Sorun giderme
- CLI bulunamadı:
commanddeğerini tam yol olarak ayarlayın. - Yanlış model adı:
provider/model→ CLI model eşlemesi içinmodelAliaseskullanın. - Oturum sürekliliği yok:
sessionArgayarlandığından vesessionModedeğerininnoneolmadığından emin olun (Codex CLI şu anda JSON çıktısıyla sürdüremez). - Görseller yok sayıldı:
imageArgayarlayın (ve CLI'nin dosya yollarını desteklediğini doğrulayın).