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 kontrol eder: hangi iletilerin ekleneceğ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 bunu varsayılan olarak kullanır - çoğu kullanıcının bunu değiştirmesi gerekmez. Yalnızca farklı bir birleştirme, Compaction veya oturumlar arası hatırlama davranışı istediğinizde 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 Plugin'leri diğer tüm OpenClaw Plugin'leri gibi kurulur.
npm'den
openclaw plugins install @martian-engineering/lossless-clawYerel bir yoldan
openclaw plugins install -l ./my-context-engineMotoru etkinleştirin ve seçin
// openclaw.json{ plugins: { slots: { contextEngine: "lossless-claw", // plugin'in kayıtlı motor id'siyle eşleşmelidir }, entries: { "lossless-claw": { enabled: true, // Plugin'e özgü yapılandırma buraya gelir (plugin'in belgelerine bakın) }, }, },}Kurulum ve yapılandırmadan sonra gateway'i yeniden başlatın.
legacy'ye geri dönün (isteğe bağlı)
contextEngine değerini "legacy" olarak ayarlayın (veya anahtarı tamamen kaldırın - "legacy" varsayılandır).
Nasıl çalışır?
OpenClaw her model istemi çalıştırdığında, bağlam motoru dört yaşam döngüsü noktasında yer alır:
1. İçeri 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, token bütçesine sığan sıralı bir ileti kümesi (ve isteğe bağlı bir systemPromptAddition) döndürür.
3. Compact
Bağlam penceresi dolduğunda veya kullanıcı /compact çalıştırdığında çağrılır. Motor, yer açmak için eski geçmişi özetler.
4. Turdan sonra
Bir çalıştırma tamamlandıktan sonra çağrılır. Motor durumu kalıcı hale getirebilir, arka plan Compaction'ını tetikleyebilir veya dizinleri güncelleyebilir.
Paketle gelen ACP dışı Codex araç takımı için OpenClaw, birleştirilmiş bağlamı Codex geliştirici talimatlarına ve geçerli tur istemine yansıtarak aynı yaşam döngüsünü uygular. Codex hâlâ kendi yerel iş parçacığı geçmişinin ve yerel sıkıştırıcısının sahibidir.
Alt ajan yaşam döngüsü (isteğe bağlı)
OpenClaw iki isteğe bağlı alt ajan yaşam döngüsü kancasını çağırır:
prepareSubagentSpawnmethodBir alt çalıştırma başlamadan önce paylaşılan bağlam durumunu hazırlar. Kanca ebeveyn/alt oturum anahtarlarını, contextMode değerini (isolated veya fork), kullanılabilir transkript id'lerini/dosyalarını ve isteğe bağlı TTL'yi alır. Bir geri alma tanıtıcısı döndürürse, hazırlık başarılı olduktan sonra spawn başarısız olduğunda OpenClaw bunu çağırır. lightContext isteyen ve contextMode="isolated" olarak çözümlenen yerel alt ajan spawn'ları, alt öğenin bağlam motoru tarafından yönetilen spawn öncesi durumu olmadan hafif bootstrap 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 temizler.
Sistem istemi eklemesi
assemble yöntemi bir systemPromptAddition dizesi döndürebilir. OpenClaw bunu çalıştırmanın sistem isteminin başına ekler. Bu, motorların statik çalışma alanı dosyaları gerektirmeden dinamik hatırlama yönlendirmesi, geri getirme talimatları veya bağlama duyarlı ipuçları enjekte etmesini sağlar.
legacy motoru
Yerleşik legacy motoru, OpenClaw'ın özgün davranışını korur:
- İçeri alma: işlem yok (oturum yöneticisi ileti kalıcılığını doğrudan işler).
- Birleştirme: geçiş (runtime'daki mevcut temizle → doğrula → sınırla hattı bağlam birleştirmeyi işler).
- Compact: eski iletilerin tek bir özetini oluşturan ve son iletileri olduğu gibi tutan yerleşik özetleme Compaction'ına devreder.
- Turdan sonra: işlem yok.
legacy motoru araç kaydetmez veya systemPromptAddition sağlamaz.
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 }) { // Store the message in your data store return { ingested: true }; }, async assemble({ sessionId, messages, tokenBudget, availableTools, citationsMode }) { // Return messages that fit the budget return { messages: buildContext(messages, tokenBudget), estimatedTokens: countTokens(messages), systemPromptAddition: buildMemorySystemPromptAddition({ availableTools: availableTools ?? new Set(), citationsMode, }), }; }, async compact({ sessionId, force }) { // Summarize older context return { ok: true, compacted: true }; }, }));}ctx fabrikası, Plugin'lerin ilk yaşam döngüsü kancası çalışmadan önce ajan başına veya çalışma alanı başına durumu başlatabilmesi için isteğe bağlı config, agentDir ve workspaceDir
değerlerini içerir.
Ardından yapılandırmada etkinleştirin:
{ plugins: { slots: { contextEngine: "my-engine", }, entries: { "my-engine": { enabled: true, }, }, },}ContextEngine arayüzü
Zorunlu üyeler:
| Üye | Tür | Amaç |
|---|---|---|
info |
Özellik | Motor id'si, adı, sürümü ve Compaction'ın sahibi olup olmadığı |
ingest(params) |
Yöntem | Tek bir iletiyi sakla |
assemble(params) |
Yöntem | Bir model çalıştırması için bağlam oluştur (AssembleResult döndürür) |
compact(params) |
Yöntem | Bağlamı özetle/azalt |
assemble, şunları içeren bir AssembleResult döndürür:
messagesMessage[]requiredModele gönderilecek sıralı iletiler.
estimatedTokensnumberrequiredBirleştirilmiş bağlamdaki toplam token sayısına ilişkin motor 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 token tahminini kullandığını kontrol eder. Varsayılan değer "assembled" olur; bu, Compaction'ın sahibi olmayan motorlar için yalnızca birleştirilmiş istemin tahmininin denetlendiği anlamına gelir. ownsCompaction: true ayarlayan motorlar kendi istem kabul süreçlerini yönetir; bu nedenle OpenClaw genel istem öncesi ön denetimi varsayılan olarak atlar. "preassembly_may_overflow" değerini yalnızca birleştirilmiş görünümünüz alttaki transkriptteki taşma riskini gizleyebildiğinde ayarlayın; çalıştırıcı bu durumda genel ön denetimi etkin tutar ve önleyici Compaction yapıp yapmayacağına karar verirken birleştirilmiş tahmin ile birleştirme öncesi (pencerelenmemiş) oturum geçmişi tahmininin maksimumunu alır. Her iki durumda da döndürdüğünüz iletiler modelin gördüğü şeydir - promptAuthority yalnızca ön denetimi etkiler.
compact, bir CompactResult döndürür. Compaction etkin transkripti döndürdüğünde, result.sessionId ve result.sessionFile sonraki yeniden denemenin veya turun kullanması gereken ardıl oturumu tanımlar.
İsteğe bağlı üyeler:
| Üye | Tür | Amaç |
|---|---|---|
bootstrap(params) |
Yöntem | Bir oturum için motor durumunu başlat. Motor bir oturumu ilk gördüğünde bir kez çağrılır (örn. geçmişi içe aktarma). |
ingestBatch(params) |
Yöntem | Tamamlanmış bir turu toplu olarak içeri al. Bir çalıştırma tamamlandıktan sonra, o turdaki tüm iletilerle birlikte çağrılır. |
afterTurn(params) |
Yöntem | Çalıştırma sonrası yaşam döngüsü işi (durumu kalıcı hale getirme, arka plan Compaction'ını tetikleme). |
prepareSubagentSpawn(params) |
Yöntem | Başlamadan önce alt oturum için paylaşılan durumu kur. |
onSubagentEnded(params) |
Yöntem | Bir alt ajan sona erdikten sonra temizle. |
dispose() |
Yöntem | Kaynakları serbest bırak. Gateway kapatma veya Plugin yeniden yükleme sırasında çağrılır - oturum başına değil. |
Runtime 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ş, salt okunur bir iç
üretici/tüketici API yüzeyidir: OpenClaw bunu seçili bağlam
motoru için üretir ve bağlam motoru bunu yaşam döngüsü kancaları içinde tüketir. Kullanıcılara doğrudan gösterilmez ve özel bir raporlama yüzeyi oluşturmaz.
schemaVersion: şu anda1runtime: OpenClaw barındırıcısı, runtime modu (normal,fallbackveyadegraded) ve isteğe bağlı araç takımı/runtime id'lericontextEngineSelection: seçili bağlam motoru id'si ve seçim kaynağıexecutionHost: kancayı çağıran yüzey için barındırıcı id'si ve etiketimodel: istenen model, çözümlenen model, sağlayıcı ve isteğe bağlı model ailesilimits: bilindiğinde istem token bütçesi ve maksimum çıktı token'larıdiagnostics: bilindiğinde kapalı fallback ve degraded neden kodları
Bilinmeyen olabilecek alanlar null olarak temsil edilir; runtime modu ve seçim kaynağı gibi ayırıcı alanlar null yapılamaz kalır. Eski motorlar uyumlu kalır: katı bir eski motor runtimeSettings değerini bilinmeyen bir özellik olarak reddederse, OpenClaw motoru karantinaya almak yerine yaşam döngüsü çağrısını onsuz yeniden dener.
Barındırıcı gereksinimleri
Bağlam motorları, info.hostRequirements üzerinde barındırıcı yetenek gereksinimleri bildirebilir.
OpenClaw, işleme başlamadan önce bu gereksinimleri denetler ve seçili runtime bunları karşılayamadığında açıklayıcı bir hatayla kapalı şekilde başarısız olur.
Ajan çalıştırmaları için, motor gerçek model istemini assemble() aracılığıyla kontrol etmeliyse assemble-before-prompt bildirin:
info: { id: "my-context-engine", name: "My Context Engine", hostRequirements: { "agent-run": { requiredCapabilities: ["assemble-before-prompt"], unsupportedMessage: "Use the native Codex or OpenClaw embedded runtime, or select the legacy context engine.", }, },}Yerel Codex ve OpenClaw gömülü ajan çalıştırmaları assemble-before-prompt özelliğini karşılar.
Genel CLI arka uçları karşılamaz; bu nedenle bunu gerektiren motorlar CLI süreci 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ında başarısız olursa, fabrika oluşturma sırasında hata
fırlatırsa veya bir yaşam döngüsü yönteminden hata fırlatırsa, OpenClaw bu motoru
geçerli Gateway işlemi için karantinaya alır ve bağlam motoru işini
yerleşik legacy motora düşürür. Hata, başarısız işlemle birlikte günlüğe yazılır; böylece
operatör, ajan sessiz kalmadan Plugin’i onarabilir, güncelleyebilir veya devre dışı bırakabilir.
Ana makine gereksinimi hataları farklıdır: Bir motor, bir çalışma zamanının gerekli bir yetenekten yoksun olduğunu bildirirse, OpenClaw çalıştırmayı başlatmadan önce kapalı hata verir. Bu, desteklenmeyen bir ana makinede çalıştıklarında durumu bozabilecek 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
Motor, Compaction davranışının sahibidir. OpenClaw, bu çalıştırma için OpenClaw çalışma zamanının yerleşik otomatik Compaction özelliğini ve genel istem öncesi taşma ön denetimini devre dışı bırakır; motorun compact() uygulaması /compact, sağlayıcı taşma kurtarma Compaction’ı ve afterTurn() içinde yapmak istediği tüm proaktif Compaction işlemlerinden sorumludur. Motor assemble() içinden promptAuthority: "preassembly_may_overflow" döndürdüğünde OpenClaw istem öncesi taşma korumasını yine ç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 yine çalışabilir, ancak etkin motorun compact() yöntemi /compact ve taşma kurtarma için yine de çağrılır.
Bu, iki geçerli Plugin deseni olduğu anlamına gelir:
Sahiplenme modu
Kendi Compaction algoritmanızı uygulayın ve ownsCompaction: true ayarlayın.
Yetkilendirme modu
ownsCompaction: false ayarlayın ve OpenClaw’ın yerleşik Compaction davranışını kullanmak için compact() içinde openclaw/plugin-sdk/core üzerinden delegateCompactionToRuntime(...) çağırın.
İşlem yapmayan bir compact(), etkin ve sahiplenmeyen bir motor için güvenli değildir; çünkü bu motor yuvası için normal /compact ve taşma kurtarma Compaction yolunu devre dışı bırakır.
Yapılandırma başvurusu
{ 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 bellek ile ilişkisi
Compaction
Compaction, bağlam motorunun sorumluluklarından biridir. Eski motor, OpenClaw’ın yerleşik özetleme özelliğine yetki verir. Plugin motorları herhangi bir Compaction stratejisi uygulayabilir (DAG özetleri, vektör geri getirme vb.).
Bellek Plugin’leri
Bellek Plugin’leri (plugins.slots.memory), bağlam motorlarından ayrıdır. Bellek Plugin’leri arama/geri getirme sağlar; bağlam motorları modelin ne göreceğini denetler. Birlikte çalışabilirler - bir bağlam motoru derleme sırasında bellek Plugin’i verilerini kullanabilir. Etkin bellek istem yolunu isteyen Plugin motorları, etkin bellek istem bölümlerini başa eklenmeye hazır bir systemPromptAddition değerine dönüştüren openclaw/plugin-sdk/core içindeki buildMemorySystemPromptAddition(...) öğesini tercih etmelidir. Bir motor daha düşük düzeyli denetime ihtiyaç duyarsa, buildActiveMemoryPromptSection(...) aracılığıyla openclaw/plugin-sdk/memory-host-core üzerinden ham satırları yine çekebilir.
Oturum budama
Eski araç sonuçlarının bellekte kırpılması, hangi bağlam motoru etkin olursa olsun çalışmaya devam eder.
İpuçları
- Motorunuzun doğru yüklendiğini doğrulamak için
openclaw doctorkullanın. - Motorları değiştiriyorsanız, mevcut oturumlar geçerli geçmişleriyle devam eder. Yeni motor gelecekteki çalıştırmalar için devralır.
- Motor hataları günlüğe yazılır ve seçilen Plugin motoru geçerli Gateway işlemi için karantinaya alınır. Yanıtların devam edebilmesi için OpenClaw kullanıcı turlarında
legacydeğerine 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 manifest’i - Plugin manifest alanları
- Plugin’ler - Plugin genel bakışı