Alt Aracılar
Alt aracılar, mevcut bir aracı çalıştırmasından başlatılan arka plan aracı çalıştırmalarıdır. Kendi oturumlarında çalışırlar (agent:<agentId>:subagent:<uuid>) ve tamamlandıklarında sonuçlarını istekte bulunan sohbet kanalına duyururlar. Her alt aracı çalıştırması bir background task olarak izlenir.
Slash komutu
Geçerli oturum için alt aracı çalıştırmalarını incelemek veya denetlemek üzere/subagents kullanın:
/subagents list/subagents kill <id|#|all>/subagents log <id|#> [limit] [tools]/subagents info <id|#>/subagents send <id|#> <message>/subagents steer <id|#> <message>/subagents spawn <agentId> <task> [--model <model>] [--thinking <level>]
/focus <subagent-label|session-key|session-id|session-label>/unfocus/agents/session idle <duration|off>/session max-age <duration|off>
/subagents info, çalıştırma meta verilerini gösterir (durum, zaman damgaları, oturum kimliği, döküm yolu, temizleme).
Sınırlı ve güvenlik filtreli bir geri çağırma görünümü için sessions_history kullanın; ham tam döküme ihtiyacınız olduğunda
disk üzerindeki döküm yolunu inceleyin.
Başlatma davranışı
/subagents spawn, bir arka plan alt aracısını dahili bir aktarma olarak değil kullanıcı komutu olarak başlatır ve çalıştırma bittiğinde istekte bulunan sohbet kanalına tek bir son tamamlama güncellemesi gönderir.
- Başlatma komutu bloklamaz; bir çalıştırma kimliğini hemen döndürür.
- Tamamlandığında, alt aracı istekte bulunan sohbet kanalına bir özet/sonuç mesajı duyurur.
- Tamamlama itme tabanlıdır. Başlatıldıktan sonra, bitmesini beklemek için döngü içinde
/subagents list,sessions_listveyasessions_historysorgulamayın; durumu yalnızca hata ayıklama veya müdahale gerektiğinde inceleyin. - Tamamlandığında, OpenClaw, duyuru temizleme akışı devam etmeden önce bu alt aracı oturumunun açtığı izlenen tarayıcı sekmelerini/süreçlerini imkanlar dahilinde kapatır.
- Manuel başlatmalarda teslim dayanıklıdır:
- OpenClaw önce kararlı bir idempotency anahtarıyla doğrudan
agentteslimini dener. - Doğrudan teslim başarısız olursa kuyruk yönlendirmesine geri döner.
- Kuyruk yönlendirmesi de kullanılamıyorsa, nihai vazgeçmeden önce duyuru kısa bir üstel geri çekilme ile yeniden denenir.
- OpenClaw önce kararlı bir idempotency anahtarıyla doğrudan
- Tamamlama teslimi çözümlenmiş istekte bulunan rota bilgisini korur:
- mevcutsa, iş parçacığına bağlı veya konuşmaya bağlı tamamlama rotaları önceliklidir
- tamamlama kaynağı yalnızca bir kanal sağlıyorsa, OpenClaw eksik hedef/hesap bilgisini istekte bulunan oturumun çözümlenmiş rotasından (
lastChannel/lastTo/lastAccountId) doldurur; böylece doğrudan teslim yine çalışır
- İstekte bulunan oturuma yapılan tamamlama devri, çalışma zamanında üretilen dahili bağlamdır (kullanıcı tarafından yazılmış metin değildir) ve şunları içerir:
Result(en son görünürassistantyanıt metni, yoksa temizlenmiş en son tool/toolResult metni)Status(completed successfully/failed/timed out/unknown)- kompakt çalışma zamanı/token istatistikleri
- istekte bulunan aracının bunu ham dahili meta veri olarak iletmek yerine normal aracı sesiyle yeniden yazmasını söyleyen bir teslim talimatı
--modelve--thinking, bu belirli çalıştırma için varsayılanları geçersiz kılar.- Tamamlandıktan sonra ayrıntıları ve çıktıyı incelemek için
info/logkullanın. /subagents spawntek seferlik moddur (mode: "run"). Kalıcı iş parçacığına bağlı oturumlar içinthread: truevemode: "session"ilesessions_spawnkullanın.- ACP harness oturumları için (Codex, Claude Code, Gemini CLI),
runtime: "acp"ilesessions_spawnkullanın ve ACP Agents bölümüne bakın.
- Ana çalıştırmayı engellemeden “araştırma / uzun görev / yavaş araç” işlerini paralelleştirmek.
- Alt aracıları varsayılan olarak yalıtılmış tutmak (oturum ayrımı + isteğe bağlı sandboxing).
- Araç yüzeyini kötü kullanımı zor olacak şekilde tutmak: alt aracılar varsayılan olarak oturum araçlarını almaz.
- Orkestratör desenleri için yapılandırılabilir iç içe geçme derinliğini desteklemek.
agents.defaults.subagents.model veya aracı başına geçersiz kılmalarla yapılandırabilirsiniz.
Araç
sessions_spawn kullanın:
- Bir alt aracı çalıştırması başlatır (
deliver: false, genel kulvar:subagent) - Ardından bir duyuru adımı çalıştırır ve duyuru yanıtını istekte bulunan sohbet kanalına gönderir
- Varsayılan model:
agents.defaults.subagents.model(veya aracı başınaagents.list[].subagents.model) ayarlamadığınız sürece çağıranı devralır; açık birsessions_spawn.modelyine önceliklidir. - Varsayılan düşünme düzeyi:
agents.defaults.subagents.thinking(veya aracı başınaagents.list[].subagents.thinking) ayarlamadığınız sürece çağıranı devralır; açık birsessions_spawn.thinkingyine önceliklidir. - Varsayılan çalışma zaman aşımı:
sessions_spawn.runTimeoutSecondsatlanırsa, OpenClaw ayarlıysaagents.defaults.subagents.runTimeoutSecondskullanır; aksi halde0’a geri döner (zaman aşımı yok).
task(zorunlu)label?(isteğe bağlı)agentId?(isteğe bağlı; izin veriliyorsa başka bir aracı kimliği altında başlatır)model?(isteğe bağlı; alt aracı modelini geçersiz kılar; geçersiz değerler atlanır ve alt aracı, araç sonucunda bir uyarıyla varsayılan modelde çalışır)thinking?(isteğe bağlı; alt aracı çalıştırması için düşünme düzeyini geçersiz kılar)runTimeoutSeconds?(ayarlandıysa varsayılan olarakagents.defaults.subagents.runTimeoutSeconds, aksi halde0; ayarlandığında, alt aracı çalıştırması N saniye sonra durdurulur)thread?(varsayılanfalse;trueolduğunda, bu alt aracı oturumu için kanal iş parçacığı bağlaması ister)mode?(run|session)- varsayılan
run’dır thread: trueise vemodeatlanmışsa, varsayılansessionolurmode: "session"içinthread: truegereklidir
- varsayılan
cleanup?(delete|keep, varsayılankeep)sandbox?(inherit|require, varsayılaninherit;require, hedef alt çalışma zamanı sandbox içinde değilse başlatmayı reddeder)sessions_spawn, kanal teslim parametrelerini kabul etmez (target,channel,to,threadId,replyTo,transport). Teslim için, başlatılan çalıştırmadanmessage/sessions_sendkullanın.
İş parçacığına bağlı oturumlar
Bir kanalda iş parçacığı bağları etkinleştirildiğinde, bir alt aracı bir iş parçacığına bağlı kalabilir; böylece o iş parçacığındaki sonraki kullanıcı mesajları aynı alt aracı oturumuna yönlendirilmeye devam eder.İş parçacığını destekleyen kanallar
- Discord (şu anda desteklenen tek kanal): kalıcı iş parçacığına bağlı subagent oturumlarını (
thread: trueilesessions_spawn), manuel iş parçacığı denetimlerini (/focus,/unfocus,/agents,/session idle,/session max-age) vechannels.discord.threadBindings.enabled,channels.discord.threadBindings.idleHours,channels.discord.threadBindings.maxAgeHoursvechannels.discord.threadBindings.spawnSubagentSessionsbağdaştırıcı anahtarlarını destekler.
thread: true(ve isteğe bağlı olarakmode: "session") ilesessions_spawnkullanarak başlatın.- OpenClaw, etkin kanalda bu oturum hedefi için bir iş parçacığı oluşturur veya bağlar.
- O iş parçacığındaki yanıtlar ve takip mesajları bağlı oturuma yönlendirilir.
- Etkinsizlik nedeniyle otomatik odak kaldırmayı incelemek/güncellemek için
/session idle, katı üst sınırı denetlemek için/session max-agekullanın. - Manuel olarak ayırmak için
/unfocuskullanın.
/focus <target>geçerli iş parçacığını (veya yeni bir tane oluşturarak) bir alt aracı/oturum hedefine bağlar./unfocusgeçerli bağlı iş parçacığının bağını kaldırır./agentsetkin çalıştırmaları ve bağ durumunu (thread:<id>veyaunbound) listeler./session idleve/session max-ageyalnızca odaklanmış bağlı iş parçacıkları için çalışır.
- Genel varsayılan:
session.threadBindings.enabled,session.threadBindings.idleHours,session.threadBindings.maxAgeHours - Kanal geçersiz kılmaları ve başlatmada otomatik bağlama anahtarları bağdaştırıcıya özeldir. Yukarıdaki İş parçacığını destekleyen kanallar bölümüne bakın.
agents.list[].subagents.allowAgents:agentIdile hedeflenebilecek aracı kimliklerinin listesi (["*"]herhangi birine izin verir). Varsayılan: yalnızca istekte bulunan aracı.agents.defaults.subagents.allowAgents: istekte bulunan aracının kendisubagents.allowAgentsayarı yoksa kullanılan varsayılan hedef aracı izin listesi.- Sandbox devralma koruması: istekte bulunan oturum sandbox içindeyse,
sessions_spawnsandbox olmadan çalışacak hedefleri reddeder. agents.defaults.subagents.requireAgentId/agents.list[].subagents.requireAgentId: true olduğunda,agentIdatlayansessions_spawnçağrılarını engeller (açık profil seçimini zorunlu kılar). Varsayılan: false.
sessions_spawniçin şu anda hangi aracı kimliklerine izin verildiğini görmek üzereagents_listkullanın.
- Alt aracı oturumları
agents.defaults.subagents.archiveAfterMinutessonrasında otomatik olarak arşivlenir (varsayılan: 60). - Arşivleme
sessions.deletekullanır ve dökümü*.deleted.<timestamp>olarak yeniden adlandırır (aynı klasörde). cleanup: "delete", duyurudan hemen sonra arşivler (yine de dökümü yeniden adlandırarak korur).- Otomatik arşivleme imkanlar dahilindedir; gateway yeniden başlatılırsa bekleyen zamanlayıcılar kaybolur.
runTimeoutSecondsotomatik arşivleme yapmaz; yalnızca çalıştırmayı durdurur. Oturum otomatik arşive kadar kalır.- Otomatik arşivleme hem derinlik-1 hem de derinlik-2 oturumlarına eşit şekilde uygulanır.
- Tarayıcı temizliği, arşiv temizliğinden ayrıdır: izlenen tarayıcı sekmeleri/süreçleri, döküm/oturum kaydı tutulsa bile çalıştırma bittiğinde imkanlar dahilinde kapatılır.
İç içe Alt Aracılar
Varsayılan olarak alt aracılar kendi alt aracılarını başlatamaz (maxSpawnDepth: 1). maxSpawnDepth: 2 ayarlayarak bir seviye iç içe geçmeyi etkinleştirebilirsiniz; bu, orkestratör desenine izin verir: ana → orkestratör alt aracı → çalışan alt-alt aracılar.
Nasıl etkinleştirilir
Derinlik düzeyleri
| Derinlik | Oturum anahtarı şekli | Rol | Başlatabilir mi? |
|---|---|---|---|
| 0 | agent:<id>:main | Ana aracı | Her zaman |
| 1 | agent:<id>:subagent:<uuid> | Alt aracı (derinlik 2’ye izin veriliyorsa orkestratör) | Yalnızca maxSpawnDepth >= 2 ise |
| 2 | agent:<id>:subagent:<uuid>:subagent:<uuid> | Alt-alt aracı (yaprak çalışan) | Asla |
Duyuru zinciri
Sonuçlar zincir boyunca yukarı akar:- Derinlik-2 çalışanı biter → üst öğesine (derinlik-1 orkestratör) duyurur
- Derinlik-1 orkestratör duyuruyu alır, sonuçları sentezler, biter → ana öğeye duyurur
- Ana aracı duyuruyu alır ve kullanıcıya teslim eder
- Çocuk işi bir kez başlatın ve tamamlanma olaylarını bekleyin;
sessions_list,sessions_history,/subagents listveyaexecsleep komutları etrafında yoklama döngüleri kurmayın. - Bir çocuk tamamlama olayı, siz son yanıtı gönderdikten sonra gelirse, doğru takip yanıtı tam olarak sessiz belirteç
NO_REPLY/no_replyolur.
Derinliğe göre araç ilkesi
- Rol ve denetim kapsamı başlatma sırasında oturum meta verilerine yazılır. Bu, düz veya geri yüklenmiş oturum anahtarlarının yanlışlıkla yeniden orkestratör ayrıcalıkları kazanmasını engeller.
- Derinlik 1 (orkestratör,
maxSpawnDepth >= 2olduğunda): Çocuklarını yönetebilmesi içinsessions_spawn,subagents,sessions_list,sessions_historyalır. Diğer oturum/sistem araçları yine reddedilir. - Derinlik 1 (yaprak,
maxSpawnDepth == 1olduğunda): Oturum aracı yoktur (geçerli varsayılan davranış). - Derinlik 2 (yaprak çalışan): Oturum aracı yoktur —
sessions_spawn, derinlik 2’de her zaman reddedilir. Daha fazla çocuk başlatamaz.
Aracı başına başlatma sınırı
Her aracı oturumu (herhangi bir derinlikte) aynı anda en fazlamaxChildrenPerAgent (varsayılan: 5) etkin çocuğa sahip olabilir. Bu, tek bir orkestratörden kontrolden çıkan yelpazelenmeyi önler.
Basamaklı durdurma
Bir derinlik-1 orkestratörü durdurmak, tüm derinlik-2 çocuklarını otomatik olarak durdurur:- Ana sohbette
/stop, tüm derinlik-1 aracılarını durdurur ve derinlik-2 çocuklarına kademeli olarak iner. /subagents kill <id>, belirli bir alt aracıyı durdurur ve çocuklarına kademeli olarak iner./subagents kill all, istekte bulunan için tüm alt aracıları durdurur ve kademeli olarak iner.
Kimlik doğrulama
Alt aracı kimlik doğrulaması, oturum türüne göre değil aracı kimliğine göre çözülür:- Alt aracı oturum anahtarı
agent:<agentId>:subagent:<uuid>biçimindedir. - Kimlik doğrulama deposu, o aracının
agentDirdizininden yüklenir. - Ana aracının auth profilleri bir yedek olarak birleştirilir; çakışmalarda aracı profilleri ana profilleri geçersiz kılar.
Duyuru
Alt aracılar bir duyuru adımıyla geri rapor verir:- Duyuru adımı, istekte bulunan oturumda değil alt aracı oturumunda çalışır.
- Alt aracı tam olarak
ANNOUNCE_SKIPile yanıt verirse hiçbir şey gönderilmez. - En son assistant metni tam olarak sessiz belirteç
NO_REPLY/no_replyise, daha önce görünür ilerleme olsa bile duyuru çıktısı bastırılır. - Aksi halde teslim, istekte bulunanın derinliğine bağlıdır:
- üst düzey istekte bulunan oturumları, harici teslimli (
deliver=true) bir takipagentçağrısı kullanır - iç içe istekte bulunan subagent oturumları, orkestratörün çocuk sonuçlarını oturum içinde sentezleyebilmesi için dahili bir takip eklemesi (
deliver=false) alır - iç içe istekte bulunan subagent oturumu artık yoksa, OpenClaw imkanlar dahilinde o oturumun istekte bulunanına geri döner
- üst düzey istekte bulunan oturumları, harici teslimli (
- Üst düzey istekte bulunan oturumları için, tamamlama modundaki doğrudan teslim önce bağlı konuşma/iş parçacığı rotasını ve hook geçersiz kılmasını çözümler, sonra eksik kanal-hedef alanlarını istekte bulunan oturumun saklanan rotasından doldurur. Bu, tamamlama kaynağı yalnızca kanalı tanımlasa bile tamamlamaları doğru sohbet/konu üzerinde tutar.
- İç içe tamamlama bulguları oluşturulurken, çocuk tamamlama toplaması geçerli istekte bulunan çalıştırma kapsamıyla sınırlanır; böylece önceki çalıştırmalardan kalan çocuk çıktıları geçerli duyuruya sızmaz.
- Duyuru yanıtları, kanal bağdaştırıcılarında mevcut olduğunda iş parçacığı/konu yönlendirmesini korur.
- Duyuru bağlamı, kararlı bir dahili olay bloğuna normalize edilir:
- kaynak (
subagentveyacron) - çocuk oturum anahtarı/kimliği
- duyuru türü + görev etiketi
- çalışma zamanı sonucundan türetilen durum satırı (
success,error,timeoutveyaunknown) - en son görünür assistant metninden seçilen, yoksa temizlenmiş en son tool/toolResult metni olan sonuç içeriği
- ne zaman yanıt verileceğini ve ne zaman sessiz kalınacağını açıklayan bir takip talimatı
- kaynak (
Status, model çıktısından çıkarılmaz; çalışma zamanı sonuç sinyallerinden gelir.- Zaman aşımında, çocuk yalnızca araç çağrılarına kadar ilerlediyse, duyuru ham araç çıktısını yinelemek yerine bu geçmişi kısa bir kısmi ilerleme özetine indirgemebilir.
- Çalışma zamanı (ör.
runtime 5m12s) - Token kullanımı (girdi/çıktı/toplam)
- Model fiyatlandırması yapılandırıldıysa tahmini maliyet (
models.providers.*.models[].cost) sessionKey,sessionIdve döküm yolu (ana aracının geçmişisessions_historyile alabilmesi veya dosyayı diskten inceleyebilmesi için)- Dahili meta veriler yalnızca orkestrasyon içindir; kullanıcıya dönük yanıtlar normal aracı sesiyle yeniden yazılmalıdır.
sessions_history, daha güvenli orkestrasyon yoludur:
- önce assistant geri çağırması normalize edilir:
- thinking etiketleri çıkarılır
<relevant-memories>/<relevant_memories>iskelet blokları çıkarılır<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>ve<function_calls>...</function_calls>gibi düz metin tool-call XML yük blokları çıkarılır; düzgün kapanmayan kısaltılmış yükler de buna dahildir- düşürülmüş tool-call/result iskeletleri ve historical-context işaretçileri çıkarılır
<|assistant|>, diğer ASCII<|...|>belirteçleri ve tam genişlikli<|...|>varyantları gibi sızmış model kontrol belirteçleri çıkarılır- bozuk MiniMax tool-call XML’i çıkarılır
- kimlik bilgisi/token benzeri metinler sansürlenir
- uzun bloklar kısaltılabilir
- çok büyük geçmişlerde daha eski satırlar düşürülebilir veya aşırı büyük bir satır
[sessions_history omitted: message too large]ile değiştirilebilir - ham tam bayt döküme ihtiyaç duyduğunuzda, disk üzerindeki dökümü incelemek geri dönüş seçeneğidir
Araç İlkesi (alt aracı araçları)
Varsayılan olarak alt aracılar, oturum araçları ve sistem araçları dışındaki tüm araçları alır:sessions_listsessions_historysessions_sendsessions_spawn
sessions_history de sınırlı ve temizlenmiş bir geri çağırma görünümü olarak kalır; ham döküm boşaltması değildir.
maxSpawnDepth >= 2 olduğunda, derinlik-1 orkestratör alt aracılar çocuklarını yönetebilmeleri için ayrıca sessions_spawn, subagents, sessions_list ve sessions_history alır.
Config ile geçersiz kılın:
Eşzamanlılık
Alt aracılar özel bir süreç içi kuyruk kulvarı kullanır:- Kulvar adı:
subagent - Eşzamanlılık:
agents.defaults.subagents.maxConcurrent(varsayılan8)
Durdurma
- İstekte bulunan sohbette
/stopgöndermek, istekte bulunan oturumu iptal eder ve ondan başlatılan etkin alt aracı çalıştırmalarını durdurur; bu durum iç içe çocuklara da kademeli olarak uygulanır. /subagents kill <id>, belirli bir alt aracıyı durdurur ve çocuklarına kademeli olarak uygulanır.
Sınırlamalar
- Alt aracı duyurusu imkanlar dahilindedir. Gateway yeniden başlatılırsa bekleyen “geri duyurma” işi kaybolur.
- Alt aracılar yine aynı gateway süreç kaynaklarını paylaşır;
maxConcurrentdeğerini bir güvenlik supabı olarak değerlendirin. sessions_spawnher zaman bloklamaz: hemen{ status: "accepted", runId, childSessionKey }döndürür.- Alt aracı bağlamı yalnızca
AGENTS.md+TOOLS.mdekler (SOUL.md,IDENTITY.md,USER.md,HEARTBEAT.mdveyaBOOTSTRAP.mdyoktur). - En yüksek iç içe geçme derinliği 5’tir (
maxSpawnDeptharalığı: 1–5). Çoğu kullanım durumu için derinlik 2 önerilir. maxChildrenPerAgent, oturum başına etkin çocuk sayısını sınırlar (varsayılan: 5, aralık: 1–20).