Fundamentals
Bağlam motoru
Bir bağlam motoru, OpenClaw'ın her çalışma için model bağlamını nasıl oluşturacağını denetler: hangi iletilerin dahil edileceği, eski geçmişin nasıl özetleneceği ve alt ajan sınırları boyunca bağlamın nasıl yönetileceği.
OpenClaw, yerleşik bir legacy motoruyla gelir ve varsayılan olarak bunu kullanır - çoğu kullanıcının bunu değiştirmesi gerekmez. Bir Plugin motorunu yalnızca farklı derleme, Compaction veya oturumlar arası hatırlama davranışı istediğinizde kurup seçin.
Hızlı başlangıç
Hangi motorun etkin olduğunu denetleyin
openclaw doctor
# or inspect config directly:
cat ~/.openclaw/openclaw.json | jq '.plugins.slots.contextEngine'
Bir Plugin motoru kurun
Bağlam motoru Plugin'leri, diğer OpenClaw Plugin'leri gibi kurulur.
npm'den
openclaw plugins install @martian-engineering/lossless-claw
Yerel bir yoldan
openclaw plugins install -l ./my-context-engine
Motoru etkinleştirin ve seçin
// openclaw.json
{
plugins: {
slots: {
contextEngine: "lossless-claw", // must match the plugin's registered engine id
},
entries: {
"lossless-claw": {
enabled: true,
// Plugin-specific config goes here (see the plugin's docs)
},
},
},
}
Kurup yapılandırdıktan 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. Alma
Oturuma yeni bir ileti eklendiğinde çağrılır. Motor, iletiyi kendi veri deposunda saklayabilir veya dizine ekleyebilir.
2. Derleme
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. Sıkıştırma
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. Tur sonrası
Bir çalışma tamamlandıktan sonra çağrılır. Motor durumu kalıcı hale getirebilir, arka plan Compaction'ı tetikleyebilir veya dizinleri güncelleyebilir.
Paketli ACP dışı Codex koşum takımı için OpenClaw, derlenen bağlamı Codex geliştirici talimatlarına ve geçerli tur istemine yansıtarak aynı yaşam döngüsünü uygular. Codex, yerel iş parçacığı geçmişine ve yerel sıkıştırıcısına sahip olmaya devam eder.
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ı çağırır:
prepareSubagentSpawnmethodBir alt çalışma başlamadan önce paylaşılan bağlam durumunu hazırlar. Kanca üst/alt oturum anahtarlarını, contextMode değerini (isolated veya fork), kullanılabilir transkript kimliklerini/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 oluşturma başarısız olduğunda OpenClaw bunu çağırır.
onSubagentEndedmethodBir alt ajan oturumu tamamlandığında veya süpürüldüğünde temizlik yapar.
Sistem istemi eklemesi
assemble yöntemi bir systemPromptAddition dizesi döndürebilir. OpenClaw bunu çalışma için sistem isteminin başına ekler. Bu, motorların statik çalışma alanı dosyaları gerektirmeden dinamik hatırlama rehberliği, alma talimatları veya bağlam duyarlı ipuçları eklemesini sağlar.
legacy motoru
Yerleşik legacy motoru, OpenClaw'ın özgün davranışını korur:
- Alma: işlem yapmaz (oturum yöneticisi ileti kalıcılığını doğrudan yönetir).
- Derleme: geçişli (çalışma zamanındaki mevcut temizle → doğrula → sınırla işlem hattı bağlam derlemesini yönetir).
- Sıkıştırma: eski iletilerin tek bir özetini oluşturan ve son iletileri olduğu gibi tutan yerleşik özetleme Compaction'ına devreder.
- Tur sonrası: işlem yapmaz.
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ı, ilk yaşam döngüsü kancası çalışmadan önce Plugin'lerin 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 kimliği, adı, sürümü ve Compaction'a sahip olup olmadığı |
ingest(params) |
Yöntem | Tek bir iletiyi saklar |
assemble(params) |
Yöntem | Bir model çalışması için bağlam oluşturur (AssembleResult döndürür) |
compact(params) |
Yöntem | Bağlamı özetler/azaltır |
assemble, şunları içeren bir AssembleResult döndürür:
messagesMessage[]requiredModele gönderilecek sıralı iletiler.
estimatedTokensnumberrequiredMotorun derlenen bağlamdaki toplam token 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"Koşucunun önleyici taşma ön kontrolleri için hangi token tahminini kullanacağını denetler. Varsayılan değer "assembled"'dır; bu, yalnızca derlenen istemin tahmininin denetlendiği anlamına gelir - pencerelenmiş, kendi kendine yeterli bir bağlam döndüren motorlar için uygundur. Derlenen görünümünüz yalnızca alttaki transkriptte taşma riskini gizleyebildiğinde "preassembly_may_overflow" olarak ayarlayın; bu durumda koşucu, önleyici olarak Compaction yapıp yapmayacağına karar verirken derlenen tahmin ile derleme öncesi (pencerelenmemiş) oturum geçmişi tahmininin maksimumunu alır. Her iki durumda da döndürdüğünüz iletiler yine modelin gördükleridir - promptAuthority yalnızca ön kontrolü etkiler.
compact bir CompactResult döndürür. Compaction etkin
transkripti döndürdüğünde, result.sessionId ve result.sessionFile bir 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ır. Motor bir oturumu ilk gördüğünde bir kez çağrılır (ör. geçmişi içe aktarma). |
ingestBatch(params) |
Yöntem | Tamamlanmış bir turu toplu olarak alır. Bir çalışma tamamlandıktan sonra, o turdaki tüm iletilerle bir kez çağrılır. |
afterTurn(params) |
Yöntem | Çalışma sonrası yaşam döngüsü işi (durumu kalıcı hale getirme, arka plan Compaction'ı tetikleme). |
prepareSubagentSpawn(params) |
Yöntem | Başlamadan önce bir alt oturum için paylaşılan durumu ayarlar. |
onSubagentEnded(params) |
Yöntem | Bir alt ajan sona erdikten sonra temizlik yapar. |
dispose() |
Yöntem | Kaynakları serbest bırakır. Gateway kapatılırken veya Plugin yeniden yüklenirken çağrılır - oturum başına değil. |
ownsCompaction
ownsCompaction, Pi'nin yerleşik deneme içi otomatik Compaction'ının çalışma için etkin kalıp kalmayacağını denetler:
ownsCompaction: true
Motor Compaction davranışına sahiptir. OpenClaw, bu çalışma için Pi'nin yerleşik otomatik Compaction'ını devre dışı bırakır ve motorun compact() uygulaması /compact, taşma kurtarma Compaction'ı ve afterTurn() içinde yapmak istediği her türlü proaktif Compaction'dan sorumludur. OpenClaw yine de istem öncesi taşma korumasını çalıştırabilir; tam transkriptin taşacağını öngördüğünde kurtarma yolu, başka bir istem göndermeden önce etkin motorun compact() yöntemini çağırır.
ownsCompaction: false veya ayarlanmamış
Pi'nin yerleşik otomatik Compaction'ı istem yürütme sırasında yine çalışabilir, ancak etkin motorun compact() yöntemi /compact ve taşma kurtarma için yine ç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 olarak ayarlayın.
Devretme modu
ownsCompaction: false olarak ayarlayın ve OpenClaw'ın yerleşik Compaction davranışını kullanmak için compact() yönteminin openclaw/plugin-sdk/core içinden delegateCompactionToRuntime(...) çağırmasını sağlayın.
İşlem yapmayan bir compact(), etkin sahiplenmeyen bir motor için güvenli değildir; çünkü o motor yuvası için normal /compact ve taşma kurtarma Compaction yolunu devre dışı bırakır.
Yapılandırma başvurusu
{
plugins: {
slots: {
// Select the active context engine. Default: "legacy".
// Set to a plugin id to use a plugin engine.
contextEngine: "legacy",
},
},
}
Compaction ve bellekle ilişki
Compaction
Compaction, bağlam motorunun sorumluluklarından biridir. Eski motor, OpenClaw'ın yerleşik özetlemesine yetki devreder. Plugin motorları herhangi bir compaction stratejisini 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 kontrol eder. Birlikte çalışabilirler - bir bağlam motoru, derleme sırasında bellek Plugin verilerini kullanabilir. Etkin bellek istemi yolunu isteyen Plugin motorları, etkin bellek istemi 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 kontrole ihtiyaç duyarsa, buildActiveMemoryPromptSection(...) aracılığıyla openclaw/plugin-sdk/memory-host-core üzerinden ham satırları yine de çekebilir.
Oturum budama
Eski araç sonuçlarını bellekte kırpma işlemi, hangi bağlam motorunun etkin olduğundan bağımsız olarak ç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 kaydedilir ve tanılamalarda gösterilir. Bir Plugin motoru kaydolamazsa veya seçilen motor kimliği çözümlenemezse, OpenClaw otomatik olarak geri dönmez; Plugin'i düzeltene veya
plugins.slots.contextEnginedeğerini tekrar"legacy"olarak değiştirene kadar çalıştırmalar başarısız olur. - 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 dönüşleri için bağlamın nasıl oluşturulduğu
- Plugin Mimarisi - bağlam motoru Plugin'lerini kaydetme
- Plugin manifesti - Plugin manifest alanları
- Plugin'ler - Plugin genel bakışı