Düzen ve adlar
Her çalışma ağacı şu konumda bulunur:[a-z0-9][a-z0-9-]{0,63} ile eşleşmelidir. Ad belirtilmezse OpenClaw, wt- ve ardından sekiz rastgele onaltılık karakterden oluşan bir ad üretir.
OpenClaw, istenen temel referansta openclaw/<name> dalını oluşturur. Temel referans belirtilmezse origin öğesini getirir, mevcutsa uzak deponun varsayılan dalını kullanır ve depo çevrimdışıysa veya kullanılabilir bir uzak deposu yoksa yerel HEAD dalına geri döner.
Yok sayılan dosyaları sağlama
Seçilen yok sayılan, izlenmeyen dosyaları yeni bir çalışma ağacına kopyalamak için kaynak deponun köküne.worktreeinclude ekleyin. Dosya, her satırda bir desen ve # açıklamaları olacak şekilde gitignore desen söz dizimini kullanır:
Depo kurulumunu çalıştırma
Kaynak depoda.openclaw/worktree-setup.sh mevcut ve çalıştırılabilir durumdaysa OpenClaw, yeni çalışma ağacını geçerli dizin olarak kullanarak bunu çalıştırır. Betik şunları alır:
Oturum çalışma ağaçları
Git destekli bir klasörden çalışma ağacı oturumuyla yalıtılmış bir sohbet başlatın: Control UI’daki Yeni oturum sayfasında bir Gateway kaynak klasörü seçmek için Konum seçicisini kullanın, ardından Çalışma ağacı seçeneğini belirleyin (isteğe bağlı bir temel dal ve çalışma ağacı adıyla). Bu seçenek yalnızca Gateway, seçilen klasörün bir Git çalışma kopyası olduğunu doğruladıktan sonra görünür; sıradan klasörler doğrudan çalışır ve Git yalıtımı denetimi göstermez. Etkin araç çalışma alanı Git destekliyse iOS aynı seçeneği Sohbet eylemlerinden, Android ise Yeni Sohbet’in yanında sunar. Kodlama araçları, geçerli görevin dışında doğrulanmış takip çalışmaları tespit ettiklerindespawn_task çağrısını da yapabilir. Control UI hiçbir şey başlatmadan bir öneri çipi gösterirken Gateway destekli bir TUI aynı eylemleri içeren etkileşimli bir istem gösterir. Çalışma ağacında başlat seçeneğinin belirlenmesi, önerilen projeden oturuma ait yeni bir çalışma ağacı oluşturur ve bağımsız istemi ilk tur olarak gönderir; önerinin kapatılması depoya dokunmaz. Öneriler ve kimlikleri geçicidir ve Gateway yeniden başlatıldığında korunmaz.
OpenClaw bu araçları yalnızca işlem yapılabilir bir Gateway kullanıcı arayüzüne sahip operatör oturumlarına sunar. Kanal oturumları ve yerel/gömülü TUI oturumları, bu yüzeyler taşınabilir ve türü belirlenmiş bir görev eylemi sözleşmesine sahip olana kadar bunları almaz.
Ortaya çıkan yönetilen çalışma ağacının sahibi oturumdur ve bu oturumdaki her araç çalıştırması onun çalışma kopyasını kullanır. Çalışma alanı bir depo alt dizini olduğunda çalışma ağacı depo köküne sabitlenir ve oturum, bunun içindeki eşleşen alt dizinden çalışır. Oturum çalışma ağacı oluşturma işlemi yöntemin operator.write kapsamını kullanır, ancak depo kodunu çalıştırdıkları için depo çalışma kopyası kancaları ve .openclaw/worktree-setup.sh adımı yalnızca operator.admin çağıranları için çalışır; .worktreeinclude sağlama işlemi yine de her çağırana uygulanır. Oturumun silinmesi, çalışma ağacını yalnızca kayıpsız biçimde yapılabiliyorsa kaldırır. Değişiklik içeren çalışma ağaçları veya gönderilmemiş commit’lere sahip dallar kullanılabilir durumda kalır; saatlik temizleme, son oturum etkinliğini çalışma ağacı etkinliği sayarak oturum çalışma ağaçlarının anlık görüntüsünü 7 gün boyunca boşta kaldıktan sonra alır. Kaldırılan çalışma ağaçları, aşağıda açıklandığı gibi anlık görüntülerinden geri yüklenebilir durumda kalır.
sessions.create, doğrudan başka bir Gateway klasöründe çalışmak, kaynak çalışma kopyasını worktree: true ile birlikte seçmek veya eşleştirilmiş bir Node’un çalışma dizinini ayarlamak için mutlak bir cwd içerebilir. Açıkça belirtilen her ana makine yolu operator.admin gerektirir; sıradan çalışma ağacı sohbeti oluşturma işlemi operator.write olarak kalır ve yapılandırılmış çalışma alanına sabitlenmeye devam eder.
sessions.create, temel referansı ve çalışma ağacı adını seçmek için worktree: true ile birlikte worktreeBaseRef ve worktreeName değerlerini de kabul eder (dal openclaw/<name> olur); her ikisi de operator.write düzeyinde kalır. Oluşturulan çalışma ağacı, oluşturma sonucunda döndürülür ve oturum satırında worktree: { id, branch, repoRoot } olarak kalıcılaştırılır; böylece oturum listeleri çalışma kopyasını ve dalı gösterebilir. Bir oturum silinirken değişiklik içeren korunan bir çalışma kopyası sessizce geride bırakılmak yerine worktreePreserved olarak bildirilir.
Anlık görüntüler, temizleme ve geri yükleme
Kaldırma işlemi önce izlenen ve yok sayılmayan izlenmeyen dosyaları içeren yapay bir commit oluşturur, ardından bunurefs/openclaw/snapshots/<id> konumuna sabitler. Yok sayılan dosyalar hiçbir zaman depo nesne veritabanına girmez. OpenClaw yalnızca gerçekten sağladığı yok sayılan dosyaları parçalı paylaşılan durum veritabanı satırlarında saklar; .worktreeinclude daha sonra değişse veya kaybolsa bile kaydedilmiş yol kümesi yetkili kaynak olmaya devam eder. Geri yükleme, bu baytları değişmez anlık görüntüden okur ve tam kiplerini yeniden uygular. Kaydedilmiş bir yolun anlık görüntüsü artık güvenli biçimde alınamıyorsa otomatik temizleme canlı çalışma ağacını korur. Anlık görüntü oluşturma başarısız olursa kaldırma durur. Açıkça belirtilen zorla silme işlemi anlık görüntü olmadan devam edebilir.
OpenClaw şu temizleme kurallarını uygular:
- Çalıştırma sonunda yalnızca
git status --porcelainboşsa vegit log HEAD --not --remotes --onelinegönderilmemiş commit bulmazsa çalışma ağacını kaldırır. Aksi takdirde yalnızca etkinlik kilidini serbest bırakır. - Saatlik temizleme, kilitli olmayan ve Workboard’a veya oturuma ait çalışma ağaçlarının anlık görüntüsünü 7 günden uzun süre boşta kaldıklarında, değişiklik içerseler bile alır ve bunları kaldırır. Elle oluşturulan çalışma ağaçları hiçbir zaman otomatik olarak kaldırılmaz.
- Anlık görüntü kayıtları 30 gün boyunca geri yüklenebilir durumda kalır. Ardından temizleme, anlık görüntü referansını ve kayıt satırını siler.
- Canlı bir OpenClaw işlem kilidi ve yabancı veya tanınmayan herhangi bir Git çalışma ağacı kilidi, çalışma ağacını çöp toplamaya karşı korur.
openclaw/<name> öğesini yeniden oluşturur, ardından anlık görüntü farklılıklarını hazırlanmamış değişiklikler ve izlenmeyen dosyalar olarak yeniden meydana getirir. Bu, yapay anlık görüntü commit’inin dal geçmişine girmesini önler. Anlık görüntü referansı kaynak bilgisi olarak kayıtlı kalır.
CLI
Gateway yöntemleri
worktrees.list, operator.read gerektirir ve değişiklik yapan yöntemler operator.admin gerektirir. worktrees.branches, yapılandırılmış araç çalışma alanları için operator.write gerektirirken diğer tüm ana makine yolları operator.admin gerektirir (sessions.create cwd sınırıyla eşleşir). Yalnızca mevcut referansları okur ve hiçbir zaman getirme işlemi yapmaz; yalnızca uzakta bulunan dallar uzak depo niteleyicisiyle (origin/feature-a) döner, böylece döndürülen her ad temel referans olarak çözümlenir. Yeni Oturum ayrıca bu yöntemden türü belirlenmiş bir depo durumu isteyebilir; düz bir dizin veya kullanılamayan çalışma kopyası, kullanıcı arayüzünü bir hata dizesinden Git özelliğini çıkarsamaya zorlamak yerine hiç dal döndürmez.
Workboard çalışma alanları
Paketle birlikte sunulan Workboard Plugin, bir kart çalışma alanını yönetilen çalışma ağacı olarak oluşturabilir:path, kaynak Git çalışma kopyasını tanımlar. branch isteğe bağlıdır ve temel referans olur. Tam ana makine erişimine sahip bir çağıran için Workboard, wb-<card-id> öğesini oluşturur veya yeniden kullanır, alt aracı yönetilen çalışma kopyasını çalışma dizini olarak kullanarak çalıştırır ve çözümlenen yolu ve dalı karta geri yazar. Gateway istemcileri, tam ana makine üzerinde oluşturma için operator.admin gerektirir. Çalıştırma sonunda Workboard, çalışma kopyasını yalnızca kayıpsız olduğu kesin biçimde kanıtlanabiliyorsa kaldırır; değişiklik içeren çalışmalar veya gönderilmemiş commit’ler kullanılabilir durumda kalır.
Çalışma alanına bağlı bir çağıran için path ve depo kökü, hedef araç çalışma alanıyla tam olarak eşleşmelidir. Workboard daha sonra doğrudan bu dizinde çalışır ve ana makine üzerinde yönetilen bir çalışma ağacı oluşturmak yerine bir dizin çalışma alanı kaydeder. Hedef, aynı çalışma alanı için yazılabilir ve paylaşılmayan bir Docker korumalı alanı kullanmalı, canlı konteyner karması istenen bağlamalar ve politikayla eşleşmeli ve yükseltilmiş yürütme, ana makine denetimi, ana makine genelindeki oturumlar, kalıcı ana makine/Node yürütmesi veya sınıflandırılmamış Plugin ve MCP araçları sunmamalıdır. Hedef politikası veya canlı konteyner daha geniş kapsamlıysa görev gönderimi kartı sahipsiz bırakır ve uyumsuz durumu bildirir.