Fundamentals
Bağlam motoru
Bir bağlam motoru, OpenClaw'ın her çalıştırma için model bağlamını nasıl oluşturduğunu denetler: hangi iletilerin dahil edileceği, eski geçmişin nasıl özetleneceği ve alt ajan sınırları arasında bağlamın nasıl yönetileceği.
OpenClaw, yerleşik bir legacy motoruyla gelir ve varsayılan olarak bunu kullanır. Yalnızca farklı bir birleştirme, Compaction veya oturumlar arası hatırlama davranışı istendiğinde bir Plugin motoru kurup seçin.
Hızlı başlangıç
Hangi motorun etkin olduğunu denetleyin
openclaw doctor# veya yapılandırmayı doğrudan inceleyin:cat ~/.openclaw/openclaw.json | jq '.plugins.slots.contextEngine'Bir Plugin motoru kurun
Bağlam motoru Pluginleri, diğer tüm OpenClaw Pluginleri gibi kurulur.
npm üzerinden
openclaw plugins install @martian-engineering/lossless-clawYerel bir yoldan
openclaw plugins install -l ./my-context-engineMotoru etkinleştirip seçin
// openclaw.json{ plugins: { slots: { contextEngine: "lossless-claw", // Pluginin kayıtlı motor kimliğiyle eşleşmelidir }, entries: { "lossless-claw": { enabled: true, // Plugine özgü yapılandırma buraya yazılır (Plugin belgelerine bakın) }, }, },}Kurulum ve yapılandırmadan sonra Gateway'i yeniden başlatın.
Eski motora geri dönün (isteğe bağlı)
contextEngine değerini "legacy" olarak ayarlayın (veya anahtarı tamamen kaldırın; varsayılan değer "legacy" değeridir).
Nasıl çalışır?
OpenClaw bir model istemini her çalıştırdığında bağlam motoru, yaşam döngüsünün dört noktasına katılır:
1. Alma
Oturuma yeni bir ileti eklendiğinde çağrılır. Motor, iletiyi kendi veri deposunda saklayabilir veya dizine ekleyebilir.
2. Birleştirme
Her model çalıştırmasından önce çağrılır. Motor, belirteç bütçesine sığan sıralı bir ileti kümesi (ve isteğe bağlı bir systemPromptAddition) döndürür.
3. Compaction
Bağlam penceresi dolduğunda veya kullanıcı /compact komutunu çalıştırdığında çağrılır. Motor, alan açmak için eski geçmişi özetler.
4. Tur sonrası
Bir çalıştırma tamamlandıktan sonra çağrılır. Motor durumu kalıcı hâle getirebilir, arka planda Compaction tetikleyebilir veya dizinleri güncelleyebilir.
Motorlar ayrıca önyüklemeden, başarılı bir turdan veya Compaction işleminden sonra transkript bakımı (runtimeContext.rewriteTranscriptEntries() aracılığıyla güvenli yeniden yazma) için isteğe bağlı bir maintain() yöntemi uygulayabilir. Yanıtı engellemek yerine ertelenmiş iş olarak çalıştırmak için info.turnMaintenanceMode: "background" değerini ayarlayın.
Paketle birlikte gelen ACP dışı Codex koşum takımı için OpenClaw, birleştirilmiş bağlamı Codex geliştirici talimatlarına ve mevcut turun istemine yansıtarak aynı yaşam döngüsünü uygular. Codex, yerel iş parçacığı geçmişini ve yerel Compaction bileşenini yönetmeye devam eder.
Alt ajan yaşam döngüsü (isteğe bağlı)
OpenClaw, isteğe bağlı iki alt ajan yaşam döngüsü kancası çağırır:
prepareSubagentSpawnmethodAlt çalıştırma başlamadan önce paylaşılan bağlam durumunu hazırlar. Kanca; üst/alt oturum anahtarlarını, contextMode (isolated veya fork), kullanılabilir transkript kimliklerini/dosyalarını ve isteğe bağlı TTL değerini alır. Bir geri alma tanıtıcısı döndürürse OpenClaw, hazırlık başarılı olduktan sonra başlatma başarısız olduğunda bunu çağırır. lightContext isteyen ve contextMode="isolated" olarak çözümlenen yerel alt ajan başlatmaları, alt çalıştırmanın bağlam motoru tarafından yönetilen başlatma öncesi durum olmadan hafif önyükleme bağlamından başlaması için bu kancayı kasıtlı olarak atlar.
onSubagentEndedmethodBir alt ajan oturumu tamamlandığında veya süpürüldüğünde temizleme yapar.
Sistem istemine ekleme
assemble yöntemi bir systemPromptAddition dizesi döndürebilir. OpenClaw bunu çalıştırmanın sistem isteminin başına ekler. Böylece motorlar, statik çalışma alanı dosyaları gerektirmeden dinamik hatırlama yönlendirmeleri, erişim talimatları veya bağlama duyarlı ipuçları ekleyebilir.
Eski motor
Yerleşik legacy motoru, OpenClaw'ın özgün davranışını korur:
- Alma: işlem yapmaz (ileti kalıcılığını doğrudan oturum yöneticisi işler).
- Birleştirme: değişiklik yapmadan geçirir (çalışma zamanındaki mevcut temizle → doğrula → sınırla işlem hattı bağlam birleştirmeyi işler).
- Compaction: eski iletilerin tek bir özetini oluşturan ve son iletileri olduğu gibi koruyan yerleşik özetleme Compaction işlemine devreder.
- Tur sonrası: işlem yapmaz.
Eski motor araç kaydetmez veya bir systemPromptAddition sağlamaz.
Hiçbir plugins.slots.contextEngine ayarlanmadığında (veya "legacy" olarak ayarlandığında) bu motor otomatik olarak kullanılır.
Plugin motorları
Bir Plugin, Plugin API'sini kullanarak bir bağlam motoru kaydedebilir:
export default function register(api) { api.registerContextEngine("my-engine", (ctx) => ({ info: { id: "my-engine", name: "My Context Engine", ownsCompaction: true, }, async ingest({ sessionId, message, isHeartbeat }) { // İletiyi veri deponuzda saklayın return { ingested: true }; }, async assemble({ sessionId, sessionKey, messages, tokenBudget, availableTools, citationsMode, }) { // Bütçeye sığan iletileri döndürün return { messages: buildContext(messages, tokenBudget), estimatedTokens: countTokens(messages), systemPromptAddition: buildMemorySystemPromptAddition({ availableTools: availableTools ?? new Set(), citationsMode, agentSessionKey: sessionKey, }), }; }, async compact({ sessionId, force }) { // Eski bağlamı özetleyin return { ok: true, compacted: true }; }, }));}ctx fabrikası, Pluginlerin ilk yaşam döngüsü çağrısından önce
ajan veya çalışma alanı başına durumu başlatabilmesi için isteğe bağlı config, agentDir ve workspaceDir
değerlerini içerir. Eski olmayan bir assemble() çağrısından önce ana makine,
kayıtlı eşzamansız bellek istemi hazırlığını tamamlar. Eşzamanlı
buildMemorySystemPromptAddition(...) yardımcısı bu değişmez çalıştırma anlık görüntüsünü okur;
sağlanan araç, alıntı, ajan ve oturum bağlamını değiştirmeden aktarın.
Ardından yapılandırmada etkinleştirin:
{ plugins: { slots: { contextEngine: "my-engine", }, entries: { "my-engine": { enabled: true, }, }, },}ContextEngine arayüzü
Gerekli üyeler:
| Üye | Tür | Amaç |
|---|---|---|
info |
Özellik | Motor kimliği, adı, sürümü ve Compaction'ı yönetip yönetmediği |
ingest(params) |
Yöntem | Tek bir iletiyi saklama |
assemble(params) |
Yöntem | Bir model çalıştırması için bağlam oluşturma (AssembleResult döndürür) |
compact(params) |
Yöntem | Bağlamı özetleme/azaltma |
assemble, aşağıdakileri içeren bir AssembleResult döndürür:
messagesMessage[]requiredModele gönderilecek sıralı iletiler.
estimatedTokensnumberrequiredMotorun, birleştirilmiş bağlamdaki toplam belirteç sayısına ilişkin tahmini. OpenClaw bunu Compaction eşiği kararları ve tanılama raporlaması için kullanır.
systemPromptAdditionstringSistem isteminin başına eklenir.
promptAuthority"assembled" | "preassembly_may_overflow"Çalıştırıcının önleyici taşma ön denetimleri için hangi belirteç tahminini
kullanacağını denetler. Varsayılan değer "assembled" değeridir; bu,
Compaction'ı yönetmeyen motorlarda yalnızca birleştirilmiş istemin tahmininin
denetlendiği anlamına gelir. ownsCompaction: true değerini ayarlayan motorlar
kendi istem kabul işlemlerini yönetir; bu nedenle OpenClaw varsayılan olarak
genel istem öncesi ön denetimi atlar. Yalnızca birleştirilmiş görünümünüz
temel transkriptteki taşma riskini gizleyebiliyorsa "preassembly_may_overflow"
değerini ayarlayın; bu durumda çalıştırıcı genel ön denetimi etkin tutar ve
önleyici Compaction yapılıp yapılmayacağına karar verirken birleştirilmiş
tahmin ile birleştirme öncesi (pencerelenmemiş) oturum geçmişi tahmininden
büyük olanını kullanır. Her iki durumda da döndürdüğünüz iletiler modelin
gördüğü iletilerdir; promptAuthority yalnızca ön denetimi etkiler.
contextProjectionContextEngineProjectionKalıcı arka uç iş parçacıklarına sahip ana makineler (örneğin Codex app-server) için isteğe bağlı yansıtma yaşam döngüsü. Kararlı bir epoch ile mode: "thread_bootstrap", ana makineden birleştirilmiş bağlamı dönem başına bir kez eklemesini ve her turda yeniden yansıtmak yerine dönem değişene kadar arka uç iş parçacığını yeniden kullanmasını ister. Normal tur başına yansıtma için bu alanı dahil etmeyin.
compact, bir CompactResult döndürür. Compaction etkin oturum
kimliğini değiştirdiğinde, result.sessionTarget (oturum kimliğini ve depo
kapsamını taşıyan türü belirlenmiş bir ContextEngineSessionTarget), sonraki yeniden
denemenin veya turun kullanması gereken ardıl oturumu tanımlar; result.sessionId
ardıl kimliği yansıtır.
İsteğe bağlı üyeler:
| Üye | Tür | Amaç |
|---|---|---|
bootstrap(params) |
Yöntem | Bir oturum için motor durumunu başlatır. Motor bir oturumu ilk kez gördüğünde bir kez çağrılır (ör. geçmişi içe aktarma). |
maintain(params) |
Yöntem | Önyükleme, başarılı bir tur veya Compaction sonrasında transkript bakımı. Güvenli yeniden yazmalar için runtimeContext.rewriteTranscriptEntries() kullanın. |
ingestBatch(params) |
Yöntem | Tamamlanmış bir turu toplu olarak alır. Bir çalıştırma tamamlandıktan sonra o turdaki tüm iletilerle birlikte tek seferde çağrılır. |
afterTurn(params) |
Yöntem | Çalıştırma sonrası yaşam döngüsü işleri (durumu kalıcı hâle getirme, arka planda Compaction tetikleme). |
prepareSubagentSpawn(params) |
Yöntem | Alt oturum başlamadan önce bu oturum için paylaşılan durumu ayarlar. |
onSubagentEnded(params) |
Yöntem | Bir alt ajan sona erdikten sonra temizleme yapar. |
dispose() |
Yöntem | Kaynakları serbest bırakır. Oturum başına değil, Gateway kapatılırken veya Plugin yeniden yüklenirken çağrılır. |
Çalışma zamanı ayarları
OpenClaw içinde çalışan yaşam döngüsü kancaları, isteğe bağlı bir
runtimeSettings nesnesi alır. Bu, sürümlendirilmiş ve salt okunur bir
dahili üretici/tüketici API yüzeyidir: OpenClaw bunu seçilen bağlam motoru için
üretir ve bağlam motoru bunu yaşam döngüsü kancaları içinde tüketir. Doğrudan
kullanıcılara gösterilmez ve özel bir raporlama yüzeyi oluşturmaz.
schemaVersion: şu anda1runtime: OpenClaw ana bilgisayarı, çalışma zamanı modu (normal,fallbackveyadegraded) ve isteğe bağlı test donanımı/çalışma zamanı kimliklericontextEngineSelection: seçilen bağlam motoru kimliği ve seçim kaynağıexecutionHost: kancayı çağıran yüzeyin ana bilgisayar kimliği ve etiketimodel: istenen model, çözümlenen model, sağlayıcı ve isteğe bağlı model ailesilimits: biliniyorsa istem belirteci bütçesi ve maksimum çıktı belirteci sayısıdiagnostics: biliniyorsa kapalı geri dönüş ve düşürülmüş çalışma nedeni kodları
Bilinmeyebilen alanlar null olarak gösterilir; çalışma zamanı modu ve seçim kaynağı gibi
ayırt edici alanlar null değer kabul etmez. Eski motorlar uyumlu kalır:
katı bir eski motor runtimeSettings özelliğini bilinmeyen bir özellik olarak reddederse
OpenClaw, motoru karantinaya almak yerine yaşam döngüsü çağrısını bu özellik olmadan
yeniden dener.
Ana bilgisayar gereksinimleri
Bağlam motorları, info.hostRequirements üzerinde ana bilgisayar yeteneği gereksinimleri bildirebilir.
OpenClaw, işleme başlamadan önce bu gereksinimleri denetler ve seçilen çalışma zamanı
bunları karşılayamadığında açıklayıcı bir hatayla kapalı durumda başarısız olur.
Motorun gerçek model istemini assemble() aracılığıyla denetlemesi gerektiğinde
ajan çalıştırmaları için assemble-before-prompt bildirin:
info: { id: "my-context-engine", name: "Bağlam Motorum", hostRequirements: { "agent-run": { requiredCapabilities: ["assemble-before-prompt"], unsupportedMessage: "Yerel Codex veya OpenClaw gömülü çalışma zamanını kullanın ya da eski bağlam motorunu seçin.", }, },}Yerel Codex ve OpenClaw gömülü ajan çalıştırmaları assemble-before-prompt gereksinimini karşılar.
Genel CLI arka uçları bunu karşılamaz; bu nedenle bu yeteneği gerektiren motorlar
CLI işlemi başlamadan önce reddedilir.
Hata yalıtımı
OpenClaw, seçilen plugin motorunu çekirdek yanıt yolundan yalıtır. Eski olmayan bir
motor eksikse, sözleşme doğrulamasını geçemezse, fabrika oluşturulurken hata fırlatırsa
veya bir yaşam döngüsü yönteminden hata fırlatırsa OpenClaw, söz konusu motoru mevcut
Gateway işlemi için karantinaya alır ve bağlam motoru işlemlerini yerleşik
legacy motoruna düşürür. Hata, başarısız işlemle birlikte günlüğe kaydedilir;
böylece operatör, ajan sessiz kalmadan plugin'i onarabilir, güncelleyebilir veya devre dışı
bırakabilir.
Ana bilgisayar gereksinimi hataları farklıdır: Bir motor, çalışma zamanında gerekli bir yeteneğin bulunmadığını bildirdiğinde OpenClaw, çalıştırmayı başlatmadan önce kapalı durumda başarısız olur. Bu, desteklenmeyen bir ana bilgisayarda çalışmaları hâlinde durumu bozacak motorları korur.
ownsCompaction
ownsCompaction, OpenClaw çalışma zamanının yerleşik deneme içi otomatik Compaction özelliğinin çalıştırma için etkin kalıp kalmayacağını denetler:
ownsCompaction: true
Compaction davranışının sahibi motordur. OpenClaw, söz konusu çalıştırma için OpenClaw çalışma zamanının yerleşik otomatik Compaction özelliğini ve istem öncesi genel taşma ön denetimini devre dışı bırakır; motorun compact() uygulaması /compact, sağlayıcı taşması kurtarma Compaction'ı ve afterTurn() içinde gerçekleştirmek istediği tüm proaktif Compaction işlemlerinden sorumludur. Motor, assemble() sonucunda promptAuthority: "preassembly_may_overflow" döndürdüğünde OpenClaw yine de istem öncesi taşma korumasını çalıştırır.
ownsCompaction: false veya ayarlanmamış
OpenClaw çalışma zamanının yerleşik otomatik Compaction özelliği istem yürütme sırasında çalışmaya devam edebilir; ancak etkin motorun compact() yöntemi /compact ve taşma kurtarma için yine de çağrılır.
Bu, iki geçerli plugin kalıbı olduğu anlamına gelir:
Sahiplik modu
Kendi Compaction algoritmanızı uygulayın ve ownsCompaction: true değerini ayarlayın.
Yetkilendirme modu
ownsCompaction: false değerini ayarlayın ve OpenClaw'ın yerleşik Compaction davranışını kullanmak için compact() yönteminin openclaw/plugin-sdk/core üzerinden delegateCompactionToRuntime(...) çağrısı yapmasını sağlayın.
Hiçbir işlem yapmayan bir compact(), etkin ve sahip olmayan bir motor için güvenli değildir; çünkü söz konusu motor yuvasının normal /compact ve taşma kurtarma Compaction yolunu devre dışı bırakır.
Yapılandırma referansı
{ plugins: { slots: { // Etkin bağlam motorunu seçin. Varsayılan: "legacy". // Bir plugin motoru kullanmak için bir plugin kimliğine ayarlayın. contextEngine: "legacy", }, },}Compaction ve bellekle ilişkisi
Compaction
Compaction, bağlam motorunun sorumluluklarından biridir. Eski motor, işlemi OpenClaw'ın yerleşik özetleme özelliğine devreder. Plugin motorları herhangi bir Compaction stratejisi (DAG özetleri, vektör erişimi vb.) uygulayabilir.
Bellek plugin'leri
Bellek plugin'leri (plugins.slots.memory) bağlam motorlarından ayrıdır. Bellek plugin'leri arama/erişim sağlar; bağlam motorları ise modelin ne göreceğini denetler. Birlikte çalışabilirler: Bir bağlam motoru, birleştirme sırasında bellek plugini verilerini kullanabilir. Etkin bellek istem yolunu kullanmak isteyen plugin motorları, bellek plugini düzenini açığa çıkarmadan ana bilgisayar tarafından hazırlanmış bellek istemi bölümlerini başa eklenmeye hazır bir systemPromptAddition biçimine dönüştüren openclaw/plugin-sdk/core içindeki buildMemorySystemPromptAddition(...) öğesini kullanmalıdır.
Oturum budama
Bellekteki eski araç sonuçlarını kırpma işlemi, hangi bağlam motorunun etkin olduğundan bağımsız olarak çalışmaya devam eder.
İpuçları
- Motorunuzun doğru şekilde yüklendiğini doğrulamak için
openclaw doctorkullanın. - Motorlar arasında geçiş yapıldığında mevcut oturumlar geçerli geçmişleriyle devam eder. Yeni motor, gelecekteki çalıştırmaları devralır.
- Motor hataları günlüğe kaydedilir ve seçilen plugin motoru mevcut Gateway işlemi için karantinaya alınır. Yanıtların devam edebilmesi için OpenClaw, kullanıcı turlarında
legacyseçeneğine geri döner; ancak bozuk plugin'i yine de onarmalı, güncellemeli, devre dışı bırakmalı veya kaldırmalısınız. - Geliştirme için yerel bir plugin dizinini kopyalamadan bağlamak üzere
openclaw plugins install -l ./my-enginekullanın.
İlgili
- Compaction - uzun konuşmaları özetleme
- Bağlam - ajan turları için bağlamın nasıl oluşturulduğu
- Plugin Mimarisi - bağlam motoru plugin'lerini kaydetme
- Plugin manifesti - plugin manifesti alanları
- Plugin'ler - plugin'e genel bakış