CLI commands
Doktor
openclaw doctor
Gateway, kanallar, Pluginler, Skills, model yönlendirme, yerel durum ve yapılandırma geçişleri için sistem durumu denetimleri ve hızlı düzeltmeler. Bir şey beklendiği gibi çalışmadığında ve sorunun ne olduğunu tek bir komutla açıklamak istediğinizde bunu kullanın.
Gateway durumu, performansı düşmüş SecretRef sahipleri bildirdiğinde doctor, her soğuk veya eski sahip, etkilenen yapılandırma yolu, düzeltilmiş neden ve openclaw secrets reload yeniden deneme komutuyla birlikte bir Gizli anahtar çalışma zamanı performans düşüşü uyarısı yazdırır.
Kanal giriş olayları teslim edilemeyenler kuyruğuna alındığında doctor, etkilenen her kanal hesabını adlandırır ve inceleme ile kurtarma için openclaw channels dead-letters list bölümüne yönlendirir.
İlgili:
- Sorun giderme: Sorun giderme
- Güvenlik denetimi: Güvenlik
Duruşlar
Doctor beş duruşa sahiptir:
| Duruş | Komut | Davranış |
|---|---|---|
| İnceleme | openclaw doctor |
İnsan odaklı denetimler ve yönlendirmeli istemler. |
| Onarım | openclaw doctor --fix |
Etkileşimsiz onarım güvenli olmadığı sürece istemleri kullanarak desteklenen onarımları uygular. |
| Lint | openclaw doctor --lint |
CI, ön kontrol ve inceleme kapıları için salt okunur yapılandırılmış bulgular. |
| Paylaşılan SQLite bakımı | openclaw doctor --state-sqlite compact |
Standart paylaşılan durum veritabanına açıkça denetim noktası uygular, onu sıkıştırır ve doğrular. |
| Oturum SQLite geçişi | openclaw doctor --session-sqlite <mode> |
Oturum durumunu inceler, içe aktarır, doğrular, sıkıştırır, kurtarır veya geri yükler. |
Otomasyon kararlı bir sonuca ihtiyaç duyduğunda --lint seçeneğini tercih edin. Bir insan operatör doctor'ın yapılandırmayı veya durumu düzenlemesini istediğinde --fix seçeneğini tercih edin.
Örnekler
openclaw doctoropenclaw doctor --lintopenclaw doctor --lint --jsonopenclaw doctor --lint --severity-min warningopenclaw doctor --lint --allopenclaw doctor --lint --allow-execopenclaw doctor --deepopenclaw doctor --fixopenclaw doctor --fix --non-interactiveopenclaw doctor --generate-gateway-tokenopenclaw doctor --post-upgradeopenclaw doctor --post-upgrade --jsonopenclaw doctor --state-sqlite compactopenclaw doctor --state-sqlite compact --jsonopenclaw doctor --session-sqlite inspect --session-sqlite-all-agentsopenclaw doctor --session-sqlite dry-run --session-sqlite-agent main --jsonopenclaw doctor --session-sqlite import --session-sqlite-all-agentsopenclaw doctor --session-sqlite validate --session-sqlite-all-agents --jsonopenclaw doctor --session-sqlite compact --session-sqlite-all-agentsopenclaw doctor --session-sqlite recover --github-issueopenclaw doctor --session-sqlite restore --session-sqlite-all-agentsKanala özgü izinler için doctor yerine kanal yoklamalarını kullanın:
openclaw channels capabilities --channel discord --target channel:<channel-id>openclaw channels status --probechannels capabilities, belirli bir kanal hedefi için botun geçerli izinlerini bildirir. channels status --probe, yapılandırılmış tüm kanalları ve sese otomatik katılma hedeflerini denetler.
Seçenekler
| Seçenek | Etki |
|---|---|
--no-workspace-suggestions |
Çalışma alanı belleği/arama önerilerini devre dışı bırakır. |
--yes |
İstemde bulunmadan varsayılanları kabul eder. |
--repair / --fix |
İstemde bulunmadan önerilen hizmet dışı onarımları uygular (--fix bir diğer addır). Gateway hizmeti kurulumları/yeniden yazımları hâlâ etkileşimli onay veya açık gateway komutları gerektirir. |
--force |
Özel hizmet yapılandırmasının üzerine yazmak da dâhil olmak üzere kapsamlı onarımları uygular. |
--non-interactive |
İstemler olmadan çalışır; yalnızca güvenli geçişler ve hizmet dışı onarımlar. |
--generate-gateway-token |
Bir Gateway belirteci oluşturur ve yapılandırır. |
--allow-exec |
Gizli anahtarları doğrularken doctor'ın yapılandırılmış exec SecretRef'lerini yürütmesine izin verir. |
--deep |
Ek Gateway kurulumları için sistem hizmetlerini tarar; yakın zamandaki Gateway gözetmen yeniden başlatma devirlerini bildirir. |
--lint |
Modernleştirilmiş sistem durumu denetimlerini salt okunur modda çalıştırır ve tanılama bulguları üretir. |
--post-upgrade |
Yükseltme sonrası Plugin uyumluluk yoklamalarını çalıştırır; bulgular standart çıktıya gider; herhangi bir hata düzeyi bulgusu varsa çıkış kodu 1 olur. |
--state-sqlite <mode> |
Açık paylaşılan durum SQLite bakımını çalıştırır. Tek mod compact modudur. |
--session-sqlite <mode> |
Hedeflenen oturum SQLite geçiş modunu çalıştırır: inspect, dry-run, import, validate, compact, recover veya restore. |
--session-sqlite-store <path> |
--session-sqlite ile: eski bir sessions.json depo yolu seçer. |
--session-sqlite-agent <id> |
--session-sqlite ile: yapılandırılmış bir ajan seçer. |
--session-sqlite-all-agents |
--session-sqlite ile: yapılandırılmış ve keşfedilmiş ajan depolarını seçer. |
--github-issue |
--session-sqlite recover ile: temizlenmiş bir openclaw/openclaw sorun raporu hazırlar; doctor, --yes veya etkileşimli onay sonrasında bunu gh ile oluşturur. |
--json |
--lint ile: JSON bulguları. --post-upgrade ile: { probesRun, findings }. --state-sqlite veya --session-sqlite ile: bakım raporu JSON biçiminde. |
--severity-min <level> |
--lint ile: info, warning veya error düzeyinin altındaki bulguları çıkarır. |
--all |
--lint ile: varsayılan kümeden hariç tutulan isteğe bağlı denetimler dâhil olmak üzere kayıtlı tüm denetimleri çalıştırır. |
--skip <id> |
--lint ile: bir denetim kimliğini atlar. Tekrarlanabilir. |
--only <id> |
--lint ile: yalnızca belirtilen denetim kimliklerini çalıştırır. Tekrarlanabilir. |
--severity-min, --all, --only ve --skip yalnızca --lint ile birlikte kabul edilir; --json, --lint, --post-upgrade, --state-sqlite ve --session-sqlite ile kabul edilir.
Lint modu
openclaw doctor --lint salt okunurdur: istem, onarım veya yapılandırma/durum yeniden yazımı yoktur.
openclaw doctor --lintopenclaw doctor --lint --severity-min warningopenclaw doctor --lint --jsonopenclaw doctor --lint --allopenclaw doctor --lint --allow-execopenclaw doctor --lint --only core/doctor/gateway-config --jsonopenclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min infoİnsanlara yönelik çıktı kısadır:
doctor --lint: 6 denetim çalıştırıldı, 1 bulgu bulundu [warning] core/doctor/gateway-config gateway.mode - gateway.mode ayarlanmamış; Gateway başlatma işlemi engellenecek. düzeltme: `openclaw configure` komutunu çalıştırıp Gateway modunu (local/remote) ayarlayın veya `openclaw config set gateway.mode local` komutunu çalıştırın.JSON çıktısı, betik oluşturma yüzeyidir:
{ "ok": false, "checksRun": 5, "checksSkipped": 0, "findings": [ { "checkId": "core/doctor/gateway-config", "severity": "warning", "message": "gateway.mode ayarlanmamış; Gateway başlatma işlemi engellenecek.", "path": "gateway.mode", "fixHint": "`openclaw configure` komutunu çalıştırıp Gateway modunu (local/remote) ayarlayın veya `openclaw config set gateway.mode local` komutunu çalıştırın." } ]}Çıkış kodları:
| Kod | Anlam |
|---|---|
0 |
Seçilen önem eşiğinde veya üzerinde bulgu yok. |
1 |
En az bir bulgu seçilen eşiği karşılıyor. |
2 |
Lint bulguları üretilemeden önce komut/çalışma zamanı hatası. |
--severity-min, hem hangi bulguların yazdırılacağını hem de çıkış eşiğini denetler: daha düşük önem dereceli info/warning bulguları mevcut olsa bile openclaw doctor --lint --severity-min error hiçbir şey yazdırmadan 0 koduyla çıkabilir.
--all, önem derecesi filtrelemesinden önce hangi denetimlerin seçileceğini belirler. Varsayılan lint çalıştırması derin, geçmişe yönelik veya onarılabilir eski kalıntıları ortaya çıkarma olasılığı daha yüksek olan denetimleri hariç tutar; eksiksiz envanter için --all kullanın. --only <id> en hassas seçicidir ve kayıtlı herhangi bir denetimi kimliğine göre çalıştırabilir.
core/doctor/local-audio-acceleration, bir konuşma modeli yüklemeden otomatik seçilen yerel STT komutunu, ayrı yeterli/istenen/gözlemlenen arka uç kanıtlarını ve geri dönüş sırasını bildirir. Bilgilendirici bir bulgu üretir; bu nedenle görüntülemek için --severity-min info seçeneğini ekleyin.
Yapılandırılmış sistem durumu denetimleri
Modern doctor denetimleri küçük, bölünmüş bir sözleşme kullanır:
detect(ctx, scope?) -> HealthFinding[]repair?(ctx, findings) -> HealthRepairResultdetect(), doctor --lint öğesine güç sağlar. repair() isteğe bağlıdır ve yalnızca doctor --fix / doctor --repair altında çalışır. Henüz bu yapıya geçirilmemiş denetimler eski doctor katkı akışını kullanmaya devam eder.
Onarım bağlamları dryRun/diff isteklerini taşıyabilir; onarım sonuçları yapılandırılmış diffs (yapılandırma/dosya düzenlemeleri) ve effects (hizmet, süreç, paket, durum veya diğer yan etkiler) döndürebilir; böylece dönüştürülen denetimler, değişiklik planlamasını detect() içine taşımadan doctor --fix --dry-run yönünde gelişebilir.
repair(), status: "repaired" | "skipped" | "failed" bildirir (durumun belirtilmemesi repaired anlamına gelir). Onarım skipped veya failed döndürdüğünde Doctor nedeni bildirir ve o denetimin doğrulamasını atlar. Başarılı bir onarımın ardından Doctor, onarılan bulgularla sınırlı olarak detect() işlemini yeniden çalıştırır; bulgu hâlâ mevcutsa Doctor değişikliği tamamlanmış saymak yerine bir onarım uyarısı bildirir.
Bir bulgu şunları içerir:
| Alan | Amaç |
|---|---|
checkId |
Atlama/yalnızca filtreleri ve CI izin listeleri için kararlı kimlik. |
severity |
info, warning veya error. |
message |
İnsan tarafından okunabilir sorun açıklaması. |
path |
Mevcut olduğunda yapılandırma, dosya veya mantıksal yol. |
line / column |
Mevcut olduğunda kaynak konumu. |
ocPath |
Bir denetim gösterebiliyorsa kesin oc:// adresi. |
fixHint |
Önerilen operatör eylemi veya onarım özeti. |
Modernleştirilmiş çekirdek Doctor denetimleri, insana yönelik doctor / doctor --fix davranışlarının sahibi olan sıralı Doctor katkısına bağlı kalır. Paylaşılan yapılandırılmış sistem durumu kayıt defteri genişletme noktasıdır: paketle gelen ve plugin destekli denetimler, sahip paketleri bunları etkin komut yoluna kaydettikten sonra çekirdek Doctor denetimlerinin ardından çalışır. openclaw/plugin-sdk/health, plugin yazarlarına aynı sözleşmeyi sunar.
Denetim seçimi
openclaw doctor --lint --only core/doctor/gateway-config --jsonopenclaw doctor --lint --skip core/doctor/skills-readinessopenclaw doctor --lint --all --skip core/doctor/session-locks--only ve --skip tam denetim kimliklerini kabul eder ve yinelenebilir. Bir --only kimliği kayıtlı değilse bu kimlik için hiçbir denetim çalışmaz; odaklanmış bir geçidin beklediğiniz denetimleri seçtiğini doğrulamak için çıktıda checksRun/checksSkipped kullanın.
Yükseltme sonrası modu
openclaw doctor --post-upgrade, bir derleme veya yükseltmenin ardından zincirlemek üzere plugin uyumluluk yoklamalarını çalıştırır. Bulgular stdout'a gönderilir; herhangi bir bulguda level: "error" varsa çıkış kodu 1 olur. CI, topluluk fork-upgrade skill'i ve diğer yükseltme sonrası duman testi araçları için uygun, makine tarafından okunabilir bir zarf ({ probesRun, findings }) elde etmek üzere --json ekleyin. Yüklü plugin dizini eksik veya bozuksa JSON modu yine de plugin.index_unavailable hata bulgusunu içeren zarfı üretir.
Konteyner imajı başlangıcı, olağan "güncellemeden sonra Doctor'ı çalıştır"
akışının istisnasıdır. openclaw gateway run yeni bir OpenClaw sürümünde başladığında,
hazır olduğunu bildirmeden önce güvenli durum ve plugin onarımlarını
çalıştırır. Onarım güvenli biçimde tamamlanamazsa başlangıç sonlanır ve
konteyneri normal şekilde yeniden başlatmadan önce aynı bağlı durum/yapılandırmaya
karşı aynı imajı openclaw doctor --fix ile bir kez çalıştırmanızı söyler.
Eski durum geçişi
openclaw doctor --fix, kalıcı dosyadan SQLite'a geçişlerin tek sahibidir. Tanınan her kaynağı doğrular ve sahiplenir, kanonik satırları yazar ve doğrular, bir geçiş makbuzu kaydeder, ardından kullanımdan kaldırılmış kaynağı siler. Çalışma zamanı kodu gecikmeli içe aktarma veya yedek okuma gerçekleştirmez.
Buna <state-dir>/mcp-oauth/*.json altındaki kullanımdan kaldırılmış MCP OAuth dosyaları dahildir. Onarımdan önce Gateway'i durdurun. Doctor geçerli kimlik bilgilerini <state-dir>/state/openclaw.sqlite içine aktarır, her iki depo da mevcut olduğunda var olan kanonik SQLite oturumunu korur, eski kalıcı OAuth state değerini kaldırır ve yeniden oluşturulmuş eski bir dosyanın oturumu kapatılmış kimlik bilgilerini yeniden etkinleştirmesini önlemek için makbuzunu kullanır. Kullanımdan kaldırılmış .lock yan dosyaları güvenli biçimde başarısız olur: Doctor eski bir sahip bildirirse daha eski bir OpenClaw sürecinin çalışmadığını doğrulayın, bu yan dosyayı kaldırın ve Doctor'ı yeniden çalıştırın.
Paylaşılan durum SQLite Compaction işlemi
Şema sürümleme, bütünlük denetimleri ve sürüm düşürme kurtarması için Veritabanı şemaları bölümüne bakın.
openclaw doctor --state-sqlite compact,
<state-dir>/state/openclaw.sqlite konumundaki kanonik paylaşılan durum veritabanı için
açık çevrimdışı bakımdır. Rastgele bir veritabanı yolunu kabul etmez,
normal Gateway çalışması tarafından hiçbir zaman çağrılmaz ve
openclaw doctor --fix parçası değildir. Komut, Gateway başlangıcıyla aynı durum
sahipliği kilidini alır ve doğrulama, denetim noktası oluşturma, VACUUM ve
son bütünlük denetimleri boyunca bu kilidi tutar. Bir Gateway veya başka bir
SQLite bakım komutu bu kilide sahipken çalışmayı reddeder. OPENCLAW_ALLOW_MULTI_GATEWAY=1,
yapılandırma başına Gateway tekil örneğini atlasa bile durum kilidi etkin kalır;
dolayısıyla bir operatör kabuğunun bakım sırasında Gateway hizmetini algılayabilmesi
için hizmetin ortamını devralması gerekmez.
Önce Gateway'i durdurun ve doğrulanmış bir yedek oluşturun:
openclaw gateway stopopenclaw backup create --verifyopenclaw doctor --state-sqlite compact --jsonopenclaw gateway startKomut:
- Kanonik paylaşılan durum yolunda normal bir dosya gerektirir. Eksik
veritabanı
skippedolarak bildirilir ve başarıyla sonlanır. - Denetim noktası oluşturmadan veya dosyayı değiştirmeden önce desteklenen
geçerli şema sürümünü ve
schema_meta.role = "global"öğesini doğrular. - Meşgul olmayan bir
wal_checkpoint(TRUNCATE)gerektirir. Denetim noktası meşgulse kalan tüm OpenClaw süreçlerini durdurun ve yeniden deneyin. auto_vacuumdeğeriniINCREMENTALolarak ayarlar, tam birVACUUMçalıştırır ve yeniden denetim noktası oluşturur.quick_check,integrity_checkveforeign_key_checkişlemlerini çalıştırır, ardından veritabanına ve SQLite yan dosyalarına yalnızca sahip izinlerini yeniden uygular.
JSON çıktısı; veritabanı ve WAL boyutlarını, serbest liste sayfalarını, sayfa boyutunu ve
Compaction öncesi ve sonrasındaki auto_vacuum değerini, ayrıca geri kazanılan baytları ve
quick_check ile integrity_check sonuçlarını bildirir. foreign_key_check güvenli biçimde
başarısız olacak şekilde uygulanır ve ayrı bir başarı alanı yoktur. SQLite, auto_vacuum değerini
hiçbiri için 0, tam için 1 ve artımlı için 2 olarak bildirir.
Şema eskiyse, çalışan OpenClaw derlemesinden daha yeniyse veya bir agent
veritabanına aitse Compaction değişiklik yapmadan başarısız olur. Eski bir
paylaşılan durum şeması için önce openclaw doctor --fix çalıştırın. Daha yeni bir
şema için uyumlu bir yedeği geri yükleyin veya OpenClaw'ı yükseltin.
Oturum SQLite geçişi
OpenClaw, eski oturum satırlarını ve transkript geçmişini Gateway başlangıcı sırasında
ve openclaw doctor --fix sırasında otomatik olarak her agent'ın
SQLite veritabanına aktarır. openclaw doctor --session-sqlite <mode>, bu geçiş için
hedefli inceleme ve doğrulama aracıdır. Geçerli çalışma zamanı
oturum satırları
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite içinde bulunur. Eski
sessions.json dosyaları geçiş kaynaklarıdır. Etkin transkript JSONL dosyaları
içe aktarılır ve başarılı içe aktarmadan sonra etkin oturumlar dizininin dışına
arşivlenir; arşiv katmanındaki JSONL dosyaları çalışma zamanı
yedekleri değil, destek yapıtları olarak kalır.
Modlar:
| Mod | Davranış |
|---|---|
inspect |
İçe aktarmadan eski kayıtların ve SQLite'ın sayılarını, ayrıca başvurulmayan JSONL dosyalarını okur. |
dry-run |
Eski girdileri ve transkript JSONL dosyalarını ayrıştırır, içe aktarılabilir satırları sayar ve SQLite satırlarını yazmadan sorunları bildirir. |
import |
Seçilen hedefler için eski girdileri ve transkript olaylarını SQLite'a aktarır. |
validate |
Seçilen eski kaynakları SQLite satırları ve transkript olay sayılarıyla karşılaştırır. |
compact |
Büyük silme veya arşiv temizliği sonrasında boş sayfaları geri kazanmak için seçilen agent SQLite veritabanlarında denetim noktası oluşturur ve VACUUM çalıştırır. |
recover |
En son başarısız geçiş çalıştırmasını geri yükler, hedeflerini doğrular ve temizlenmiş bir GitHub sorun raporu hazırlar. |
restore |
SQLite verilerini silmeden, kaydedilmiş geçiş bildirimlerinden arşivlenmiş transkript yapıtlarını geri yükler. |
Seçiciler:
- Varsayılan: bu eski depo dosyası mevcut olduğunda yapılandırılmış varsayılan agent deposu.
--session-sqlite-agent <id>: yapılandırılmış tek bir agent.--session-sqlite-all-agents: yapılandırılmış agent depoları ve keşfedilen agent depoları.--session-sqlite-store <path>: tek bir açık eskisessions.jsonyolu.
Elle inceleme sırası:
openclaw doctor --session-sqlite inspect --session-sqlite-all-agentsopenclaw doctor --session-sqlite dry-run --session-sqlite-all-agents --jsonopenclaw doctor --session-sqlite import --session-sqlite-all-agentsopenclaw doctor --session-sqlite validate --session-sqlite-all-agents --jsonopenclaw doctor --session-sqlite compact --session-sqlite-all-agentsopenclaw doctor --session-sqlite recover --github-issueÖnemli geçmişi olan bir kurulumda import çalıştırmadan önce OpenClaw durum dizinini
yedekleyin. Seçilen bir eski girdi SQLite'ta yoksa, oturum kimliği farklıysa veya
transkript olay sayısı farklıysa validate sıfır dışında bir kodla sonlanır.
--session-sqlite-store <path> kullanırken raporun beklenen hedef sayısını içerdiğini
kontrol edin; mevcut olmayan açık bir depo yolu hiçbir hedef seçmez.
SQLite silme işlemleri önce veritabanının içindeki sayfaları geri kazanır; veritabanı
dosyasını hemen küçültmeleri gerekmez. Büyük transkriptleri sildikten veya
arşivledikten sonra WAL dosyalarında denetim noktası oluşturmak, VACUUM
çalıştırmak ve önceki/sonraki veritabanı ile WAL boyutlarını bildirmek için
openclaw doctor --session-sqlite compact --session-sqlite-all-agents çalıştırın. Compaction; geçerli agent şemasına sahip normal bir dosya,
seçilen agent'ın kalıcı sahip meta verileri ve Doctor sürecinde açık tanıtıcı
bulunmamasını gerektirir. Yıkıcı import, compact, recover ve restore modları,
tüm işlemleri boyunca Gateway başlangıcıyla aynı durum sahipliği kilidini tutar;
inspect, dry-run ve validate salt okunur kalır ve bu kilidi almaz. Önce
Gateway'i durdurun. Yıkıcı modlar, canlı yazmalarla veya başka bir bakım komutuyla
yarışmak yerine başarısız olur. Yıkıcı bir --session-sqlite-store
hedefi etkin durum dizininin içinde olmalıdır; başka bir kuruluma bakım uygulamadan önce
OPENCLAW_STATE_DIR değerini deponun sahibi olan durum dizinine ayarlayın.
Mevcut sabit bağlantılı hedefler reddedilir; çünkü başka bir yol kilitli durum
dizininin dışında aynı veritabanı inode'unu paylaşabilir. Aynı sahiplik
denetimleri SQLite WAL, paylaşılan bellek ve geri alma günlüğü yan dosyalarını kapsar.
Her içe aktarma, transkript yapıtlarını arşive taşımadan önce
~/.openclaw/session-sqlite-migration-runs/ altında bir bildirim yazar.
Yapıtlar taşındıktan sonra başlangıç başarısız bir oturum SQLite geçişi bildirirse
kurtarmayı çalıştırın:
openclaw doctor --session-sqlite recover --github-issueKurtarma, en son başarısız geçiş manifestini seçer, yalnızca manifestin
arşivlenmiş yapıtlarını geri yükler, etkilenen hedefleri doğrular, temizlenmiş
.failure.md ve .failure.json raporlarını yeniler ve döküm içeriklerini,
ham ortamı, gizli bilgileri ve sınırsız yapılandırmayı içermeyen bir GitHub sorunu
gövdesi hazırlar. Başarısız bir geçiş manifesti bulunmadığında ancak seçili bir
aracı SQLite veritabanı bozuk olduğunda, veritabanı olmadığında veya ana
veritabanı olmadan günlük yan dosyalarına sahip olduğunda kurtarma, eksiksiz
dosya kümesini geçici bir inceleme dizinine kopyalar. SQLite, özgün adli inceleme
dosyaları değiştirilmeden kalırken quick_check, integrity_check ve
foreign_key_check çalışmadan önce bu tek kullanımlık kopyadaki geçerli bir etkin
günlüğü geri alabilir. Başarısız bütünlük denetimleri veya sahipsiz yan dosyalar,
keşfedilen kümenin tamamını tek bir .corrupt-<timestamp> son ekiyle yeniden
adlandırarak DB, WAL, SHM ve geri alma günlüğü dosyalarını korur. Yakalanan bir
yeniden adlandırma hatası, hata bildirilmeden önce taşınmış dosyaları geri
taşır; böylece kurtarılabilir bir dosya kümesi sessizce bölünmez. Kurtarma
işleminden önce Gateway'i durdurun; etkin biçimde değişen bir SQLite dosya
kümesini kopyalamak veya yeniden adlandırmak güvenli değildir ve işletim
sistemleri arasında farklı davranır. --github-issue --yes ile doctor, sorunu
openclaw/openclaw içinde oluşturmak için GitHub CLI'ı kullanır; onay olmadan
yerel destek raporunu yazar ve önceden doldurulmuş bir sorun URL'si yazdırır.
restore, daha düşük düzeyli geri alma işlemi olarak kalır. Manifest
sourcePath -> archivePath kayıtlarını kullanır, arşivlenmiş yapıtları yalnızca özgün
yol eksik olduğunda geri taşır, her iki yol da mevcut olduğunda çakışmaları
bildirir ve SQLite veritabanını yerinde bırakır.
Oturum SQLite Geçişinden Sonra Eski Sürüme Dönme
Dosya destekli eski bir OpenClaw sürümünü başlatmadan önce arşivlenmiş eski döküm yapıtlarını geri yükleyin:
openclaw doctor --session-sqlite restore --session-sqlite-all-agentsEski sürümler, sessions.json girdilerini ve bu girdilerde kaydedilen
sessionFile yollarını okur. SQLite geçişinden sonra başarılı içe aktarma
işlemleri, etkin JSONL dökümlerini session-sqlite-import-archive/ konumuna taşır; bu nedenle
geri yükleme, manifestte kayıtlı bu yapıtları özgün yollarına geri taşıyana
kadar eski çalışma zamanı bu geçmişi göremez.
Geri yükleme, SQLite verilerini silmez. SQLite'a geçişten sonra oluşturulan oturumlar yalnızca SQLite'ta bulunur ve eski çalışma zamanında görünmez. Daha sonra yeniden yükseltirseniz OpenClaw'ın içe aktarmadan önce geri yüklenen eski yapıtları SQLite satırlarıyla karşılaştırabilmesi için yukarıdaki normal geçiş doğrulama sırasını çalıştırın.
Notlar
- Nix modunda (
OPENCLAW_NIX_MODE=1), salt okunur doctor denetimleri çalışmaya devam eder ancakopenclaw.jsondeğiştirilemez olduğundandoctor --fix,doctor --repair,doctor --yesvedoctor --generate-gateway-tokendevre dışıdır. Bunun yerine bu kurulumun Nix kaynağını düzenleyin; nix-openclaw için önce agent yaklaşımını kullanan Hızlı Başlangıç bölümüne bakın. - Etkileşimli istemler (anahtar zinciri/OAuth düzeltmeleri vb.) yalnızca stdin bir TTY olduğunda ve
--non-interactiveayarlanmamış olduğunda çalışır. Başsız çalıştırmalar (cron, Telegram, terminal yok) istemleri atlar. - Etkileşimsiz
doctorçalıştırmaları, başsız sistem durumu denetimlerinin hızlı kalması için önceden Plugin yüklemeyi atlar. Etkileşimli oturumlar, eski sistem durumu/düzeltme akışının gerektirdiği Plugin yüzeylerini yüklemeye devam eder. --lint,--non-interactiveseçeneğinden daha katıdır: her zaman salt okunurdur, hiçbir zaman istem göstermez ve güvenli geçişleri hiçbir zaman uygulamaz. Doctor'ın değişiklik yapmasını istediğinizdedoctor --fixveyadoctor --repairkullanın.- Doctor, sırları denetlerken varsayılan olarak
execSecretRef'lerini çalıştırmaz. Yalnızca doctor'ın yapılandırılmış bu sır çözümleyicilerini çalıştırmasını bilinçli olarak istediğinizde--allow-execseçeneğini (--lintile veya onsuz) kullanın. - Herhangi bir yapılandırma yazımı (
--fixdüzeltmesi dâhil), yedeği~/.openclaw/openclaw.json.bakkonumuna döndürür (numaralandırılmış bir.bak.1...bak.4halkasıyla).--fixayrıca şema doğrulamasının bildirdiği bilinmeyen yapılandırma anahtarlarını kaldırır ve her kaldırma işlemini listeler; kısmen yazılmış yükseltme durumu, geçişi tamamlanmadan kaldırılmasın diye güncelleme sürerken bunu atlar. openclaw.jsonayrıştırılamazsa ve bilinen son sağlam yapılandırma kurtarılamazsadoctor --fix, özgün dosyayıopenclaw.json.clobbered.<timestamp>olarak korur, geçerli dosyayı değiştirmeden bırakır ve kısmi bir değiştirme dosyası yazmak yerine hatayla çıkar.- Gateway yaşam döngüsünü başka bir gözetmen yönetiyorsa
OPENCLAW_SERVICE_REPAIR_POLICY=externalayarını yapın. Doctor, Gateway/hizmet durumunu bildirmeye ve hizmet dışı düzeltmeleri uygulamaya devam eder ancak hizmet kurulumunu/başlatılmasını/yeniden başlatılmasını/önyüklemesini ve eski hizmet temizliğini atlar. - Doctor, yönetilen Gateway'e uygulanan yığın sınırını ve geçerli ana makine ya da kapsayıcı bellek sınırı için kullanılan uyarlanabilir türetimi bildirir. Bir düzeltme geçişinin dışında aynı raporu almak için
openclaw gateway statuskullanın. - Linux'ta doctor, etkin olmayan ek Gateway benzeri systemd birimlerini yok sayar ve düzeltme sırasında çalışan bir systemd Gateway hizmetinin komut/giriş noktası meta verilerini yeniden yazmaz. Önce hizmeti durdurun veya etkin başlatıcıyı değiştirmek için
openclaw gateway install --forcekullanın. doctor --fix --non-interactive, eksik veya güncelliğini yitirmiş Gateway hizmet tanımlarını bildirir ancak güncelleme düzeltme modu dışında bunları kurmaz ya da yeniden yazmaz. Eksik bir hizmet içinopenclaw gateway install, başlatıcıyı değiştirmek için iseopenclaw gateway install --forceçalıştırın.- Durum bütünlüğü denetimleri, oturumlar dizinindeki sahipsiz transkript dosyalarını algılar. Bunları
.deleted.<timestamp>olarak arşivlemek etkileşimli onay gerektirir;--fix,--yesve başsız çalıştırmalar dosyaları yerinde bırakır. - Doctor, eski cron işi biçimleri için
~/.openclaw/cron/jobs.json(veyacron.store) dosyasını tarar ve standart satırları SQLite'a aktarmadan önce bunları yeniden yazar. - Doctor, açık bir
payload.modelgeçersiz kılmasına sahip cron işlerini; sağlayıcı ad alanı sayıları veagents.defaults.modelile uyuşmazlıkları dâhil olmak üzere bildirir. Böylece varsayılan modeli devralmayan zamanlanmış işler, kimlik doğrulama veya faturalandırma incelemeleri sırasında görünür olur. - Doctor, hâlâ yürütülüyor olarak işaretlenmiş (
state.runningAtMs) cron işlerini bildirir; bu durumopenclaw cron listtarafındanrunningolarak gösterilmelerine neden olabilir. Bu denetim salt okunurdur: işaretlenmiş bir işi o anda hiçbir Gateway yürütmüyorsa sonraki cron hizmeti başlangıcı, kesintiye uğrayan çalıştırmayı kaydeder ve işareti temizler. - Linux'ta doctor, kullanıcının crontab'ı hâlâ bakımı yapılmayan eski
~/.openclaw/bin/ensure-whatsapp.sharacını çalıştırıyorsa uyarır; cron, systemd kullanıcı veri yolu ortamına sahip olmadığında bu araçGateway inactivedeğerini yanlış bildirebilir. - WhatsApp etkinleştirildiğinde doctor, yerel
openclaw-tuiistemcileri hâlâ çalışırken performansı düşmüş bir Gateway olay döngüsü olup olmadığını denetler.doctor --fix, WhatsApp yanıtlarının eski TUI yenileme döngülerinin arkasında kuyruğa alınmaması için yalnızca doğrulanmış yerel TUI istemcilerini durdurur. - HTTP(S) proxy ortam değişkenleri mevcutken
tools.web.fetch.useTrustedEnvProxydevre dışıysa doctor,web_fetchtarafından hâlâ doğrudan yönlendirme kullanıldığını açıklar, kısa bir doğrudan TLS bağlantı denemesi gerçekleştirir ve açık katılım seçeneğini belirtir. Proxy güvenini hiçbir zaman otomatik olarak etkinleştirmez. - Doctor; birincil modeller, yedekler, model izin listeleri, görüntü/video oluşturma modelleri, Heartbeat/alt agent/Compaction geçersiz kılmaları, kancalar, kanal modeli geçersiz kılmaları, cron yükleri ve eski oturum/transkript rota sabitlemeleri genelindeki eski
codex/*veopenai-codex/*model başvurularını standartopenai/*başvurularına dönüştürür.--fixayrıca güvenli olduğunda eskimodels.providers.codexvemodels.providers.openai-codexyapılandırmalarını birleştirir, eskiopenai-codex:*kimlik doğrulama profillerini veauth.order.openai-codexgirdileriniopenai:*konumuna taşır, Codex niyetini sağlayıcı/model kapsamlıagentRuntime.id: "codex"girdilerine aktarır, eski tüm-agent/oturum çalışma zamanı sabitlemelerini kaldırır ve düzeltilen OpenAI agent başvurularını doğrudan OpenAI API anahtarıyla kimlik doğrulama yerine Codex kimlik doğrulama yönlendirmesinde tutar. - Doctor, uyumlu saklanmış kimlik bilgileri bulunmasına rağmen başvurdukları profillerin tümü kaybolmuş olan boş olmayan
auth.order.<provider>listelerini bildirir.doctor --fix, yalnızca bu eski geçersiz kılmaları silerek agent başına otomatik kimlik bilgisi seçimini geri getirir; açıkça boş sıralamalar, kısmen geçerli listeler ve uyumlu saklanmış kimlik bilgisi bulunmayan sıralamalar değişmeden kalır. Etkin bir SQLite kimlik doğrulama deposu okunamıyorsa veya hatalı biçimlendirilmişse doctor, bu düzeltmeyi neden atladığını açıklar. Yapılandırma yeniden yükleme modu yazımı otomatik olarak uygulamıyorsa kimlik doğrulama durumunu yeniden denetlemeden önce çalışan Gateway'i yeniden başlatın. - Doctor, eski OpenClaw sürümlerinden kalan eski Plugin bağımlılığı hazırlama durumunu temizler ve eş bağımlılık olarak bildiren yönetilen npm Pluginleri için ana makinenin
openclawpaketini yeniden bağlar. Ayrıca yapılandırmanın başvurduğu eksik indirilebilir Pluginleri (plugins.entries, yapılandırılmış kanallar, yapılandırılmış sağlayıcı/arama ayarları, yapılandırılmış agent çalışma zamanları) düzeltir. Paket güncellemeleri sırasında doctor, paket değişimi tamamlanana kadar paket yöneticisi Plugin düzeltmesini atlar; yapılandırılmış bir Pluginin hâlâ kurtarılması gerekiyorsa sonrasındaopenclaw doctor --fixkomutunu yeniden çalıştırın. İndirme başarısız olursa doctor kurulum hatasını bildirir ve sonraki düzeltme girişimi için yapılandırılmış Plugin girdisini korur. - Doctor, Plugin keşfi sağlıklı olduğunda eksik Plugin kimliklerini
plugins.allow/plugins.deny/plugins.entriesiçinden ve bunlarla eşleşen sahipsiz kanal yapılandırmasını, Heartbeat hedeflerini ve kanal modeli geçersiz kılmalarını kaldırarak eski Plugin yapılandırmasını düzeltir. - Doctor, etkilenen
plugins.entries.<id>girdisini devre dışı bırakıp geçersizconfigyükünü kaldırarak geçersiz Plugin yapılandırmasını karantinaya alır. Gateway başlangıcı zaten yalnızca bu hatalı Plugini atladığından diğer Pluginler ve kanallar çalışmaya devam eder. - Doctor, kullanımdan kaldırılmış
plugins.entries.codex.config.codexDynamicToolsProfileöğesini kaldırır; Codex uygulama sunucusu, Codex'e özgü çalışma alanı araçlarını her zaman yerel tutar. - Doctor, eski düz Talk yapılandırmasını (
talk.voiceId,talk.modelIdve benzerleri) otomatik olaraktalk.provider+talk.providers.<provider>biçimine geçirir. Tek fark nesne anahtarlarının sırası olduğunda tekrarlanandoctor --fixçalıştırmaları artık Talk normalleştirmesini bildirmez/uygulamaz. - Doctor, bir bellek araması hazırlık denetimi içerir ve gömme kimlik bilgileri eksik olduğunda
openclaw configure --section modelönerebilir. - Doctor, hiçbir komut sahibi yapılandırılmadığında uyarır. Komut sahibi, yalnızca sahibin kullanabildiği komutları çalıştırmasına ve tehlikeli eylemleri onaylamasına izin verilen insan operatör hesabıdır. DM eşleştirmesi yalnızca birinin botla konuşmasına izin verir; ilk sahip önyüklemesi mevcut olmadan önce bir göndericiyi onayladıysanız
commands.ownerAllowFromayarını açıkça yapın. - Doctor, Codex modundaki agent'lar yapılandırıldığında ve operatörün Codex ana dizininde kişisel Codex CLI varlıkları bulunduğunda bir bilgi notu bildirir. Yerel Codex uygulama sunucusu başlatmaları, agent başına yalıtılmış ana dizinler kullanır; gerekirse önce Codex Pluginini kurun, ardından bilinçli olarak aktarılması gereken varlıkların envanterini çıkarmak için
openclaw migrate plan codexkullanın. - Doctor, varsayılan agent için izin verilen Skills geçerli çalışma zamanı ortamında kullanılamadığında (eksik ikili dosyalar, ortam değişkenleri, yapılandırma veya işletim sistemi gereksinimleri) uyarır.
doctor --fix, kullanılamayan bu Skills'iskills.entries.<skill>.enabled=falseile devre dışı bırakabilir; Skill'in etkin kalmasını istiyorsanız bunun yerine eksik gereksinimi kurun/yapılandırın. - Korumalı alan modu etkinleştirilmiş ancak Docker kullanılamıyorsa doctor, düzeltme adımlarını (
install Dockerveyaopenclaw config set agents.defaults.sandbox.mode off) içeren belirgin bir uyarı bildirir. - Eski korumalı alan kayıt dosyaları veya parça dizinleri (
~/.openclaw/sandbox/containers.json,~/.openclaw/sandbox/browsers.json,~/.openclaw/sandbox/containers/veya~/.openclaw/sandbox/browsers/) mevcutsa doctor bunları bildirir;--fix, geçerli girdileri SQLite'a taşır ve geçersiz eski dosyaları karantinaya alır. gateway.auth.token/gateway.auth.passwordSecretRef tarafından yönetiliyorsa ve geçerli komut yolunda kullanılamıyorsa doctor salt okunur bir uyarı bildirir ve düz metin yedek kimlik bilgileri yazmaz. Çalıştırma tabanlı SecretRef'lerde doctor,--allow-execmevcut olmadığı sürece çalıştırmayı atlar.- Bir düzeltme yolunda kanal SecretRef incelemesi başarısız olursa doctor erken çıkmak yerine devam eder ve bir uyarı bildirir.
- Durum dizini geçişlerinden sonra doctor, etkin varsayılan Telegram veya Discord hesapları ortam yedeğine bağımlıysa ve
TELEGRAM_BOT_TOKENya daDISCORD_BOT_TOKENdoctor işlemi tarafından kullanılamıyorsa uyarır. - Telegram
allowFromkullanıcı adının otomatik çözümlenmesi (doctor --fix), geçerli komut yolunda çözümlenebilir bir Telegram belirteci gerektirir. Belirteç incelemesi kullanılamıyorsa doctor bir uyarı bildirir ve bu geçişte otomatik çözümlemeyi atlar.
macOS: launchctl ortam geçersiz kılmaları
Daha önce launchctl setenv OPENCLAW_GATEWAY_TOKEN ... (veya ...PASSWORD) çalıştırdıysanız bu değer yapılandırma dosyanızı geçersiz kılar ve kalıcı "yetkisiz" hatalarına neden olabilir.
launchctl getenv OPENCLAW_GATEWAY_TOKENlaunchctl getenv OPENCLAW_GATEWAY_PASSWORD launchctl unsetenv OPENCLAW_GATEWAY_TOKENlaunchctl unsetenv OPENCLAW_GATEWAY_PASSWORD