chore(i18n): refresh tr translations
This commit is contained in:
parent
669b008e04
commit
55abfa7a7c
340
docs/tr/ci.md
340
docs/tr/ci.md
@ -1,75 +1,75 @@
|
||||
---
|
||||
read_when:
|
||||
- Bir CI işinin neden çalıştığını veya çalışmadığını anlamanız gerekir
|
||||
- Başarısız bir GitHub Actions denetiminde hata ayıklıyorsunuz
|
||||
- Başarısız olan bir GitHub Actions denetiminde hata ayıklıyorsunuz
|
||||
- Bir sürüm doğrulama çalıştırmasını veya yeniden çalıştırmasını koordine ediyorsunuz
|
||||
summary: CI iş grafiği, kapsam geçitleri, sürüm şemsiyeleri ve yerel komut eşdeğerleri
|
||||
title: CI işlem hattı
|
||||
x-i18n:
|
||||
generated_at: "2026-04-30T09:10:26Z"
|
||||
generated_at: "2026-04-30T18:38:50Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: a9c18f0801864ca1030aac9ea81117b011bd7936388984a1809ce3ae6e906e62
|
||||
source_hash: a24afc27606ac7f4e9ead89acdd319bffa23336610f8a6cd8b576ea1a5b233dd
|
||||
source_path: ci.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw CI, `main` dalına yapılan her push ve her pull request için çalışır. `preflight` işi diff’i sınıflandırır ve yalnızca ilgisiz alanlar değiştiğinde pahalı hatları kapatır. Manuel `workflow_dispatch` çalıştırmaları akıllı kapsamlandırmayı kasıtlı olarak atlar ve sürüm adayları ile geniş doğrulama için tüm grafiği dallandırır. Android hatları `include_android` üzerinden isteğe bağlı kalır. Yalnızca sürüme özgü Plugin kapsamı ayrı [`Plugin Prerelease`](#plugin-prerelease) iş akışında bulunur ve yalnızca [`Full Release Validation`](#full-release-validation) içinden veya açık bir manuel dispatch ile çalışır.
|
||||
OpenClaw CI, `main` dalına yapılan her push ve her pull request üzerinde çalışır. `preflight` işi diff’i sınıflandırır ve yalnızca alakasız alanlar değiştiğinde pahalı hatları kapatır. Manuel `workflow_dispatch` çalıştırmaları, release candidate’lar ve geniş doğrulama için akıllı kapsam belirlemeyi bilinçli olarak atlar ve tam grafiği genişletir. Android hatları `include_android` aracılığıyla opt-in kalır. Yalnızca release’e özel Plugin kapsamı ayrı [`Plugin Prerelease`](#plugin-prerelease) workflow’unda bulunur ve yalnızca [`Full Release Validation`](#full-release-validation) üzerinden ya da açık bir manuel dispatch ile çalışır.
|
||||
|
||||
## İş hattı özeti
|
||||
## Pipeline genel bakışı
|
||||
|
||||
| İş | Amaç | Ne zaman çalışır |
|
||||
| -------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------- |
|
||||
| `preflight` | Yalnızca docs değişikliklerini, değişen kapsamları, değişen extensions’ları algılar ve CI manifestini oluşturur | Draft olmayan push ve PR’larda her zaman |
|
||||
| `security-scm-fast` | `zizmor` aracılığıyla özel anahtar algılama ve iş akışı denetimi | Draft olmayan push ve PR’larda her zaman |
|
||||
| `security-dependency-audit` | npm advisories’e karşı bağımlılıksız production lockfile denetimi | Draft olmayan push ve PR’larda her zaman |
|
||||
| `security-fast` | Hızlı güvenlik işleri için zorunlu toplu sonuç | Draft olmayan push ve PR’larda her zaman |
|
||||
| `check-dependencies` | Production Knip yalnızca bağımlılık geçişi ve kullanılmayan dosya allowlist koruması | Node ile ilgili değişiklikler |
|
||||
| `build-artifacts` | `dist/`, Control UI, derlenmiş artifact kontrolleri ve yeniden kullanılabilir downstream artifact’lar oluşturur | Node ile ilgili değişiklikler |
|
||||
| `checks-fast-core` | Bundled/Plugin-contract/protocol kontrolleri gibi hızlı Linux doğruluk hatları | Node ile ilgili değişiklikler |
|
||||
| `checks-fast-contracts-channels` | Kararlı toplu kontrol sonucu ile parçalanmış kanal contract kontrolleri | Node ile ilgili değişiklikler |
|
||||
| `checks-node-core-test` | Kanal, bundled, contract ve extension hatları hariç Core Node test shard’ları | Node ile ilgili değişiklikler |
|
||||
| `check` | Parçalanmış ana yerel gate eşdeğeri: prod türleri, lint, korumalar, test türleri ve strict smoke | Node ile ilgili değişiklikler |
|
||||
| `check-additional` | Mimari, boundary, extension-surface korumaları, package-boundary ve gateway-watch shard’ları | Node ile ilgili değişiklikler |
|
||||
| `build-smoke` | Derlenmiş CLI smoke testleri ve başlangıç belleği smoke testi | Node ile ilgili değişiklikler |
|
||||
| `checks` | Derlenmiş artifact kanal testleri için doğrulayıcı | Node ile ilgili değişiklikler |
|
||||
| `checks-node-compat-node22` | Node 22 uyumluluk derleme ve smoke hattı | Sürümler için manuel CI dispatch |
|
||||
| `check-docs` | Docs biçimlendirme, lint ve bozuk bağlantı kontrolleri | Docs değiştiğinde |
|
||||
| `skills-python` | Python destekli Skills için Ruff + pytest | Python-skill ile ilgili değişiklikler |
|
||||
| `checks-windows` | Windows’a özgü process/path testleri ve paylaşılan runtime import specifier regresyonları | Windows ile ilgili değişiklikler |
|
||||
| `macos-node` | Paylaşılan derlenmiş artifact’ları kullanan macOS TypeScript test hattı | macOS ile ilgili değişiklikler |
|
||||
| `macos-swift` | macOS uygulaması için Swift lint, derleme ve testler | macOS ile ilgili değişiklikler |
|
||||
| `android` | Her iki flavor için Android unit testleri ve bir debug APK derlemesi | Android ile ilgili değişiklikler |
|
||||
| `test-performance-agent` | Güvenilir etkinlikten sonra günlük Codex yavaş test optimizasyonu | Main CI başarısı veya manuel dispatch |
|
||||
| İş | Amaç | Ne zaman çalışır |
|
||||
| -------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------- |
|
||||
| `preflight` | Yalnızca dokümantasyon değişikliklerini, değişen kapsamları, değişen extension’ları algılar ve CI manifest’ini oluşturur | Draft olmayan push ve PR’larda her zaman |
|
||||
| `security-scm-fast` | `zizmor` ile özel anahtar algılama ve workflow denetimi | Draft olmayan push ve PR’larda her zaman |
|
||||
| `security-dependency-audit` | npm advisory’lerine karşı dependency-free production lockfile denetimi | Draft olmayan push ve PR’larda her zaman |
|
||||
| `security-fast` | Hızlı güvenlik işleri için zorunlu toplama | Draft olmayan push ve PR’larda her zaman |
|
||||
| `check-dependencies` | Production Knip yalnızca bağımlılık geçişi ve kullanılmayan dosya allowlist koruması | Node ile ilgili değişiklikler |
|
||||
| `build-artifacts` | `dist/`, Control UI, derlenmiş artifact denetimleri ve yeniden kullanılabilir downstream artifact’lar oluşturur | Node ile ilgili değişiklikler |
|
||||
| `checks-fast-core` | Paketli/plugin-contract/protokol denetimleri gibi hızlı Linux doğruluk hatları | Node ile ilgili değişiklikler |
|
||||
| `checks-fast-contracts-channels` | Kararlı bir toplu denetim sonucuyla parçalanmış kanal sözleşmesi denetimleri | Node ile ilgili değişiklikler |
|
||||
| `checks-node-core-test` | Kanal, paketli, sözleşme ve extension hatları hariç çekirdek Node test parçaları | Node ile ilgili değişiklikler |
|
||||
| `check` | Parçalanmış ana yerel gate eşdeğeri: prod tipleri, lint, korumalar, test tipleri ve strict smoke | Node ile ilgili değişiklikler |
|
||||
| `check-additional` | Mimari, sınır, extension-surface korumaları, paket sınırı ve gateway-watch parçaları | Node ile ilgili değişiklikler |
|
||||
| `build-smoke` | Derlenmiş CLI smoke testleri ve başlangıç belleği smoke | Node ile ilgili değişiklikler |
|
||||
| `checks` | Derlenmiş artifact kanal testleri için doğrulayıcı | Node ile ilgili değişiklikler |
|
||||
| `checks-node-compat-node22` | Node 22 uyumluluk build ve smoke hattı | Release’ler için manuel CI dispatch |
|
||||
| `check-docs` | Dokümantasyon biçimlendirme, lint ve bozuk bağlantı denetimleri | Dokümantasyon değiştiğinde |
|
||||
| `skills-python` | Python destekli Skills için Ruff + pytest | Python-skill ile ilgili değişiklikler |
|
||||
| `checks-windows` | Windows’a özgü process/path testleri ve paylaşılan runtime import belirteci regresyonları | Windows ile ilgili değişiklikler |
|
||||
| `macos-node` | Paylaşılan derlenmiş artifact’ları kullanan macOS TypeScript test hattı | macOS ile ilgili değişiklikler |
|
||||
| `macos-swift` | macOS uygulaması için Swift lint, build ve testleri | macOS ile ilgili değişiklikler |
|
||||
| `android` | Her iki flavor için Android unit testleri ve bir debug APK build’i | Android ile ilgili değişiklikler |
|
||||
| `test-performance-agent` | Güvenilir etkinlikten sonra günlük Codex yavaş test optimizasyonu | Ana CI başarısı veya manuel dispatch |
|
||||
|
||||
## Fail-fast sırası
|
||||
|
||||
1. `preflight`, hangi hatların hiç var olacağına karar verir. `docs-scope` ve `changed-scope` mantığı bu işin içindeki adımlardır, bağımsız işler değildir.
|
||||
2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` ve `skills-python`, daha ağır artifact ve platform matris işlerini beklemeden hızlıca başarısız olur.
|
||||
3. `build-artifacts`, hızlı Linux hatlarıyla çakışarak çalışır; böylece downstream tüketiciler paylaşılan derleme hazır olur olmaz başlayabilir.
|
||||
4. Daha ağır platform ve runtime hatları bundan sonra dallanır: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-core-test`, `checks`, `checks-windows`, `macos-node`, `macos-swift` ve `android`.
|
||||
1. `preflight`, hangi hatların var olacağına karar verir. `docs-scope` ve `changed-scope` mantığı bu işin içindeki adımlardır, bağımsız işler değildir.
|
||||
2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` ve `skills-python`, daha ağır artifact ve platform matrix işlerini beklemeden hızlıca başarısız olur.
|
||||
3. `build-artifacts`, hızlı Linux hatlarıyla çakışır; böylece downstream tüketiciler paylaşılan build hazır olur olmaz başlayabilir.
|
||||
4. Daha ağır platform ve runtime hatları bundan sonra genişler: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-core-test`, `checks`, `checks-windows`, `macos-node`, `macos-swift` ve `android`.
|
||||
|
||||
Aynı PR veya `main` ref’ine daha yeni bir push geldiğinde GitHub, yerine yenisi geçmiş işleri `cancelled` olarak işaretleyebilir. Aynı ref için en yeni çalıştırma da başarısız olmadığı sürece bunu CI gürültüsü olarak değerlendirin. Toplu shard kontrolleri `!cancelled() && always()` kullanır; böylece normal shard hatalarını yine raporlarlar, ancak tüm iş akışının yerine zaten yenisi geçtiyse kuyruğa girmezler. Otomatik CI concurrency anahtarı sürümlüdür (`CI-v7-*`), bu yüzden eski bir kuyruk grubundaki GitHub taraflı zombi daha yeni main çalıştırmalarını süresiz olarak engelleyemez. Manuel full-suite çalıştırmaları `CI-manual-v1-*` kullanır ve devam eden çalıştırmaları iptal etmez.
|
||||
Aynı PR veya `main` ref’ine daha yeni bir push geldiğinde GitHub, yerini yeni çalıştırma alan işleri `cancelled` olarak işaretleyebilir. Aynı ref için en yeni çalıştırma da başarısız değilse bunu CI gürültüsü olarak değerlendirin. Toplu shard denetimleri `!cancelled() && always()` kullanır; böylece normal shard hatalarını yine raporlar, ancak tüm workflow zaten yerini yeni çalıştırmaya bıraktıktan sonra kuyruğa girmez. Otomatik CI eşzamanlılık anahtarı sürümlüdür (`CI-v7-*`), böylece eski bir kuyruk grubundaki GitHub taraflı zombie daha yeni main çalıştırmalarını süresiz engelleyemez. Manuel tam takım çalıştırmaları `CI-manual-v1-*` kullanır ve sürmekte olan çalıştırmaları iptal etmez.
|
||||
|
||||
## Kapsam ve yönlendirme
|
||||
|
||||
Kapsam mantığı `scripts/ci-changed-scope.mjs` içinde bulunur ve `src/scripts/ci-changed-scope.test.ts` içindeki unit testlerle kapsanır. Manuel dispatch, changed-scope algılamasını atlar ve preflight manifestinin her kapsamlı alan değişmiş gibi davranmasını sağlar.
|
||||
Kapsam mantığı `scripts/ci-changed-scope.mjs` içinde bulunur ve `src/scripts/ci-changed-scope.test.ts` içindeki unit testlerle kapsanır. Manuel dispatch, changed-scope algılamayı atlar ve preflight manifest’inin her kapsamlı alan değişmiş gibi davranmasını sağlar.
|
||||
|
||||
- **CI iş akışı düzenlemeleri** Node CI grafiğini ve iş akışı linting’ini doğrular, ancak Windows, Android veya macOS native derlemelerini tek başına zorlamaz; bu platform hatları platform kaynak değişiklikleriyle kapsamlı kalır.
|
||||
- **CI yalnızca yönlendirme düzenlemeleri, seçili ucuz core-test fixture düzenlemeleri ve dar Plugin contract helper/test-routing düzenlemeleri** hızlı bir yalnızca Node manifest yolu kullanır: `preflight`, security ve tek bir `checks-fast-core` görevi. Değişiklik, hızlı görevin doğrudan çalıştırdığı routing veya helper yüzeyleriyle sınırlıysa bu yol build artifact’larını, Node 22 uyumluluğunu, kanal contract’larını, tam core shard’larını, bundled-plugin shard’larını ve ek guard matrislerini atlar.
|
||||
- **Windows Node kontrolleri** Windows’a özgü process/path wrapper’ları, npm/pnpm/UI runner helper’ları, package manager yapılandırması ve bu hattı çalıştıran CI iş akışı yüzeyleriyle kapsamlandırılır; ilgisiz kaynak, Plugin, install-smoke ve yalnızca test değişiklikleri Linux Node hatlarında kalır.
|
||||
- **CI workflow düzenlemeleri** Node CI grafiğini ve workflow linting’i doğrular, ancak tek başına Windows, Android veya macOS native build’lerini zorlamaz; bu platform hatları platform kaynak değişiklikleriyle kapsamlı kalır.
|
||||
- **CI yalnızca yönlendirme düzenlemeleri, seçili ucuz core-test fixture düzenlemeleri ve dar plugin contract helper/test-routing düzenlemeleri** hızlı bir yalnızca Node manifest yolu kullanır: `preflight`, güvenlik ve tek bir `checks-fast-core` görevi. Bu yol, değişiklik hızlı görevin doğrudan çalıştırdığı yönlendirme veya helper yüzeyleriyle sınırlı olduğunda build artifact’larını, Node 22 uyumluluğunu, kanal sözleşmelerini, tam çekirdek shard’larını, paketli-plugin shard’larını ve ek guard matrix’lerini atlar.
|
||||
- **Windows Node denetimleri** Windows’a özgü process/path wrapper’ları, npm/pnpm/UI runner helper’ları, paket yöneticisi config’i ve bu hattı çalıştıran CI workflow yüzeyleriyle kapsamlanır; alakasız kaynak, plugin, install-smoke ve yalnızca test değişiklikleri Linux Node hatlarında kalır.
|
||||
|
||||
En yavaş Node test aileleri, her iş runner’ları gereğinden fazla ayırmadan küçük kalsın diye bölünür veya dengelenir: kanal contract’ları üç ağırlıklı shard olarak çalışır, küçük core unit hatları eşleştirilir, auto-reply dört dengeli worker olarak çalışır (reply alt ağacı agent-runner, dispatch ve commands/state-routing shard’larına bölünür) ve agentic gateway/Plugin yapılandırmaları, derlenmiş artifact’ları beklemek yerine mevcut yalnızca kaynak agentic Node işlerine dağıtılır. Geniş browser, QA, media ve çeşitli Plugin testleri, paylaşılan Plugin catch-all yerine kendi özel Vitest yapılandırmalarını kullanır. Include-pattern shard’ları zamanlama girdilerini CI shard adını kullanarak kaydeder; böylece `.artifacts/vitest-shard-timings.json` tam bir yapılandırmayı filtrelenmiş bir shard’dan ayırt edebilir. `check-additional`, package-boundary compile/canary işlerini bir arada tutar ve runtime topology mimarisini gateway watch kapsamından ayırır; boundary guard shard’ı küçük bağımsız guard’larını tek bir iş içinde eşzamanlı çalıştırır. Gateway watch, kanal testleri ve core support-boundary shard’ı, `dist/` ve `dist-runtime/` zaten derlendikten sonra `build-artifacts` içinde eşzamanlı çalışır.
|
||||
En yavaş Node test aileleri, her iş runner’ları fazla ayırmadan küçük kalsın diye bölünür veya dengelenir: kanal sözleşmeleri üç ağırlıklı shard olarak çalışır, küçük çekirdek unit hatları eşleştirilir, auto-reply dört dengeli worker olarak çalışır (reply subtree’si agent-runner, dispatch ve commands/state-routing shard’larına bölünür) ve agentic gateway/plugin config’leri derlenmiş artifact’ları beklemek yerine mevcut yalnızca kaynak agentic Node işlerine dağıtılır. Geniş tarayıcı, QA, medya ve çeşitli plugin testleri, paylaşılan plugin catch-all yerine kendilerine ayrılmış Vitest config’lerini kullanır. Include-pattern shard’ları zamanlama girdilerini CI shard adını kullanarak kaydeder; böylece `.artifacts/vitest-shard-timings.json` bütün bir config’i filtrelenmiş bir shard’dan ayırt edebilir. `check-additional`, paket-sınırı compile/canary işini birlikte tutar ve runtime topology mimarisini gateway watch kapsamından ayırır; boundary guard shard’ı küçük bağımsız guard’larını tek iş içinde eşzamanlı çalıştırır. Gateway watch, kanal testleri ve çekirdek support-boundary shard’ı, `dist/` ve `dist-runtime/` zaten derlendikten sonra `build-artifacts` içinde eşzamanlı çalışır.
|
||||
|
||||
Android CI hem `testPlayDebugUnitTest` hem de `testThirdPartyDebugUnitTest` çalıştırır ve ardından Play debug APK’sını derler. Third-party flavor’ın ayrı bir source set’i veya manifesti yoktur; unit-test hattı yine de SMS/call-log BuildConfig bayraklarıyla flavor’ı derlerken Android ile ilgili her push’ta yinelenen debug APK paketleme işinden kaçınır.
|
||||
Android CI hem `testPlayDebugUnitTest` hem de `testThirdPartyDebugUnitTest` çalıştırır ve ardından Play debug APK’sini derler. Third-party flavor’ın ayrı bir kaynak seti veya manifest’i yoktur; unit-test hattı flavor’ı SMS/call-log BuildConfig bayraklarıyla yine derlerken, her Android ile ilgili push’ta yinelenen bir debug APK paketleme işinden kaçınır.
|
||||
|
||||
`check-dependencies` shard’ı `pnpm deadcode:dependencies` (en son Knip sürümüne sabitlenmiş, `dlx` kurulumu için pnpm’in minimum release age değeri devre dışı bırakılmış bir production Knip yalnızca bağımlılık geçişi) ve Knip’in production kullanılmayan dosya bulgularını `scripts/deadcode-unused-files.allowlist.mjs` ile karşılaştıran `pnpm deadcode:unused-files` çalıştırır. Kullanılmayan dosya guard’ı, Knip’in statik olarak çözemediği kasıtlı dinamik Plugin, generated, build, live-test ve package bridge yüzeylerini korurken, bir PR yeni incelenmemiş kullanılmayan dosya eklediğinde veya eski bir allowlist girdisi bıraktığında başarısız olur.
|
||||
`check-dependencies` shard’ı `pnpm deadcode:dependencies` (en yeni Knip sürümüne sabitlenmiş, `dlx` kurulumu için pnpm’in minimum release age ayarı devre dışı bırakılmış bir production Knip yalnızca bağımlılık geçişi) ve Knip’in production kullanılmayan dosya bulgularını `scripts/deadcode-unused-files.allowlist.mjs` ile karşılaştıran `pnpm deadcode:unused-files` komutunu çalıştırır. Kullanılmayan dosya guard’ı, bir PR yeni incelenmemiş kullanılmayan dosya eklediğinde veya bayat bir allowlist girdisi bıraktığında başarısız olur; Knip’in statik olarak çözemediği kasıtlı dinamik plugin, generated, build, live-test ve package bridge yüzeylerini ise korur.
|
||||
|
||||
## Manuel dispatch’ler
|
||||
|
||||
Manuel CI dispatch’leri normal CI ile aynı iş grafiğini çalıştırır, ancak Android dışındaki her kapsamlı hattı açık olmaya zorlar: Linux Node shard’ları, bundled-plugin shard’ları, kanal contract’ları, Node 22 uyumluluğu, `check`, `check-additional`, build smoke, docs kontrolleri, Python Skills, Windows, macOS ve Control UI i18n. Bağımsız manuel CI dispatch’leri Android’i yalnızca `include_android=true` ile çalıştırır; tam sürüm şemsiyesi Android’i `include_android=true` geçirerek etkinleştirir. Plugin prerelease static kontrolleri, yalnızca sürüme özgü `agentic-plugins` shard’ı, tam extension batch taraması ve Plugin prerelease Docker hatları CI’dan hariç tutulur. Docker prerelease suite’i yalnızca `Full Release Validation`, release-validation gate etkinleştirilmiş ayrı `Plugin Prerelease` iş akışını dispatch ettiğinde çalışır.
|
||||
Manuel CI dispatch’leri normal CI ile aynı iş grafiğini çalıştırır, ancak Android dışındaki her kapsamlı hattı açık olmaya zorlar: Linux Node shard’ları, paketli-plugin shard’ları, kanal sözleşmeleri, Node 22 uyumluluğu, `check`, `check-additional`, build smoke, dokümantasyon denetimleri, Python skills, Windows, macOS ve Control UI i18n. Bağımsız manuel CI dispatch’leri Android’i yalnızca `include_android=true` ile çalıştırır; tam release şemsiyesi Android’i `include_android=true` geçirerek etkinleştirir. Plugin prerelease statik denetimleri, yalnızca release’e özel `agentic-plugins` shard’ı, tam extension toplu taraması ve plugin prerelease Docker hatları CI’dan hariç tutulur. Docker prerelease takımı yalnızca `Full Release Validation`, ayrı `Plugin Prerelease` workflow’unu release-validation gate’i etkinleştirilmiş olarak dispatch ettiğinde çalışır.
|
||||
|
||||
Manuel çalıştırmalar benzersiz bir concurrency grubu kullanır; böylece bir release-candidate full suite, aynı ref üzerindeki başka bir push veya PR çalıştırması tarafından iptal edilmez. İsteğe bağlı `target_ref` girdisi, güvenilir bir çağırıcının seçili dispatch ref’indeki iş akışı dosyasını kullanırken bu grafiği bir branch, tag veya tam commit SHA üzerinde çalıştırmasına izin verir.
|
||||
Manuel çalıştırmalar benzersiz bir eşzamanlılık grubu kullanır; böylece release-candidate tam takımı aynı ref’teki başka bir push veya PR çalıştırması tarafından iptal edilmez. İsteğe bağlı `target_ref` girdisi, güvenilir bir çağırıcının seçili dispatch ref’inden workflow dosyasını kullanırken bu grafiği bir dal, tag veya tam commit SHA üzerinde çalıştırmasına olanak tanır.
|
||||
|
||||
```bash
|
||||
gh workflow run ci.yml --ref release/YYYY.M.D
|
||||
@ -79,15 +79,15 @@ gh workflow run full-release-validation.yml --ref main -f ref=<branch-or-sha>
|
||||
|
||||
## Runner’lar
|
||||
|
||||
| Çalıştırıcı | İşler |
|
||||
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `ubuntu-24.04` | `preflight`, hızlı güvenlik işleri ve toplamları (`security-scm-fast`, `security-dependency-audit`, `security-fast`), hızlı protokol/sözleşme/bundled denetimleri, parçalanmış kanal sözleşmesi denetimleri, lint hariç `check` parçaları, `check-additional` parçaları ve toplamları, Node test toplamı doğrulayıcıları, doküman denetimleri, Python Skills, workflow-sanity, labeler, auto-response; install-smoke ön denetimi de GitHub barındırmalı Ubuntu kullanır, böylece Blacksmith matrisi daha erken kuyruğa girebilir |
|
||||
| `blacksmith-4vcpu-ubuntu-2404` | `CodeQL Critical Quality`, daha düşük ağırlıklı Plugin parçaları, `checks-fast-core`, `checks-node-compat-node22`, `check-prod-types` ve `check-test-types` |
|
||||
| `blacksmith-8vcpu-ubuntu-2404` | `build-artifacts`, build-smoke, Linux Node test parçaları, bundled Plugin test parçaları, `android` |
|
||||
| `blacksmith-16vcpu-ubuntu-2404` | `check-lint` (CPU’ya yeterince duyarlı olduğu için 8 vCPU kazandırdığından daha fazlaya mal oldu); install-smoke Docker derlemeleri (32-vCPU kuyruk süresi kazandırdığından daha fazlaya mal oldu) |
|
||||
| `blacksmith-16vcpu-windows-2025` | `checks-windows` |
|
||||
| `blacksmith-6vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-node`; fork’lar `macos-latest` değerine geri döner |
|
||||
| `blacksmith-12vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-swift`; fork’lar `macos-latest` değerine geri döner |
|
||||
| Çalıştırıcı | İşler |
|
||||
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `ubuntu-24.04` | `preflight`, hızlı güvenlik işleri ve toplamları (`security-scm-fast`, `security-dependency-audit`, `security-fast`), hızlı protokol/sözleşme/birlikte gelen denetimler, parçalanmış kanal sözleşmesi denetimleri, lint hariç `check` parçaları, `check-additional` parçaları ve toplamları, Node test toplamı doğrulayıcıları, doküman denetimleri, Python Skills, workflow-sanity, labeler, auto-response; install-smoke ön denetimi de GitHub tarafından barındırılan Ubuntu kullanır, böylece Blacksmith matrisi daha erken sıraya girebilir |
|
||||
| `blacksmith-4vcpu-ubuntu-2404` | `CodeQL Critical Quality`, daha düşük ağırlıklı uzantı parçaları, `checks-fast-core`, `checks-node-compat-node22`, `check-prod-types` ve `check-test-types` |
|
||||
| `blacksmith-8vcpu-ubuntu-2404` | `build-artifacts`, build-smoke, Linux Node test parçaları, birlikte gelen Plugin test parçaları, `android` |
|
||||
| `blacksmith-16vcpu-ubuntu-2404` | `check-lint` (CPU'ya yeterince duyarlı olduğundan 8 vCPU tasarruf ettiğinden daha fazla maliyet getirdi); install-smoke Docker derlemeleri (32-vCPU sıra süresi, tasarruf ettiğinden daha fazla maliyet getirdi) |
|
||||
| `blacksmith-16vcpu-windows-2025` | `checks-windows` |
|
||||
| `blacksmith-6vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-node`; fork'lar `macos-latest`'e geri döner |
|
||||
| `blacksmith-12vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-swift`; fork'lar `macos-latest`'e geri döner |
|
||||
|
||||
## Yerel eşdeğerler
|
||||
|
||||
@ -117,27 +117,27 @@ pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifac
|
||||
|
||||
## Tam Sürüm Doğrulaması
|
||||
|
||||
`Full Release Validation`, "sürümden önce her şeyi çalıştır" için kullanılan manuel çatı iş akışıdır. Bir dal, etiket veya tam commit SHA kabul eder; manuel `CI` iş akışını bu hedefle tetikler, yalnızca sürüme yönelik Plugin/paket/statik/Docker kanıtı için `Plugin Prerelease` iş akışını tetikler ve install smoke, paket kabulü, Docker sürüm yolu paketleri, canlı/E2E, OpenWebUI, QA Lab paritesi, Matrix ve Telegram hatları için `OpenClaw Release Checks` iş akışını tetikler. Yayımlanmış bir paket belirtimi sağlandığında yayın sonrası `NPM Telegram Beta E2E` iş akışını da çalıştırabilir.
|
||||
`Full Release Validation`, "sürümden önce her şeyi çalıştır" için kullanılan manuel şemsiye iş akışıdır. Bir dal, etiket veya tam commit SHA'sı kabul eder; manuel `CI` iş akışını bu hedefle başlatır, yalnızca sürüme yönelik Plugin/paket/statik/Docker kanıtı için `Plugin Prerelease` iş akışını başlatır ve install smoke, package acceptance, Docker sürüm yolu takımları, canlı/E2E, OpenWebUI, QA Lab eşliği, Matrix ve Telegram hatları için `OpenClaw Release Checks` iş akışını başlatır. Yayımlanmış bir paket belirtimi sağlandığında yayın sonrası `NPM Telegram Beta E2E` iş akışını da çalıştırabilir.
|
||||
|
||||
`release_profile`, sürüm denetimlerine aktarılan canlı/sağlayıcı kapsamını denetler:
|
||||
`release_profile`, sürüm denetimlerine geçirilen canlı/provider kapsamını kontrol eder:
|
||||
|
||||
- `minimum`, en hızlı OpenAI/çekirdek sürüm açısından kritik hatları korur.
|
||||
- `stable`, kararlı sağlayıcı/backend kümesini ekler.
|
||||
- `full`, geniş öneri sağlayıcısı/medya matrisini çalıştırır.
|
||||
- `minimum`, en hızlı OpenAI/çekirdek sürüm açısından kritik hatları tutar.
|
||||
- `stable`, kararlı provider/backend kümesini ekler.
|
||||
- `full`, geniş danışma amaçlı provider/medya matrisini çalıştırır.
|
||||
|
||||
Çatı, tetiklenen alt çalıştırma kimliklerini kaydeder ve son `Verify full validation` işi mevcut alt çalıştırma sonuçlarını yeniden denetleyip her alt çalıştırma için en yavaş iş tablolarını ekler. Bir alt iş akışı yeniden çalıştırılıp yeşile dönerse, çatı sonucunu ve zamanlama özetini yenilemek için yalnızca üst doğrulayıcı işi yeniden çalıştırın.
|
||||
Şemsiye, başlatılan alt çalışma kimliklerini kaydeder ve son `Verify full validation` işi, mevcut alt çalışma sonuçlarını yeniden denetleyip her alt çalışma için en yavaş iş tablolarını ekler. Bir alt iş akışı yeniden çalıştırılıp yeşile dönerse, şemsiye sonucunu ve zamanlama özetini yenilemek için yalnızca üst doğrulayıcı işi yeniden çalıştırın.
|
||||
|
||||
Kurtarma için hem `Full Release Validation` hem de `OpenClaw Release Checks`, `rerun_group` kabul eder. Bir sürüm adayı için `all`, yalnızca normal tam CI alt işi için `ci`, her sürüm alt işi için `release-checks` ya da daha dar bir grup kullanın: çatıda `install-smoke`, `cross-os`, `live-e2e`, `package`, `qa`, `qa-parity`, `qa-live` veya `npm-telegram`. Bu, odaklı bir düzeltmeden sonra başarısız bir sürüm kutusunun yeniden çalıştırmasını sınırlı tutar.
|
||||
Kurtarma için hem `Full Release Validation` hem de `OpenClaw Release Checks`, `rerun_group` kabul eder. Bir sürüm adayı için `all`, yalnızca normal tam CI alt çalışması için `ci`, her sürüm alt çalışması için `release-checks` veya daha dar bir grup kullanın: şemsiye üzerinde `install-smoke`, `cross-os`, `live-e2e`, `package`, `qa`, `qa-parity`, `qa-live` ya da `npm-telegram`. Bu, odaklı bir düzeltmeden sonra başarısız bir sürüm kutusunun yeniden çalıştırılmasını sınırlı tutar.
|
||||
|
||||
`OpenClaw Release Checks`, seçili ref’i bir kez `release-package-under-test` tarball’ına çözümlemek için güvenilir iş akışı ref’ini kullanır, ardından bu artifact’i hem canlı/E2E sürüm yolu Docker iş akışına hem de paket kabul parçasına aktarır. Bu, paket baytlarını sürüm kutuları arasında tutarlı tutar ve aynı adayın birden çok alt işte yeniden paketlenmesini önler.
|
||||
`OpenClaw Release Checks`, seçilen ref'i bir kez `release-package-under-test` tarball'ına çözümlemek için güvenilen iş akışı ref'ini kullanır, ardından bu yapıtı hem canlı/E2E sürüm yolu Docker iş akışına hem de package acceptance parçasına geçirir. Bu, paket baytlarını sürüm kutuları arasında tutarlı tutar ve aynı adayın birden fazla alt işte yeniden paketlenmesini önler.
|
||||
|
||||
## Canlı ve E2E parçaları
|
||||
|
||||
Sürüm canlı/E2E alt işi geniş yerel `pnpm test:live` kapsamını korur, ancak bunu tek bir seri iş yerine `scripts/test-live-shard.mjs` üzerinden adlandırılmış parçalar olarak çalıştırır:
|
||||
Sürüm canlı/E2E alt çalışması geniş yerel `pnpm test:live` kapsamını korur, ancak bunu tek bir seri iş yerine `scripts/test-live-shard.mjs` üzerinden adlandırılmış parçalar olarak çalıştırır:
|
||||
|
||||
- `native-live-src-agents`
|
||||
- `native-live-src-gateway-core`
|
||||
- sağlayıcıya göre filtrelenmiş `native-live-src-gateway-profiles` işleri
|
||||
- provider ile filtrelenmiş `native-live-src-gateway-profiles` işleri
|
||||
- `native-live-src-gateway-backends`
|
||||
- `native-live-test`
|
||||
- `native-live-extensions-a-k`
|
||||
@ -145,57 +145,57 @@ Sürüm canlı/E2E alt işi geniş yerel `pnpm test:live` kapsamını korur, anc
|
||||
- `native-live-extensions-openai`
|
||||
- `native-live-extensions-o-z-other`
|
||||
- `native-live-extensions-xai`
|
||||
- bölünmüş medya ses/video parçaları ve sağlayıcıya göre filtrelenmiş müzik parçaları
|
||||
- bölünmüş medya ses/video parçaları ve provider ile filtrelenmiş müzik parçaları
|
||||
|
||||
Bu, aynı dosya kapsamını korurken yavaş canlı sağlayıcı hatalarını yeniden çalıştırmayı ve tanılamayı kolaylaştırır. Toplam `native-live-extensions-o-z`, `native-live-extensions-media` ve `native-live-extensions-media-music` parça adları, manuel tek seferlik yeniden çalıştırmalar için geçerliliğini korur.
|
||||
Bu, aynı dosya kapsamını korurken yavaş canlı provider hatalarının yeniden çalıştırılmasını ve teşhis edilmesini kolaylaştırır. Toplam `native-live-extensions-o-z`, `native-live-extensions-media` ve `native-live-extensions-media-music` parça adları, manuel tek seferlik yeniden çalıştırmalar için geçerli kalır.
|
||||
|
||||
Yerel canlı medya parçaları, `Live Media Runner Image` iş akışı tarafından derlenen `ghcr.io/openclaw/openclaw-live-media-runner:ubuntu-24.04` içinde çalışır. Bu imaj `ffmpeg` ve `ffprobe` öğelerini önceden kurar; medya işleri kurulumdan önce yalnızca ikili dosyaları doğrular. Docker destekli canlı paketleri normal Blacksmith çalıştırıcılarında tutun — container işleri iç içe Docker testleri başlatmak için yanlış yerdir.
|
||||
Yerel canlı medya parçaları, `Live Media Runner Image` iş akışı tarafından oluşturulan `ghcr.io/openclaw/openclaw-live-media-runner:ubuntu-24.04` içinde çalışır. Bu imaj `ffmpeg` ve `ffprobe` öğelerini önceden kurar; medya işleri kurulumdan önce yalnızca ikili dosyaları doğrular. Docker destekli canlı takımları normal Blacksmith çalıştırıcılarında tutun — container işleri, iç içe Docker testleri başlatmak için yanlış yerdir.
|
||||
|
||||
Docker destekli canlı model/backend parçaları, seçili commit başına ayrı bir paylaşılan `ghcr.io/openclaw/openclaw-live-test:<sha>` imajı kullanır. Canlı sürüm iş akışı bu imajı bir kez derleyip gönderir, ardından Docker canlı model, Gateway, CLI backend, ACP bind ve Codex harness parçaları `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalışır. Bu parçalar tam kaynak Docker hedefini bağımsız olarak yeniden derlerse, sürüm çalıştırması yanlış yapılandırılmıştır ve yinelenen imaj derlemeleriyle duvar saati süresini boşa harcar.
|
||||
Docker destekli canlı model/backend parçaları, seçilen commit başına ayrı bir paylaşılan `ghcr.io/openclaw/openclaw-live-test:<sha>` imajı kullanır. Canlı sürüm iş akışı bu imajı bir kez oluşturup gönderir; ardından Docker canlı model, Gateway, CLI backend, ACP bind ve Codex harness parçaları `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalışır. Bu parçalar tam kaynak Docker hedefini bağımsız olarak yeniden oluşturursa, sürüm çalışması yanlış yapılandırılmıştır ve yinelenen imaj derlemelerinde duvar saati zamanını boşa harcar.
|
||||
|
||||
## Paket Kabulü
|
||||
## Package Acceptance
|
||||
|
||||
Soru "bu kurulabilir OpenClaw paketi ürün olarak çalışıyor mu?" olduğunda `Package Acceptance` kullanın. Normal CI’dan farklıdır: normal CI kaynak ağacını doğrularken, paket kabulü tek bir tarball’ı kullanıcıların kurulum veya güncelleme sonrasında çalıştırdığı aynı Docker E2E harness üzerinden doğrular.
|
||||
"Bu kurulabilir OpenClaw paketi bir ürün olarak çalışıyor mu?" sorusu için `Package Acceptance` kullanın. Normal CI'dan farklıdır: normal CI kaynak ağacını doğrularken, package acceptance tek bir tarball'ı kullanıcıların kurulum veya güncellemeden sonra kullandığı aynı Docker E2E harness üzerinden doğrular.
|
||||
|
||||
### İşler
|
||||
|
||||
1. `resolve_package`, `workflow_ref` değerini checkout eder, tek bir paket adayını çözümler, `.artifacts/docker-e2e-package/openclaw-current.tgz` yazar, `.artifacts/docker-e2e-package/package-candidate.json` yazar, ikisini de `package-under-test` artifact’i olarak yükler ve GitHub adım özetinde kaynağı, iş akışı ref’ini, paket ref’ini, sürümü, SHA-256 değerini ve profili yazdırır.
|
||||
2. `docker_acceptance`, `ref=workflow_ref` ve `package_artifact_name=package-under-test` ile `openclaw-live-and-e2e-checks-reusable.yml` öğesini çağırır. Yeniden kullanılabilir iş akışı bu artifact’i indirir, tarball envanterini doğrular, gerektiğinde paket özeti Docker imajlarını hazırlar ve seçili Docker hatlarını iş akışı checkout’unu paketlemek yerine bu pakete karşı çalıştırır. Bir profil birden çok hedefli `docker_lanes` seçtiğinde, yeniden kullanılabilir iş akışı paketi ve paylaşılan imajları bir kez hazırlar, ardından bu hatları benzersiz artifact’lere sahip paralel hedefli Docker işleri olarak dağıtır.
|
||||
3. `package_telegram`, isteğe bağlı olarak `NPM Telegram Beta E2E` öğesini çağırır. `telegram_mode` `none` olmadığında çalışır ve Package Acceptance bir paket çözümlediyse aynı `package-under-test` artifact’ini kurar; bağımsız Telegram tetiklemesi yine de yayımlanmış bir npm belirtimini kurabilir.
|
||||
4. `summary`, paket çözümleme, Docker kabulü veya isteğe bağlı Telegram hattı başarısız olursa iş akışını başarısız yapar.
|
||||
1. `resolve_package`, `workflow_ref` için checkout yapar, bir paket adayını çözümler, `.artifacts/docker-e2e-package/openclaw-current.tgz` yazar, `.artifacts/docker-e2e-package/package-candidate.json` yazar, ikisini de `package-under-test` yapıtı olarak yükler ve GitHub adım özetinde kaynağı, iş akışı ref'ini, paket ref'ini, sürümü, SHA-256'yı ve profili yazdırır.
|
||||
2. `docker_acceptance`, `ref=workflow_ref` ve `package_artifact_name=package-under-test` ile `openclaw-live-and-e2e-checks-reusable.yml` öğesini çağırır. Yeniden kullanılabilir iş akışı bu yapıtı indirir, tarball envanterini doğrular, gerektiğinde paket özeti Docker imajlarını hazırlar ve seçilen Docker hatlarını iş akışı checkout'unu paketlemek yerine bu pakete karşı çalıştırır. Bir profil birden fazla hedefli `docker_lanes` seçtiğinde, yeniden kullanılabilir iş akışı paketi ve paylaşılan imajları bir kez hazırlar, ardından bu hatları benzersiz yapıtlarla paralel hedefli Docker işleri olarak dağıtır.
|
||||
3. `package_telegram`, isteğe bağlı olarak `NPM Telegram Beta E2E` öğesini çağırır. `telegram_mode`, `none` olmadığında çalışır ve Package Acceptance bir paket çözümlediyse aynı `package-under-test` yapıtını kurar; bağımsız Telegram başlatması yine de yayımlanmış bir npm belirtimini kurabilir.
|
||||
4. `summary`, paket çözümleme, Docker acceptance veya isteğe bağlı Telegram hattı başarısız olursa iş akışını başarısız kılar.
|
||||
|
||||
### Aday kaynakları
|
||||
### Aday kaynaklar
|
||||
|
||||
- `source=npm` yalnızca `openclaw@beta`, `openclaw@latest` veya `openclaw@2026.4.27-beta.2` gibi tam bir OpenClaw yayın sürümünü kabul eder. Bunu yayımlanmış beta/kararlı kabulü için kullanın.
|
||||
- `source=ref`, güvenilen bir `package_ref` dalını, etiketini veya tam commit SHA'sını paketler. Çözümleyici OpenClaw dallarını/etiketlerini getirir, seçilen commit'in depo dal geçmişinden veya bir yayın etiketinden erişilebilir olduğunu doğrular, bağımlılıkları detached bir worktree içinde kurar ve `scripts/package-openclaw-for-docker.mjs` ile paketler.
|
||||
- `source=url`, bir HTTPS `.tgz` indirir; `package_sha256` zorunludur.
|
||||
- `source=artifact`, `artifact_run_id` ve `artifact_name` üzerinden bir `.tgz` indirir; `package_sha256` isteğe bağlıdır ancak dışarıyla paylaşılan artifact'ler için sağlanmalıdır.
|
||||
- `source=ref` güvenilir bir `package_ref` dalını, etiketini veya tam commit SHA değerini paketler. Çözümleyici OpenClaw dallarını/etiketlerini getirir, seçilen commit'in depo dal geçmişinden veya bir yayın etiketinden erişilebilir olduğunu doğrular, bağımlılıkları ayrık bir çalışma ağacına yükler ve `scripts/package-openclaw-for-docker.mjs` ile paketler.
|
||||
- `source=url` bir HTTPS `.tgz` indirir; `package_sha256` zorunludur.
|
||||
- `source=artifact` `artifact_run_id` ve `artifact_name` üzerinden bir `.tgz` indirir; `package_sha256` isteğe bağlıdır ancak dışarıyla paylaşılan yapıtlar için sağlanmalıdır.
|
||||
|
||||
`workflow_ref` ve `package_ref` değerlerini ayrı tutun. `workflow_ref`, testi çalıştıran güvenilir workflow/harness kodudur. `package_ref`, `source=ref` olduğunda paketlenen kaynak commit'tir. Bu, mevcut test harness'inin eski workflow mantığını çalıştırmadan daha eski güvenilir kaynak commit'lerini doğrulamasını sağlar.
|
||||
|
||||
### Paket profilleri
|
||||
|
||||
- `smoke` — `npm-onboard-channel-agent`, `gateway-network`, `config-reload`
|
||||
- `package` — `npm-onboard-channel-agent`, `doctor-switch`, `update-channel-switch`, `bundled-channel-deps-compat`, `plugins-offline`, `plugin-update`
|
||||
- `package` — `npm-onboard-channel-agent`, `doctor-switch`, `update-channel-switch`, `upgrade-survivor`, `bundled-channel-deps-compat`, `plugins-offline`, `plugin-update`
|
||||
- `product` — `package` artı `mcp-channels`, `cron-mcp-cleanup`, `openai-web-search-minimal`, `openwebui`
|
||||
- `full` — OpenWebUI ile tam Docker yayın yolu parçaları
|
||||
- `custom` — tam `docker_lanes`; `suite_profile=custom` olduğunda zorunludur
|
||||
|
||||
`package` profili, yayımlanmış paket doğrulamasının canlı ClawHub erişilebilirliğine bağlı olmaması için çevrimdışı plugin kapsamını kullanır. İsteğe bağlı Telegram lane'i, `NPM Telegram Beta E2E` içinde `package-under-test` artifact'ini yeniden kullanır; yayımlanmış npm spec yolu ise bağımsız dispatch'ler için korunur.
|
||||
`package` profili çevrimdışı Plugin kapsamı kullanır; böylece yayımlanmış paket doğrulaması canlı ClawHub erişilebilirliğine bağlı kalmaz. İsteğe bağlı Telegram hattı `NPM Telegram Beta E2E` içinde `package-under-test` yapıtını yeniden kullanır; yayımlanmış npm spec yolu bağımsız dispatch'ler için korunur.
|
||||
|
||||
Yayın kontrolleri Package Acceptance'ı `source=ref`, `package_ref=<release-ref>`, `workflow_ref=<release workflow ref>`, `suite_profile=custom`, `docker_lanes='bundled-channel-deps-compat plugins-offline'` ve `telegram_mode=mock-openai` ile çağırır. Yayın yolu Docker parçaları, çakışan package/update/plugin lane'lerini kapsar; Package Acceptance, aynı çözümlenmiş paket tarball'ına karşı artifact'e özgü bundled-channel uyumluluğunu, çevrimdışı plugin'i ve Telegram kanıtını korur. Cross-OS yayın kontrolleri OS'ye özgü onboarding, installer ve platform davranışını hâlâ kapsar; package/update ürün doğrulaması Package Acceptance ile başlamalıdır. Windows packaged ve installer fresh lane'leri ayrıca kurulu bir paketin ham mutlak Windows yolundan bir browser-control override'ını içe aktarabildiğini doğrular. OpenAI cross-OS agent-turn smoke varsayılan olarak ayarlandığında `OPENCLAW_CROSS_OS_OPENAI_MODEL` kullanır, aksi halde `openai/gpt-5.4-mini` kullanır; böylece kurulum ve Gateway kanıtı hızlı ve deterministik kalır.
|
||||
Yayın kontrolleri Package Acceptance'ı `source=ref`, `package_ref=<release-ref>`, `workflow_ref=<release workflow ref>`, `suite_profile=custom`, `docker_lanes='bundled-channel-deps-compat plugins-offline'` ve `telegram_mode=mock-openai` ile çağırır. Yayın yolu Docker parçaları çakışan paket/güncelleme/Plugin hatlarını kapsar; Package Acceptance aynı çözümlenmiş paket tarball'ına karşı yapıt odaklı paketli kanal uyumluluğunu, çevrimdışı Plugin'i ve Telegram kanıtını korur. Cross-OS yayın kontrolleri OS'e özgü onboarding, yükleyici ve platform davranışını kapsamaya devam eder; paket/güncelleme ürün doğrulaması Package Acceptance ile başlamalıdır. Windows paketli ve yükleyici temiz kurulum hatları ayrıca kurulu bir paketin ham mutlak Windows yolundan bir browser-control override'ı içe aktarabildiğini doğrular. OpenAI cross-OS agent-turn smoke, ayarlanmışsa varsayılan olarak `OPENCLAW_CROSS_OS_OPENAI_MODEL` kullanır; aksi halde `openai/gpt-5.4-mini` kullanır. Böylece kurulum ve Gateway kanıtı hızlı ve deterministik kalır.
|
||||
|
||||
### Eski uyumluluk pencereleri
|
||||
|
||||
Package Acceptance, zaten yayımlanmış paketler için sınırlı eski uyumluluk pencerelerine sahiptir. `2026.4.25` dahil olmak üzere `2026.4.25-beta.*` paketleri uyumluluk yolunu kullanabilir:
|
||||
Package Acceptance'ın zaten yayımlanmış paketler için sınırlı eski uyumluluk pencereleri vardır. `2026.4.25` ve `2026.4.25-beta.*` dahil bu sürüme kadar olan paketler uyumluluk yolunu kullanabilir:
|
||||
|
||||
- `dist/postinstall-inventory.json` içindeki bilinen özel QA girdileri, tarball'dan çıkarılmış dosyalara işaret edebilir;
|
||||
- paket bu flag'i sunmuyorsa `doctor-switch`, `gateway install --wrapper` kalıcılık alt senaryosunu atlayabilir;
|
||||
- `update-channel-switch`, tarball'dan türetilmiş sahte git fixture'ından eksik `pnpm.patchedDependencies` değerlerini budayabilir ve eksik kalıcı `update.channel` değerini loglayabilir;
|
||||
- plugin smoke'ları eski install-record konumlarını okuyabilir veya eksik marketplace install-record kalıcılığını kabul edebilir;
|
||||
- `plugin-update`, install record ve no-reinstall davranışının değişmeden kalmasını hâlâ zorunlu tutarken config metadata migration'a izin verebilir.
|
||||
- `dist/postinstall-inventory.json` içindeki bilinen özel QA girdileri tarball'dan çıkarılmış dosyaları gösterebilir;
|
||||
- paket bu flag'i açığa çıkarmıyorsa `doctor-switch`, `gateway install --wrapper` kalıcılık alt senaryosunu atlayabilir;
|
||||
- `update-channel-switch`, tarball'dan türetilmiş sahte git fixture'ından eksik `pnpm.patchedDependencies` girdilerini budayabilir ve eksik kalıcı `update.channel` kaydını loglayabilir;
|
||||
- Plugin smokes eski install-record konumlarını okuyabilir veya eksik marketplace install-record kalıcılığını kabul edebilir;
|
||||
- `plugin-update`, install record ve yeniden kurmama davranışının değişmeden kalmasını hâlâ gerektirirken config metadata migration'a izin verebilir.
|
||||
|
||||
Yayımlanmış `2026.4.26` paketi, daha önce gönderilmiş yerel build metadata stamp dosyaları için de uyarı verebilir. Daha sonraki paketler modern sözleşmeleri karşılamalıdır; aynı koşullar uyarmak veya atlamak yerine başarısız olur.
|
||||
Yayımlanmış `2026.4.26` paketi, zaten gönderilmiş yerel build metadata damga dosyaları için de uyarı verebilir. Daha sonraki paketler modern sözleşmeleri karşılamalıdır; aynı koşullar uyarı veya atlama yerine başarısız olur.
|
||||
|
||||
### Örnekler
|
||||
|
||||
@ -238,152 +238,152 @@ gh workflow run package-acceptance.yml \
|
||||
-f docker_lanes='install-e2e plugin-update'
|
||||
```
|
||||
|
||||
Başarısız bir package acceptance çalışmasını debug ederken paket kaynağını, sürümünü ve SHA-256 değerini doğrulamak için `resolve_package` özetinden başlayın. Ardından `docker_acceptance` alt çalışmasını ve onun Docker artifact'lerini inceleyin: `.artifacts/docker-tests/**/summary.json`, `failures.json`, lane logları, phase zamanlamaları ve yeniden çalıştırma komutları. Tam yayın doğrulamasını yeniden çalıştırmak yerine başarısız paket profilini veya tam Docker lane'lerini yeniden çalıştırmayı tercih edin.
|
||||
Başarısız bir paket kabul çalıştırmasını hata ayıklarken paket kaynağını, sürümü ve SHA-256 değerini doğrulamak için `resolve_package` özetinden başlayın. Ardından `docker_acceptance` alt çalıştırmasını ve Docker yapıtlarını inceleyin: `.artifacts/docker-tests/**/summary.json`, `failures.json`, hat logları, aşama zamanlamaları ve yeniden çalıştırma komutları. Tam yayın doğrulamasını yeniden çalıştırmak yerine başarısız paket profilini veya tam Docker hatlarını yeniden çalıştırmayı tercih edin.
|
||||
|
||||
## Kurulum smoke'u
|
||||
## Kurulum smoke
|
||||
|
||||
Ayrı `Install Smoke` workflow'u, aynı kapsam betiğini kendi `preflight` job'ı üzerinden yeniden kullanır. Smoke kapsamını `run_fast_install_smoke` ve `run_full_install_smoke` olarak ayırır.
|
||||
Ayrı `Install Smoke` workflow'u aynı scope betiğini kendi `preflight` işi üzerinden yeniden kullanır. Smoke kapsamını `run_fast_install_smoke` ve `run_full_install_smoke` olarak böler.
|
||||
|
||||
- **Hızlı yol**, Docker/package yüzeylerine, bundled plugin package/manifest değişikliklerine veya Docker smoke job'larının çalıştırdığı core plugin/channel/gateway/Plugin SDK yüzeylerine dokunan pull request'ler için çalışır. Yalnızca kaynak bundled plugin değişiklikleri, yalnızca test düzenlemeleri ve yalnızca docs düzenlemeleri Docker worker ayırmaz. Hızlı yol kök Dockerfile imajını bir kez build eder, CLI'yi kontrol eder, agents delete shared-workspace CLI smoke'unu çalıştırır, container gateway-network e2e'yi çalıştırır, bir bundled extension build arg'ını doğrular ve her senaryonun Docker çalışması ayrı ayrı sınırlandırılmış şekilde, 240 saniyelik toplam komut timeout'u altında sınırlı bundled-plugin Docker profilini çalıştırır.
|
||||
- **Tam yol**, QR package install ve installer Docker/update kapsamını gece zamanlanmış çalışmalar, manuel dispatch'ler, workflow-call yayın kontrolleri ve gerçekten installer/package/Docker yüzeylerine dokunan pull request'ler için korur. Tam modda install-smoke, bir target-SHA GHCR kök Dockerfile smoke imajını hazırlar veya yeniden kullanır; ardından QR package install, kök Dockerfile/gateway smoke'ları, installer/update smoke'ları ve hızlı bundled-plugin Docker E2E'yi ayrı job'lar olarak çalıştırır, böylece installer işi kök imaj smoke'larının arkasında beklemez.
|
||||
- **Hızlı yol**, Docker/paket yüzeylerine, paketli Plugin paket/manifest değişikliklerine veya Docker smoke işlerinin çalıştırdığı çekirdek Plugin/kanal/Gateway/Plugin SDK yüzeylerine dokunan pull request'ler için çalışır. Yalnızca kaynak kodu içeren paketli Plugin değişiklikleri, yalnızca test düzenlemeleri ve yalnızca dokümantasyon düzenlemeleri Docker worker ayırmaz. Hızlı yol kök Dockerfile imajını bir kez build eder, CLI'yi kontrol eder, agents delete shared-workspace CLI smoke çalıştırır, container gateway-network e2e çalıştırır, paketli extension build arg'ını doğrular ve 240 saniyelik toplam komut zaman aşımı altında sınırlı paketli-Plugin Docker profilini çalıştırır (her senaryonun Docker çalıştırması ayrı ayrı sınırlandırılır).
|
||||
- **Tam yol**, QR paket kurulumu ve yükleyici Docker/güncelleme kapsamını gece zamanlanmış çalıştırmalar, manuel dispatch'ler, workflow-call yayın kontrolleri ve gerçekten yükleyici/paket/Docker yüzeylerine dokunan pull request'ler için korur. Tam modda install-smoke, bir hedef-SHA GHCR kök Dockerfile smoke imajı hazırlar veya yeniden kullanır; ardından QR paket kurulumu, kök Dockerfile/Gateway smokes, yükleyici/güncelleme smokes ve hızlı paketli-Plugin Docker E2E'yi ayrı işler olarak çalıştırır. Böylece yükleyici işi kök imaj smokes arkasında beklemez.
|
||||
|
||||
`main` push'ları (merge commit'leri dahil) tam yolu zorlamaz; changed-scope mantığı bir push üzerinde tam kapsam isteyecek olduğunda workflow hızlı Docker smoke'u korur ve tam install smoke'u gece veya yayın doğrulamasına bırakır.
|
||||
`main` push'ları (merge commit'ler dahil) tam yolu zorlamaz; değişiklik kapsamı mantığı bir push'ta tam kapsam istediğinde workflow hızlı Docker smoke'u korur ve tam install smoke'u gece veya yayın doğrulamasına bırakır.
|
||||
|
||||
Yavaş Bun global install image-provider smoke'u ayrıca `run_bun_global_install_smoke` ile gate'lenir. Gece zamanlamasında ve yayın kontrolleri workflow'undan çalışır; manuel `Install Smoke` dispatch'leri buna dahil olmayı seçebilir, ancak pull request'ler ve `main` push'ları çalıştırmaz. QR ve installer Docker testleri kendi kurulum odaklı Dockerfile'larını korur.
|
||||
Yavaş Bun global kurulum image-provider smoke, `run_bun_global_install_smoke` tarafından ayrı şekilde kapılanır. Gece zamanlamasında ve yayın kontrolleri workflow'undan çalışır; manuel `Install Smoke` dispatch'leri buna dahil olmayı seçebilir, ancak pull request'ler ve `main` push'ları çalıştırmaz. QR ve yükleyici Docker testleri kendi kurulum odaklı Dockerfile'larını korur.
|
||||
|
||||
## Yerel Docker E2E
|
||||
|
||||
`pnpm test:docker:all` paylaşılan bir live-test imajını önceden build eder, OpenClaw'u bir kez npm tarball'ı olarak paketler ve iki paylaşılan `scripts/e2e/Dockerfile` imajı build eder:
|
||||
`pnpm test:docker:all` tek bir paylaşılan canlı test imajını önceden build eder, OpenClaw'ı bir npm tarball'ı olarak bir kez paketler ve iki paylaşılan `scripts/e2e/Dockerfile` imajı build eder:
|
||||
|
||||
- installer/update/plugin-dependency lane'leri için çıplak bir Node/Git runner;
|
||||
- normal işlevsellik lane'leri için aynı tarball'ı `/app` içine kuran işlevsel bir imaj.
|
||||
- yükleyici/güncelleme/Plugin bağımlılığı hatları için yalın bir Node/Git runner;
|
||||
- normal işlevsellik hatları için aynı tarball'ı `/app` içine yükleyen işlevsel bir imaj.
|
||||
|
||||
Docker lane tanımları `scripts/lib/docker-e2e-scenarios.mjs` içinde, planner mantığı `scripts/lib/docker-e2e-plan.mjs` içinde bulunur ve runner yalnızca seçilen planı yürütür. Scheduler, imajı lane başına `OPENCLAW_DOCKER_E2E_BARE_IMAGE` ve `OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE` ile seçer, ardından lane'leri `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır.
|
||||
Docker hat tanımları `scripts/lib/docker-e2e-scenarios.mjs` içinde, planlayıcı mantığı `scripts/lib/docker-e2e-plan.mjs` içinde bulunur ve runner yalnızca seçilen planı çalıştırır. Zamanlayıcı hat başına imajı `OPENCLAW_DOCKER_E2E_BARE_IMAGE` ve `OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE` ile seçer, ardından hatları `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır.
|
||||
|
||||
### Ayarlanabilirler
|
||||
|
||||
| Değişken | Varsayılan | Amaç |
|
||||
| ------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- |
|
||||
| `OPENCLAW_DOCKER_ALL_PARALLELISM` | 10 | Normal lane'ler için ana havuz slot sayısı. |
|
||||
| `OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM` | 10 | Provider'a duyarlı tail-pool slot sayısı. |
|
||||
| `OPENCLAW_DOCKER_ALL_LIVE_LIMIT` | 9 | Provider'ların throttle uygulamaması için eşzamanlı live lane sınırı. |
|
||||
| `OPENCLAW_DOCKER_ALL_NPM_LIMIT` | 10 | Eşzamanlı npm install lane sınırı. |
|
||||
| `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT` | 7 | Eşzamanlı multi-service lane sınırı. |
|
||||
| `OPENCLAW_DOCKER_ALL_START_STAGGER_MS` | 2000 | Docker daemon create fırtınalarını önlemek için lane başlangıçları arasındaki gecikme; gecikme olmaması için `0` olarak ayarlayın. |
|
||||
| `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS` | 7200000 | Lane başına fallback timeout'u (120 dakika); seçili live/tail lane'ler daha sıkı sınırlar kullanır. |
|
||||
| `OPENCLAW_DOCKER_ALL_DRY_RUN` | unset | `1`, lane'leri çalıştırmadan scheduler planını yazdırır. |
|
||||
| `OPENCLAW_DOCKER_ALL_LANES` | unset | Virgülle ayrılmış tam lane listesi; agent'ların tek bir başarısız lane'i yeniden üretebilmesi için cleanup smoke'u atlar. |
|
||||
| `OPENCLAW_DOCKER_ALL_PARALLELISM` | 10 | Normal hatlar için ana havuz slot sayısı. |
|
||||
| `OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM` | 10 | Provider'a duyarlı kuyruk havuzu slot sayısı. |
|
||||
| `OPENCLAW_DOCKER_ALL_LIVE_LIMIT` | 9 | Provider'ların throttle uygulamaması için eşzamanlı canlı hat sınırı. |
|
||||
| `OPENCLAW_DOCKER_ALL_NPM_LIMIT` | 10 | Eşzamanlı npm kurulum hattı sınırı. |
|
||||
| `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT` | 7 | Eşzamanlı çok hizmetli hat sınırı. |
|
||||
| `OPENCLAW_DOCKER_ALL_START_STAGGER_MS` | 2000 | Docker daemon create fırtınalarını önlemek için hat başlangıçları arasındaki gecikme; gecikme istemiyorsanız `0` olarak ayarlayın. |
|
||||
| `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS` | 7200000 | Hat başına yedek zaman aşımı (120 dakika); seçili canlı/kuyruk hatları daha sıkı sınırlar kullanır. |
|
||||
| `OPENCLAW_DOCKER_ALL_DRY_RUN` | unset | `1`, hatları çalıştırmadan zamanlayıcı planını yazdırır. |
|
||||
| `OPENCLAW_DOCKER_ALL_LANES` | unset | Virgülle ayrılmış tam hat listesi; agent'ların tek bir başarısız hattı yeniden üretebilmesi için cleanup smoke'u atlar. |
|
||||
|
||||
Etkili sınırından daha ağır bir lane yine de boş bir havuzdan başlayabilir, ardından kapasiteyi serbest bırakana kadar tek başına çalışır. Yerel aggregate Docker preflight'ı yapar, eski OpenClaw E2E container'larını kaldırır, aktif-lane durumunu yayınlar, en uzundan başlayarak sıralama için lane zamanlamalarını kalıcılaştırır ve varsayılan olarak ilk başarısızlıktan sonra yeni havuzlu lane'lerin zamanlanmasını durdurur.
|
||||
Etkin sınırından daha ağır bir hat yine de boş bir havuzdan başlayabilir, ardından kapasiteyi serbest bırakana kadar tek başına çalışır. Yerel toplam preflight'lar Docker'ı kontrol eder, eski OpenClaw E2E container'larını kaldırır, aktif hat durumunu yayımlar, en uzun önce sıralama için hat zamanlamalarını kalıcılaştırır ve varsayılan olarak ilk başarısızlıktan sonra yeni havuz hatları zamanlamayı durdurur.
|
||||
|
||||
### Yeniden kullanılabilir live/E2E workflow'u
|
||||
### Yeniden kullanılabilir canlı/E2E workflow
|
||||
|
||||
Yeniden kullanılabilir live/E2E workflow'u, hangi paket, imaj türü, live imaj, lane ve credential kapsamının gerekli olduğunu `scripts/test-docker-all.mjs --plan-json` komutuna sorar. `scripts/docker-e2e.mjs` ardından bu planı GitHub output'larına ve özetlerine dönüştürür. OpenClaw'u `scripts/package-openclaw-for-docker.mjs` üzerinden paketler, current-run package artifact'ini indirir veya `package_artifact_run_id` içinden bir package artifact'i indirir; tarball inventory'sini doğrular; plan package-installed lane'lere ihtiyaç duyduğunda Blacksmith'in Docker layer cache'i üzerinden package-digest-tagged bare/functional GHCR Docker E2E imajlarını build edip push eder; ve yeniden build etmek yerine sağlanan `docker_e2e_bare_image`/`docker_e2e_functional_image` input'larını veya mevcut package-digest imajlarını yeniden kullanır. Takılmış bir registry/cache stream'inin CI kritik yolunun çoğunu tüketmek yerine hızla yeniden denenmesi için Docker image pull'ları deneme başına sınırlı 180 saniyelik timeout ile yeniden denenir.
|
||||
Yeniden kullanılabilir canlı/E2E workflow, hangi paket, imaj türü, canlı imaj, hat ve credential kapsamının gerektiğini `scripts/test-docker-all.mjs --plan-json` komutuna sorar. Ardından `scripts/docker-e2e.mjs` bu planı GitHub çıktıları ve özetlerine dönüştürür. OpenClaw'ı `scripts/package-openclaw-for-docker.mjs` üzerinden paketler, mevcut çalıştırma paket yapıtını indirir veya `package_artifact_run_id` içinden bir paket yapıtı indirir; tarball envanterini doğrular; plan paket yüklü hatlar gerektirdiğinde Blacksmith'in Docker katman önbelleği üzerinden paket-digest etiketli yalın/işlevsel GHCR Docker E2E imajlarını build edip push eder; sağlanan `docker_e2e_bare_image`/`docker_e2e_functional_image` girdilerini veya mevcut paket-digest imajlarını yeniden build etmek yerine yeniden kullanır. Docker imaj çekmeleri, kayıt/cache akışı takıldığında CI kritik yolunun çoğunu tüketmek yerine hızlıca yeniden denensin diye deneme başına sınırlı 180 saniyelik zaman aşımıyla yeniden denenir.
|
||||
|
||||
### Yayın yolu parçaları
|
||||
|
||||
Release Docker kapsamı, daha küçük parçalı job'ları `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır; böylece her parça yalnızca ihtiyaç duyduğu imaj türünü çeker ve aynı ağırlıklı scheduler üzerinden birden fazla lane yürütür:
|
||||
Yayın Docker kapsamı `OPENCLAW_SKIP_DOCKER_BUILD=1` ile daha küçük parçalı işler çalıştırır; böylece her parça yalnızca ihtiyaç duyduğu imaj türünü çeker ve aynı ağırlıklı zamanlayıcı üzerinden birden çok hattı yürütür:
|
||||
|
||||
- `OPENCLAW_DOCKER_ALL_PROFILE=release-path`
|
||||
- `OPENCLAW_DOCKER_ALL_CHUNK=core | package-update-openai | package-update-anthropic | package-update-core | plugins-runtime-plugins | plugins-runtime-services | plugins-runtime-install-a..h | bundled-channels`
|
||||
|
||||
Geçerli sürüm Docker parçaları `core`, `package-update-openai`, `package-update-anthropic`, `package-update-core`, `plugins-runtime-plugins`, `plugins-runtime-services`, `plugins-runtime-install-a` ile `plugins-runtime-install-h` arası, `bundled-channels-core`, `bundled-channels-update-a`, `bundled-channels-update-discord`, `bundled-channels-update-b` ve `bundled-channels-contracts` şeklindedir. Toplu `bundled-channels` parçası, manuel tek seferlik yeniden çalıştırmalar için kullanılabilir kalır; `plugins-runtime-core`, `plugins-runtime` ve `plugins-integrations` toplu plugin/runtime takma adları olarak kalır. `install-e2e` hat takma adı, her iki provider installer hattı için toplu manuel yeniden çalıştırma takma adı olarak kalır. `bundled-channels` parçası, seri hepsi-bir-arada `bundled-channel-deps` hattı yerine bölünmüş `bundled-channel-*` ve `bundled-channel-update-*` hatlarını çalıştırır.
|
||||
Geçerli sürüm Docker parçaları `core`, `package-update-openai`, `package-update-anthropic`, `package-update-core`, `plugins-runtime-plugins`, `plugins-runtime-services`, `plugins-runtime-install-a` ile `plugins-runtime-install-h`, `bundled-channels-core`, `bundled-channels-update-a`, `bundled-channels-update-discord`, `bundled-channels-update-b` ve `bundled-channels-contracts` şeklindedir. Toplu `bundled-channels` parçası, manuel tek seferlik yeniden çalıştırmalar için kullanılabilir kalır; `plugins-runtime-core`, `plugins-runtime` ve `plugins-integrations` ise toplu Plugin/runtime takma adları olarak kalır. `install-e2e` hat takma adı, her iki sağlayıcı yükleyici hattı için toplu manuel yeniden çalıştırma takma adı olarak kalır. `bundled-channels` parçası, seri hepsi bir arada `bundled-channel-deps` hattı yerine bölünmüş `bundled-channel-*` ve `bundled-channel-update-*` hatlarını çalıştırır.
|
||||
|
||||
OpenWebUI, tam release-path kapsamı bunu istediğinde `plugins-runtime-services` içine katlanır ve yalnızca OpenWebUI-only dispatch’leri için bağımsız bir `openwebui` parçası tutar. Bundled-channel güncelleme hatları, geçici npm ağ hataları için bir kez yeniden dener.
|
||||
Tam sürüm yolu kapsamı istediğinde OpenWebUI `plugins-runtime-services` içine katlanır ve yalnızca OpenWebUI’ye özel tetiklemeler için bağımsız bir `openwebui` parçası tutar. Paketlenmiş kanal güncelleme hatları, geçici npm ağ hatalarında bir kez yeniden dener.
|
||||
|
||||
Her parça `.artifacts/docker-tests/` dizinini hat günlükleri, zamanlamalar, `summary.json`, `failures.json`, aşama zamanlamaları, scheduler plan JSON’u, yavaş hat tabloları ve hat başına yeniden çalıştırma komutlarıyla yükler. Workflow `docker_lanes` girdisi, parça işleri yerine seçili hatları hazırlanmış imajlara karşı çalıştırır; bu, başarısız hat hata ayıklamasını hedefli tek bir Docker işiyle sınırlı tutar ve o çalıştırma için package artifact’i hazırlar, indirir veya yeniden kullanır; seçili hat canlı Docker hattıysa hedefli iş, bu yeniden çalıştırma için live-test imajını yerel olarak oluşturur. Oluşturulan hat başına GitHub yeniden çalıştırma komutları, bu değerler mevcut olduğunda `package_artifact_run_id`, `package_artifact_name` ve hazırlanmış imaj girdilerini içerir; böylece başarısız bir hat, başarısız çalıştırmadaki tam aynı package ve imajları yeniden kullanabilir.
|
||||
Her parça, hat günlükleri, zamanlamalar, `summary.json`, `failures.json`, aşama zamanlamaları, zamanlayıcı planı JSON’u, yavaş hat tabloları ve hat başına yeniden çalıştırma komutlarıyla birlikte `.artifacts/docker-tests/` yükler. İş akışı `docker_lanes` girdisi, parça işleri yerine hazırlanmış imajlara karşı seçilen hatları çalıştırır; bu, başarısız hat hata ayıklamasını hedefli tek bir Docker işiyle sınırlı tutar ve o çalıştırma için paket artifact’ini hazırlar, indirir veya yeniden kullanır. Seçilen bir hat canlı Docker hattıysa, hedefli iş bu yeniden çalıştırma için canlı test imajını yerel olarak oluşturur. Oluşturulan hat başına GitHub yeniden çalıştırma komutları, bu değerler mevcut olduğunda `package_artifact_run_id`, `package_artifact_name` ve hazırlanmış imaj girdilerini içerir; böylece başarısız bir hat, başarısız çalıştırmadaki tam paket ve imajları yeniden kullanabilir.
|
||||
|
||||
```bash
|
||||
pnpm test:docker:rerun <run-id> # download Docker artifacts and print combined/per-lane targeted rerun commands
|
||||
pnpm test:docker:timings <summary> # slow-lane and phase critical-path summaries
|
||||
```
|
||||
|
||||
Zamanlanmış canlı/E2E workflow, tam release-path Docker paketini günlük çalıştırır.
|
||||
Zamanlanmış canlı/E2E iş akışı, tam sürüm yolu Docker paketini günlük olarak çalıştırır.
|
||||
|
||||
## Plugin Ön Sürümü
|
||||
|
||||
`Plugin Prerelease` daha pahalı ürün/package kapsamıdır; bu nedenle `Full Release Validation` tarafından veya açık bir operator tarafından dispatch edilen ayrı bir workflow’dur. Normal pull request’ler, `main` push’ları ve bağımsız manuel CI dispatch’leri bu paketi kapalı tutar. Bundled plugin testlerini sekiz extension worker arasında dengeler; bu extension shard işleri, her grup için bir Vitest worker ve daha büyük bir Node heap ile aynı anda en fazla iki plugin config grubunu çalıştırır, böylece import ağırlıklı plugin toplu işleri ekstra CI işi oluşturmaz.
|
||||
`Plugin Prerelease` daha maliyetli ürün/paket kapsamıdır, bu nedenle `Full Release Validation` tarafından veya açık bir operatör tarafından tetiklenen ayrı bir iş akışıdır. Normal pull request’ler, `main` push’ları ve bağımsız manuel CI tetiklemeleri bu paketi kapalı tutar. Paketlenmiş Plugin testlerini sekiz uzantı çalışanı arasında dengeler; bu uzantı shard işleri, içe aktarma ağırlıklı Plugin gruplarının ek CI işleri oluşturmasını önlemek için grup başına bir Vitest çalışanı ve daha büyük bir Node heap ile aynı anda en fazla iki Plugin config grubunu çalıştırır.
|
||||
|
||||
## QA Lab
|
||||
|
||||
QA Lab, ana smart-scoped workflow dışında ayrılmış CI hatlarına sahiptir.
|
||||
QA Lab, ana akıllı kapsamlı iş akışının dışında ayrılmış CI hatlarına sahiptir.
|
||||
|
||||
- `Parity gate` workflow’u eşleşen PR değişikliklerinde ve manuel dispatch’te çalışır; özel QA runtime’ını derler ve mock GPT-5.5 ile Opus 4.6 agentic paketlerini karşılaştırır.
|
||||
- `QA-Lab - All Lanes` workflow’u her gece `main` üzerinde ve manuel dispatch’te çalışır; mock parity gate’i, canlı Matrix hattını ve canlı Telegram ile Discord hatlarını paralel işler olarak yayar. Canlı işler `qa-live-shared` environment’ını kullanır; Telegram/Discord ise Convex lease’lerini kullanır.
|
||||
- `Parity gate` iş akışı, eşleşen PR değişikliklerinde ve manuel tetiklemede çalışır; özel QA runtime’ını oluşturur ve sahte GPT-5.5 ile Opus 4.6 agentic paketlerini karşılaştırır.
|
||||
- `QA-Lab - All Lanes` iş akışı her gece `main` üzerinde ve manuel tetiklemede çalışır; sahte parite kapısını, canlı Matrix hattını ve canlı Telegram ile Discord hatlarını paralel işler olarak yayar. Canlı işler `qa-live-shared` ortamını kullanır; Telegram/Discord ise Convex lease’lerini kullanır.
|
||||
|
||||
Sürüm kontrolleri, deterministic mock provider ve mock nitelikli modellerle (`mock-openai/gpt-5.5` ve `mock-openai/gpt-5.5-alt`) Matrix ve Telegram canlı transport hatlarını çalıştırır; böylece kanal contract’ı canlı model gecikmesinden ve normal provider-plugin başlangıcından yalıtılır. Canlı transport Gateway, memory search’ü devre dışı bırakır çünkü QA parity memory davranışını ayrı kapsar; provider bağlantısı ayrı canlı model, yerel provider ve Docker provider paketleriyle kapsanır.
|
||||
Sürüm kontrolleri, canlı model gecikmesinden ve normal sağlayıcı Plugin başlatmasından izole edilmiş kanal kontratı için deterministik sahte sağlayıcı ve sahte nitelikli modellerle (`mock-openai/gpt-5.5` ve `mock-openai/gpt-5.5-alt`) Matrix ve Telegram canlı aktarım hatlarını çalıştırır. Canlı aktarım Gateway’i bellek aramasını devre dışı bırakır çünkü QA paritesi bellek davranışını ayrı olarak kapsar; sağlayıcı bağlantısı ayrı canlı model, yerel sağlayıcı ve Docker sağlayıcı paketleri tarafından kapsanır.
|
||||
|
||||
Matrix, zamanlanmış ve sürüm gate’leri için `--profile fast` kullanır ve yalnızca checkout edilmiş CLI bunu desteklediğinde `--fail-fast` ekler. CLI varsayılanı ve manuel workflow girdisi `all` olarak kalır; manuel `matrix_profile=all` dispatch’i tam Matrix kapsamını her zaman `transport`, `media`, `e2ee-smoke`, `e2ee-deep` ve `e2ee-cli` işlerine shard’lar.
|
||||
Matrix, zamanlanmış ve sürüm kapıları için `--profile fast` kullanır ve yalnızca checkout yapılmış CLI bunu desteklediğinde `--fail-fast` ekler. CLI varsayılanı ve manuel iş akışı girdisi `all` olarak kalır; manuel `matrix_profile=all` tetiklemesi, tam Matrix kapsamını her zaman `transport`, `media`, `e2ee-smoke`, `e2ee-deep` ve `e2ee-cli` işlerine shard’lar.
|
||||
|
||||
`OpenClaw Release Checks`, sürüm onayından önce release-critical QA Lab hatlarını da çalıştırır; QA parity gate’i aday ve baseline paketlerini paralel hat işleri olarak çalıştırır, ardından son parity karşılaştırması için her iki artifact’i küçük bir rapor işine indirir.
|
||||
`OpenClaw Release Checks`, sürüm onayından önce sürüm açısından kritik QA Lab hatlarını da çalıştırır; QA parite kapısı aday ve temel paketleri paralel hat işleri olarak çalıştırır, ardından nihai parite karşılaştırması için iki artifact’i de küçük bir rapor işine indirir.
|
||||
|
||||
Değişiklik gerçekten QA runtime’a, model-pack parity’ye veya parity workflow’unun sahip olduğu bir yüzeye dokunmuyorsa PR landing yolunu `Parity gate` arkasına koymayın. Normal kanal, config, dokümantasyon veya unit-test düzeltmeleri için bunu isteğe bağlı bir sinyal olarak ele alın ve scoped CI/check kanıtını izleyin.
|
||||
Değişiklik gerçekten QA runtime’ına, model paketi paritesine veya parite iş akışının sahibi olduğu bir yüzeye dokunmuyorsa PR landing yolunu `Parity gate` arkasına koymayın. Normal kanal, config, doküman veya birim testi düzeltmeleri için bunu isteğe bağlı bir sinyal olarak ele alın ve bunun yerine kapsamlı CI/kontrol kanıtını izleyin.
|
||||
|
||||
## CodeQL
|
||||
|
||||
`CodeQL` workflow’u, tam repository taraması değil, bilinçli olarak dar bir ilk geçiş güvenlik tarayıcısıdır. Günlük, manuel ve draft olmayan pull request guard çalışmaları, Actions workflow kodunu ve en yüksek riskli JavaScript/TypeScript yüzeylerini yüksek/kritik `security-severity` değerlerine filtrelenmiş yüksek güvenilirlikli güvenlik sorgularıyla tarar.
|
||||
`CodeQL` iş akışı, tam depo taraması değil, bilerek dar tutulmuş ilk geçiş güvenlik tarayıcısıdır. Günlük, manuel ve draft olmayan pull request koruma çalıştırmaları, Actions iş akışı kodunu ve en yüksek riskli JavaScript/TypeScript yüzeylerini, yüksek/kritik `security-severity` değerine filtrelenmiş yüksek güven güvenlik sorgularıyla tarar.
|
||||
|
||||
Pull request guard hafif kalır: yalnızca `.github/actions`, `.github/codeql`, `.github/workflows`, `packages` veya `src` altındaki değişiklikler için başlar ve zamanlanmış workflow ile aynı yüksek güvenilirlikli güvenlik matrisini çalıştırır. Android ve macOS CodeQL, PR varsayılanlarının dışında kalır.
|
||||
Pull request koruması hafif kalır: yalnızca `.github/actions`, `.github/codeql`, `.github/workflows`, `packages` veya `src` altındaki değişiklikler için başlar ve zamanlanmış iş akışıyla aynı yüksek güven güvenlik matrisini çalıştırır. Android ve macOS CodeQL, PR varsayılanlarının dışında kalır.
|
||||
|
||||
### Güvenlik kategorileri
|
||||
|
||||
| Kategori | Yüzey |
|
||||
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `/codeql-security-high/core-auth-secrets` | Auth, secret’lar, sandbox, cron ve gateway baseline |
|
||||
| `/codeql-security-high/channel-runtime-boundary` | Çekirdek kanal implementation contract’ları ile kanal plugin runtime’ı, gateway, Plugin SDK, secret’lar, audit temas noktaları |
|
||||
| `/codeql-security-high/network-ssrf-boundary` | Çekirdek SSRF, IP ayrıştırma, ağ guard’ı, web-fetch ve Plugin SDK SSRF policy yüzeyleri |
|
||||
| `/codeql-security-high/mcp-process-tool-boundary` | MCP sunucuları, process execution helper’ları, outbound delivery ve agent tool-execution gate’leri |
|
||||
| `/codeql-security-high/plugin-trust-boundary` | Plugin install, loader, manifest, registry, runtime-dependency staging, source-loading ve Plugin SDK package contract trust yüzeyleri |
|
||||
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `/codeql-security-high/core-auth-secrets` | Auth, secrets, sandbox, cron ve gateway temel durumu |
|
||||
| `/codeql-security-high/channel-runtime-boundary` | Çekirdek kanal uygulama kontratları ile kanal Plugin runtime’ı, gateway, Plugin SDK, secrets, audit temas noktaları |
|
||||
| `/codeql-security-high/network-ssrf-boundary` | Çekirdek SSRF, IP ayrıştırma, ağ koruması, web-fetch ve Plugin SDK SSRF ilke yüzeyleri |
|
||||
| `/codeql-security-high/mcp-process-tool-boundary` | MCP sunucuları, süreç yürütme yardımcıları, outbound delivery ve ajan araç yürütme kapıları |
|
||||
| `/codeql-security-high/plugin-trust-boundary` | Plugin yükleme, loader, manifest, registry, runtime dependency hazırlama, kaynak yükleme ve Plugin SDK paket kontratı güven yüzeyleri |
|
||||
|
||||
### Platforma özgü güvenlik shard’ları
|
||||
### Platforma özel güvenlik shard’ları
|
||||
|
||||
- `CodeQL Android Critical Security` — zamanlanmış Android güvenlik shard’ı. Workflow sanity tarafından kabul edilen en küçük Blacksmith Linux runner üzerinde CodeQL için Android uygulamasını manuel olarak derler. `/codeql-critical-security/android` altında yükler.
|
||||
- `CodeQL macOS Critical Security` — haftalık/manuel macOS güvenlik shard’ı. Blacksmith macOS üzerinde CodeQL için macOS uygulamasını manuel olarak derler, dependency build sonuçlarını yüklenen SARIF dışına filtreler ve `/codeql-critical-security/macos` altında yükler. macOS build’i temiz olduğunda bile runtime’a baskın geldiği için günlük varsayılanların dışında tutulur.
|
||||
- `CodeQL Android Critical Security` — zamanlanmış Android güvenlik shard’ı. Workflow sanity tarafından kabul edilen en küçük Blacksmith Linux runner üzerinde CodeQL için Android uygulamasını manuel olarak oluşturur. `/codeql-critical-security/android` altında yükler.
|
||||
- `CodeQL macOS Critical Security` — haftalık/manuel macOS güvenlik shard’ı. Blacksmith macOS üzerinde CodeQL için macOS uygulamasını manuel olarak oluşturur, dependency build sonuçlarını yüklenen SARIF dışına filtreler ve `/codeql-critical-security/macos` altında yükler. Temiz olduğunda bile macOS build’i çalışma süresini domine ettiği için günlük varsayılanların dışında tutulur.
|
||||
|
||||
### Critical Quality kategorileri
|
||||
### Kritik Kalite kategorileri
|
||||
|
||||
`CodeQL Critical Quality`, eşleşen güvenlik dışı shard’dır. Daha küçük Blacksmith Linux runner üzerinde dar ve yüksek değerli yüzeylerde yalnızca error-severity, güvenlik dışı JavaScript/TypeScript kalite sorgularını çalıştırır. Pull request guard’ı, zamanlanmış profilden bilinçli olarak daha küçüktür: draft olmayan PR’lar yalnızca agent command/model/tool execution ve reply dispatch kodu, config schema/migration/IO kodu, auth/secrets/sandbox/security kodu, çekirdek kanal ve bundled channel plugin runtime, gateway protocol/server-method, memory runtime/SDK glue, MCP/process/outbound delivery, provider runtime/model catalog, session diagnostics/delivery queues, plugin loader, Plugin SDK/package-contract veya Plugin SDK reply runtime değişiklikleri için eşleşen `agent-runtime-boundary`, `config-boundary`, `core-auth-secrets`, `channel-runtime-boundary`, `gateway-runtime-boundary`, `memory-runtime-boundary`, `mcp-process-runtime-boundary`, `provider-runtime-boundary`, `session-diagnostics-boundary`, `plugin-boundary`, `plugin-sdk-package-contract` ve `plugin-sdk-reply-runtime` shard’larını çalıştırır. CodeQL config ve quality workflow değişiklikleri on iki PR quality shard’ının tamamını çalıştırır.
|
||||
`CodeQL Critical Quality` eşleşen güvenlik dışı shard’dır. Daha küçük Blacksmith Linux runner üzerinde, dar ve yüksek değerli yüzeyler genelinde yalnızca hata önem seviyeli, güvenlik dışı JavaScript/TypeScript kalite sorgularını çalıştırır. Pull request koruması, zamanlanmış profilden bilerek daha küçüktür: draft olmayan PR’lar yalnızca ajan komut/model/araç yürütmesi ve yanıt dispatch kodu; config şeması/migration/IO kodu; auth/secrets/sandbox/security kodu; çekirdek kanal ve paketlenmiş kanal Plugin runtime’ı; gateway protokolü/sunucu yöntemi; bellek runtime/SDK bağlantısı; MCP/process/outbound delivery; sağlayıcı runtime/model kataloğu; oturum diagnostics/delivery queue’ları; Plugin loader; Plugin SDK/paket kontratı; veya Plugin SDK yanıt runtime değişiklikleri için eşleşen `agent-runtime-boundary`, `config-boundary`, `core-auth-secrets`, `channel-runtime-boundary`, `gateway-runtime-boundary`, `memory-runtime-boundary`, `mcp-process-runtime-boundary`, `provider-runtime-boundary`, `session-diagnostics-boundary`, `plugin-boundary`, `plugin-sdk-package-contract` ve `plugin-sdk-reply-runtime` shard’larını çalıştırır. CodeQL config ve kalite iş akışı değişiklikleri on iki PR kalite shard’ının tamamını çalıştırır.
|
||||
|
||||
Manuel dispatch şunları kabul eder:
|
||||
Manuel tetikleme şunu kabul eder:
|
||||
|
||||
```
|
||||
profile=all|agent-runtime-boundary|config-boundary|core-auth-secrets|channel-runtime-boundary|gateway-runtime-boundary|memory-runtime-boundary|mcp-process-runtime-boundary|plugin-boundary|plugin-sdk-package-contract|plugin-sdk-reply-runtime|provider-runtime-boundary|session-diagnostics-boundary
|
||||
```
|
||||
|
||||
Dar profiller, bir quality shard’ını yalıtılmış şekilde çalıştırmak için öğretim/iterasyon hook’larıdır.
|
||||
Dar profiller, tek bir kalite shard’ını yalıtılmış şekilde çalıştırmak için öğretme/iterasyon kancalarıdır.
|
||||
|
||||
| Kategori | Yüzey |
|
||||
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `/codeql-critical-quality/core-auth-secrets` | Auth, gizli bilgiler, sandbox, Cron ve Gateway güvenlik sınırı kodu |
|
||||
| `/codeql-critical-quality/config-boundary` | Yapılandırma şeması, geçiş, normalleştirme ve IO sözleşmeleri |
|
||||
| `/codeql-critical-quality/gateway-runtime-boundary` | Gateway protokol şemaları ve sunucu yöntemi sözleşmeleri |
|
||||
| `/codeql-critical-quality/channel-runtime-boundary` | Çekirdek kanal ve paketli kanal Plugin uygulama sözleşmeleri |
|
||||
| `/codeql-critical-quality/agent-runtime-boundary` | Komut yürütme, model/provider dağıtımı, otomatik yanıt dağıtımı ve kuyruklar ile ACP kontrol düzlemi çalışma zamanı sözleşmeleri |
|
||||
| `/codeql-critical-quality/mcp-process-runtime-boundary` | MCP sunucuları ve araç köprüleri, süreç gözetimi yardımcıları ve giden teslim sözleşmeleri |
|
||||
| `/codeql-critical-quality/memory-runtime-boundary` | Bellek ana makinesi SDK'sı, bellek çalışma zamanı cepheleri, bellek Plugin SDK takma adları, bellek çalışma zamanı etkinleştirme bağlantısı ve bellek doctor komutları |
|
||||
| `/codeql-critical-quality/session-diagnostics-boundary` | Yanıt kuyruğu iç yapıları, oturum teslim kuyrukları, giden oturum bağlama/teslim yardımcıları, tanılama olay/günlük paketi yüzeyleri ve oturum doctor CLI sözleşmeleri |
|
||||
| `/codeql-critical-quality/plugin-sdk-reply-runtime` | Plugin SDK gelen yanıt dağıtımı, yanıt yükü/parçalama/çalışma zamanı yardımcıları, kanal yanıt seçenekleri, teslim kuyrukları ve oturum/iş parçacığı bağlama yardımcıları |
|
||||
| `/codeql-critical-quality/provider-runtime-boundary` | Model kataloğu normalleştirmesi, provider kimlik doğrulaması ve keşfi, provider çalışma zamanı kaydı, provider varsayılanları/katalogları ve web/arama/getirme/embedding kayıt defterleri |
|
||||
| `/codeql-critical-quality/ui-control-plane` | Kontrol UI önyüklemesi, yerel kalıcılık, Gateway kontrol akışları ve görev kontrol düzlemi çalışma zamanı sözleşmeleri |
|
||||
| `/codeql-critical-quality/web-media-runtime-boundary` | Çekirdek web getirme/arama, medya IO, medya anlama, görüntü oluşturma ve medya oluşturma çalışma zamanı sözleşmeleri |
|
||||
| `/codeql-critical-quality/plugin-boundary` | Yükleyici, kayıt defteri, genel yüzey ve Plugin SDK giriş noktası sözleşmeleri |
|
||||
| `/codeql-critical-quality/plugin-sdk-package-contract` | Yayımlanan paket tarafı Plugin SDK kaynağı ve Plugin paketi sözleşme yardımcıları |
|
||||
| Kategori | Yüzey |
|
||||
| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `/codeql-critical-quality/core-auth-secrets` | Kimlik doğrulama, gizli bilgiler, sandbox, Cron ve Gateway güvenlik sınırı kodu |
|
||||
| `/codeql-critical-quality/config-boundary` | Yapılandırma şeması, geçiş, normalleştirme ve G/Ç sözleşmeleri |
|
||||
| `/codeql-critical-quality/gateway-runtime-boundary` | Gateway protokol şemaları ve sunucu yöntemi sözleşmeleri |
|
||||
| `/codeql-critical-quality/channel-runtime-boundary` | Çekirdek kanal ve paketle gelen kanal plugin uygulama sözleşmeleri |
|
||||
| `/codeql-critical-quality/agent-runtime-boundary` | Komut yürütme, model/sağlayıcı yönlendirme, otomatik yanıt yönlendirme ve kuyruklar ile ACP denetim düzlemi çalışma zamanı sözleşmeleri |
|
||||
| `/codeql-critical-quality/mcp-process-runtime-boundary` | MCP sunucuları ve araç köprüleri, süreç gözetimi yardımcıları ve giden teslimat sözleşmeleri |
|
||||
| `/codeql-critical-quality/memory-runtime-boundary` | Bellek ana bilgisayar SDK'sı, bellek çalışma zamanı cepheleri, bellek Plugin SDK adları, bellek çalışma zamanı etkinleştirme bağlayıcısı ve bellek doctor komutları |
|
||||
| `/codeql-critical-quality/session-diagnostics-boundary` | Yanıt kuyruğu iç öğeleri, oturum teslimat kuyrukları, giden oturum bağlama/teslimat yardımcıları, tanılama olayı/günlük paketi yüzeyleri ve oturum doctor CLI sözleşmeleri |
|
||||
| `/codeql-critical-quality/plugin-sdk-reply-runtime` | Plugin SDK gelen yanıt yönlendirme, yanıt yükü/parçalama/çalışma zamanı yardımcıları, kanal yanıt seçenekleri, teslimat kuyrukları ve oturum/iş parçacığı bağlama yardımcıları |
|
||||
| `/codeql-critical-quality/provider-runtime-boundary` | Model kataloğu normalleştirme, sağlayıcı kimlik doğrulama ve keşif, sağlayıcı çalışma zamanı kaydı, sağlayıcı varsayılanları/katalogları ve web/arama/getirme/gömme kayıtları |
|
||||
| `/codeql-critical-quality/ui-control-plane` | Denetim UI önyüklemesi, yerel kalıcılık, Gateway denetim akışları ve görev denetim düzlemi çalışma zamanı sözleşmeleri |
|
||||
| `/codeql-critical-quality/web-media-runtime-boundary` | Çekirdek web getirme/arama, medya G/Ç, medya anlama, görsel oluşturma ve medya oluşturma çalışma zamanı sözleşmeleri |
|
||||
| `/codeql-critical-quality/plugin-boundary` | Yükleyici, kayıt, herkese açık yüzey ve Plugin SDK giriş noktası sözleşmeleri |
|
||||
| `/codeql-critical-quality/plugin-sdk-package-contract` | Yayımlanan paket tarafı Plugin SDK kaynağı ve plugin paketi sözleşme yardımcıları |
|
||||
|
||||
Kalite, güvenlikten ayrı tutulur; böylece kalite bulguları, güvenlik sinyalini belirsizleştirmeden zamanlanabilir, ölçülebilir, devre dışı bırakılabilir veya genişletilebilir. Swift, Python ve paketli Plugin CodeQL genişletmesi, yalnızca dar profiller kararlı çalışma zamanı ve sinyal elde ettikten sonra kapsamlı veya parçalanmış takip çalışması olarak geri eklenmelidir.
|
||||
Kalite, güvenlikten ayrı kalır; böylece kalite bulguları güvenlik sinyalini belirsizleştirmeden zamanlanabilir, ölçülebilir, devre dışı bırakılabilir veya genişletilebilir. Swift, Python ve paketle gelen plugin CodeQL genişletmesi, ancak dar profiller kararlı çalışma zamanı ve sinyale sahip olduktan sonra kapsamlı veya parçalanmış takip çalışması olarak geri eklenmelidir.
|
||||
|
||||
## Bakım iş akışları
|
||||
|
||||
### Docs Agent
|
||||
|
||||
`Docs Agent` iş akışı, mevcut dokümanları kısa süre önce gelen değişikliklerle uyumlu tutmak için olay güdümlü bir Codex bakım hattıdır. Saf bir zamanlaması yoktur: `main` üzerinde başarılı bir bot dışı push CI çalıştırması onu tetikleyebilir ve manuel dispatch doğrudan çalıştırabilir. Workflow-run çağrıları, `main` ilerlemişse veya son bir saat içinde atlanmamış başka bir Docs Agent çalıştırması oluşturulmuşsa atlanır. Çalıştığında, önceki atlanmamış Docs Agent kaynak SHA'sından geçerli `main`e kadar olan commit aralığını inceler; böylece saatlik tek bir çalıştırma, son dokümantasyon geçişinden beri biriken tüm main değişikliklerini kapsayabilir.
|
||||
`Docs Agent` iş akışı, mevcut dokümanları kısa süre önce ana hatta alınan değişikliklerle hizalı tutmak için olay güdümlü bir Codex bakım hattıdır. Saf bir zamanlaması yoktur: `main` üzerinde başarılı bir bot olmayan push CI çalıştırması bunu tetikleyebilir ve elle dispatch doğrudan çalıştırabilir. Workflow-run çağrıları, `main` ilerlediyse veya son bir saat içinde başka bir atlanmamış Docs Agent çalıştırması oluşturulduysa atlanır. Çalıştığında, önceki atlanmamış Docs Agent kaynak SHA'sından geçerli `main` durumuna kadar olan commit aralığını inceler; böylece saatlik tek bir çalışma, son doküman geçişinden bu yana biriken tüm main değişikliklerini kapsayabilir.
|
||||
|
||||
### Test Performance Agent
|
||||
|
||||
`Test Performance Agent` iş akışı, yavaş testler için olay güdümlü bir Codex bakım hattıdır. Saf bir zamanlaması yoktur: `main` üzerinde başarılı bir bot dışı push CI çalıştırması onu tetikleyebilir, ancak o UTC gününde başka bir workflow-run çağrısı zaten çalışmışsa veya çalışıyorsa atlanır. Manuel dispatch bu günlük etkinlik geçidini atlar. Hat, tam paket gruplanmış Vitest performans raporu oluşturur, Codex'in geniş refactor'lar yerine yalnızca kapsamı koruyan küçük test performansı düzeltmeleri yapmasına izin verir, ardından tam paket raporunu yeniden çalıştırır ve geçen temel test sayısını azaltan değişiklikleri reddeder. Temelde başarısız testler varsa Codex yalnızca bariz hataları düzeltebilir ve agent sonrası tam paket raporu, herhangi bir şey commit edilmeden önce geçmelidir. `main`, bot push'u gelmeden önce ilerlediğinde hat doğrulanmış yamayı rebase eder, `pnpm check:changed` komutunu yeniden çalıştırır ve push'u yeniden dener; çakışan bayat yamalar atlanır. GitHub-hosted Ubuntu kullanır; böylece Codex action, docs agent ile aynı drop-sudo güvenlik duruşunu koruyabilir.
|
||||
`Test Performance Agent` iş akışı, yavaş testler için olay güdümlü bir Codex bakım hattıdır. Saf bir zamanlaması yoktur: `main` üzerinde başarılı bir bot olmayan push CI çalıştırması bunu tetikleyebilir, ancak başka bir workflow-run çağrısı o UTC gününde zaten çalıştıysa veya çalışıyorsa atlanır. Elle dispatch bu günlük etkinlik kapısını atlar. Hat, tam paket gruplandırılmış bir Vitest performans raporu oluşturur, Codex'in geniş refactor'lar yerine yalnızca kapsamı koruyan küçük test performansı düzeltmeleri yapmasına izin verir, ardından tam paket raporu yeniden çalıştırır ve geçen temel test sayısını azaltan değişiklikleri reddeder. Temel durumda başarısız testler varsa, Codex yalnızca bariz hataları düzeltebilir ve ajan sonrası tam paket raporu herhangi bir şey commit edilmeden önce geçmelidir. Bot push ana hatta alınmadan önce `main` ilerlerse, hat doğrulanmış yamayı rebase eder, `pnpm check:changed` komutunu yeniden çalıştırır ve push işlemini tekrar dener; çakışan eski yamalar atlanır. Codex eyleminin doküman ajanıyla aynı drop-sudo güvenlik duruşunu koruyabilmesi için GitHub barındırmalı Ubuntu kullanır.
|
||||
|
||||
### Birleştirme Sonrası Yinelenen PR'lar
|
||||
|
||||
`Duplicate PRs After Merge` iş akışı, land sonrası yinelenenleri temizlemek için manuel bir maintainer iş akışıdır. Varsayılan olarak dry-run çalışır ve yalnızca `apply=true` olduğunda açıkça listelenen PR'ları kapatır. GitHub üzerinde değişiklik yapmadan önce, land edilen PR'ın merge edildiğini ve her yinelenenin ya ortak bir başvurulan issue'ya ya da örtüşen değiştirilmiş hunk'lara sahip olduğunu doğrular.
|
||||
`Duplicate PRs After Merge` iş akışı, ana hatta alma sonrası yinelenenleri temizlemek için elle çalıştırılan bir maintainer iş akışıdır. Varsayılan olarak dry-run kullanır ve yalnızca `apply=true` olduğunda açıkça listelenen PR'ları kapatır. GitHub üzerinde değişiklik yapmadan önce, ana hatta alınan PR'ın birleştirildiğini ve her yinelemenin ya ortak bir başvurulan issue'ya ya da örtüşen değişmiş hunks'a sahip olduğunu doğrular.
|
||||
|
||||
```bash
|
||||
gh workflow run duplicate-after-merge.yml \
|
||||
@ -392,29 +392,29 @@ gh workflow run duplicate-after-merge.yml \
|
||||
-f apply=true
|
||||
```
|
||||
|
||||
## Yerel denetim geçitleri ve değişiklik yönlendirmesi
|
||||
## Yerel denetim kapıları ve değişiklik yönlendirmesi
|
||||
|
||||
Yerel changed-lane mantığı `scripts/changed-lanes.mjs` içinde bulunur ve `scripts/check-changed.mjs` tarafından yürütülür. Bu yerel denetim geçidi, mimari sınırlar konusunda geniş CI platformu kapsamından daha katıdır:
|
||||
Yerel değişiklik hattı mantığı `scripts/changed-lanes.mjs` içinde bulunur ve `scripts/check-changed.mjs` tarafından yürütülür. Bu yerel denetim kapısı, mimari sınırlar konusunda geniş CI platform kapsamından daha katıdır:
|
||||
|
||||
- çekirdek üretim değişiklikleri, çekirdek prod ve çekirdek test typecheck ile çekirdek lint/guard'ları çalıştırır;
|
||||
- yalnızca çekirdek test değişiklikleri, yalnızca çekirdek test typecheck ile çekirdek lint'i çalıştırır;
|
||||
- Plugin üretim değişiklikleri, Plugin prod ve Plugin test typecheck ile Plugin lint'i çalıştırır;
|
||||
- yalnızca Plugin test değişiklikleri, Plugin test typecheck ile Plugin lint'i çalıştırır;
|
||||
- genel Plugin SDK veya Plugin sözleşmesi değişiklikleri, Plugin typecheck'e genişler; çünkü Plugin'ler bu çekirdek sözleşmelere bağlıdır (Vitest Plugin taramaları açık test işi olarak kalır);
|
||||
- yalnızca sürüm metadata'sı version bump'ları hedefli sürüm/yapılandırma/kök bağımlılık denetimlerini çalıştırır;
|
||||
- bilinmeyen kök/yapılandırma değişiklikleri güvenli şekilde tüm denetim hatlarına düşer.
|
||||
- çekirdek üretim değişiklikleri, core prod ve core test typecheck ile core lint/guard'ları çalıştırır;
|
||||
- yalnızca çekirdek test değişiklikleri, yalnızca core test typecheck ile core lint'i çalıştırır;
|
||||
- extension üretim değişiklikleri, extension prod ve extension test typecheck ile extension lint'i çalıştırır;
|
||||
- yalnızca extension test değişiklikleri, extension test typecheck ile extension lint'i çalıştırır;
|
||||
- herkese açık Plugin SDK veya plugin sözleşmesi değişiklikleri extension typecheck kapsamına genişler, çünkü extension'lar bu çekirdek sözleşmelere bağımlıdır (Vitest extension taramaları açık test çalışması olarak kalır);
|
||||
- yalnızca release metadata sürüm artırımları, hedefli sürüm/yapılandırma/kök bağımlılık denetimleri çalıştırır;
|
||||
- bilinmeyen kök/yapılandırma değişiklikleri güvenli kalmak için tüm denetim hatlarına düşer.
|
||||
|
||||
Yerel changed-test yönlendirmesi `scripts/test-projects.test-support.mjs` içinde bulunur ve bilinçli olarak `check:changed`dan daha ucuzdur: doğrudan test düzenlemeleri kendilerini çalıştırır, kaynak düzenlemeleri önce açık eşlemeleri, ardından kardeş testleri ve import grafiği bağımlılarını tercih eder. Paylaşılan grup odası teslim yapılandırması açık eşlemelerden biridir: grup görünür yanıt yapılandırması, kaynak yanıt teslim modu veya message-tool sistem prompt'u değişiklikleri, çekirdek yanıt testleri ile Discord ve Slack teslim regresyonları üzerinden yönlendirilir; böylece paylaşılan varsayılan değişikliği ilk PR push'undan önce başarısız olur. `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` komutunu yalnızca değişiklik, ucuz eşlenmiş kümenin güvenilir bir vekil olmayacağı kadar harness genelinde olduğunda kullanın.
|
||||
Yerel değişmiş test yönlendirmesi `scripts/test-projects.test-support.mjs` içinde bulunur ve bilinçli olarak `check:changed` komutundan daha ucuzdur: doğrudan test düzenlemeleri kendilerini çalıştırır, kaynak düzenlemeleri açık eşlemeleri, ardından kardeş testleri ve import grafiği bağımlılarını tercih eder. Paylaşılan grup odası teslimat yapılandırması açık eşlemelerden biridir: grup görünür yanıt yapılandırmasına, kaynak yanıt teslimat moduna veya mesaj aracı sistem prompt'una yapılan değişiklikler, çekirdek yanıt testleri ile Discord ve Slack teslimat regresyonlarından geçirilir; böylece paylaşılan varsayılan değişiklik ilk PR push işleminden önce başarısız olur. `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` komutunu yalnızca değişiklik, ucuz eşlenmiş kümenin güvenilir bir vekil olmayacağı kadar harness genelindeyse kullanın.
|
||||
|
||||
## Testbox doğrulaması
|
||||
|
||||
Testbox'ı repo kökünden çalıştırın ve geniş kanıt için taze ısıtılmış bir kutuyu tercih edin. Yeniden kullanılan, süresi dolan veya beklenmedik kadar büyük bir sync bildiren bir kutuda yavaş bir geçide zaman harcamadan önce, kutunun içinde önce `pnpm testbox:sanity` çalıştırın.
|
||||
Testbox'ı repo kökünden çalıştırın ve geniş kanıt için yeni ısıtılmış bir kutu tercih edin. Yeniden kullanılan, süresi dolan veya beklenenden büyük bir sync bildiren bir kutuda yavaş bir kapıya zaman harcamadan önce, kutunun içinde önce `pnpm testbox:sanity` çalıştırın.
|
||||
|
||||
Sağlamlık denetimi, `pnpm-lock.yaml` gibi gerekli kök dosyalar kaybolduğunda veya `git status --short` en az 200 izlenen silme gösterdiğinde hızlı başarısız olur. Bu genellikle uzak sync durumunun PR'ın güvenilir bir kopyası olmadığı anlamına gelir; ürün test hatasını ayıklamak yerine o kutuyu durdurun ve yeni bir tane ısıtın. Bilerek yapılan büyük silme PR'ları için bu sağlamlık çalıştırmasında `OPENCLAW_TESTBOX_ALLOW_MASS_DELETIONS=1` ayarlayın.
|
||||
Sağlamlık denetimi, `pnpm-lock.yaml` gibi gerekli kök dosyalar kaybolduğunda veya `git status --short` en az 200 izlenen silme gösterdiğinde hızlı başarısız olur. Bu genellikle uzak sync durumunun PR'ın güvenilir bir kopyası olmadığı anlamına gelir; ürün test hatasını debug etmek yerine o kutuyu durdurun ve yeni bir tane ısıtın. Bilerek yapılan büyük silme PR'ları için, o sağlamlık çalıştırmasında `OPENCLAW_TESTBOX_ALLOW_MASS_DELETIONS=1` ayarlayın.
|
||||
|
||||
`pnpm testbox:run`, sync sonrası çıktı olmadan beş dakikadan fazla sync aşamasında kalan yerel Blacksmith CLI çağrısını da sonlandırır. Bu guard'ı devre dışı bırakmak için `OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS=0` ayarlayın veya alışılmadık derecede büyük yerel diff'ler için daha büyük bir milisaniye değeri kullanın.
|
||||
`pnpm testbox:run`, sync aşamasında post-sync çıktısı olmadan beş dakikadan fazla kalan yerel Blacksmith CLI çağrısını da sonlandırır. Bu guard'ı devre dışı bırakmak için `OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS=0` ayarlayın veya alışılmadık derecede büyük yerel diff'ler için daha büyük bir milisaniye değeri kullanın.
|
||||
|
||||
## İlgili
|
||||
|
||||
- [Kurulum özeti](/tr/install)
|
||||
- [Kurulum genel bakışı](/tr/install)
|
||||
- [Geliştirme kanalları](/tr/install/development-channels)
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
---
|
||||
read_when:
|
||||
- Ajan döngüsünün veya yaşam döngüsü olaylarının tam bir adım adım açıklamasına ihtiyacınız var
|
||||
- Ajan döngüsünün veya yaşam döngüsü olaylarının tam bir adım adım anlatımına ihtiyacınız var
|
||||
- Oturum kuyruklamasını, transkript yazımlarını veya oturum yazma kilidi davranışını değiştiriyorsunuz
|
||||
summary: Ajan döngüsünün yaşam döngüsü, akışları ve bekleme semantiği
|
||||
title: Ajan döngüsü
|
||||
x-i18n:
|
||||
generated_at: "2026-04-30T09:15:11Z"
|
||||
generated_at: "2026-04-30T18:38:46Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 902d543bd71dd517a810d825cbe92e244fe89230f47eeada72477c657a2bec32
|
||||
source_hash: 5466893253e1f82482284ff82db56f4c3fca018bf12e4114fad76d37cad954df
|
||||
source_path: concepts/agent-loop.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Ajan döngüsü, bir ajanın tam “gerçek” çalışmasıdır: alım → bağlam oluşturma → model çıkarımı →
|
||||
araç yürütme → akış yanıtları → kalıcılaştırma. Bir iletiyi eylemlere ve son yanıta dönüştüren,
|
||||
oturum durumunu tutarlı tutan kanonik yoldur.
|
||||
Bir ajan döngüsü, bir ajanın tam “gerçek” çalıştırmasıdır: alım → bağlam derleme → model çıkarımı →
|
||||
araç yürütme → akışlı yanıtlar → kalıcılık. Bir iletiyi eylemlere
|
||||
ve son yanıta dönüştüren, oturum durumunu tutarlı tutan yetkili yoldur.
|
||||
|
||||
OpenClaw’da döngü, oturum başına tekil ve serileştirilmiş bir çalışmadır; model düşünürken,
|
||||
araçları çağırırken ve çıktı akışı üretirken yaşam döngüsü ve akış olayları yayar. Bu belge, bu
|
||||
özgün döngünün uçtan uca nasıl bağlandığını açıklar.
|
||||
OpenClaw'da bir döngü, oturum başına tekil, serileştirilmiş bir çalıştırmadır; model düşünürken,
|
||||
araçları çağırırken ve çıktı akıtırken yaşam döngüsü ve akış olayları yayar. Bu doküman, bu özgün döngünün
|
||||
uçtan uca nasıl bağlandığını açıklar.
|
||||
|
||||
## Giriş noktaları
|
||||
|
||||
@ -28,162 +28,164 @@ araçları çağırırken ve çıktı akışı üretirken yaşam döngüsü ve a
|
||||
|
||||
## Nasıl çalışır (üst düzey)
|
||||
|
||||
1. `agent` RPC parametreleri doğrular, oturumu çözümler (sessionKey/sessionId), oturum üst verilerini kalıcılaştırır, hemen `{ runId, acceptedAt }` döndürür.
|
||||
1. `agent` RPC parametreleri doğrular, oturumu çözümler (sessionKey/sessionId), oturum meta verilerini kalıcılaştırır, hemen `{ runId, acceptedAt }` döndürür.
|
||||
2. `agentCommand` ajanı çalıştırır:
|
||||
- model + thinking/verbose/trace varsayılanlarını çözümler
|
||||
- model + düşünme/ayrıntılı/iz varsayılanlarını çözümler
|
||||
- Skills anlık görüntüsünü yükler
|
||||
- `runEmbeddedPiAgent` çağırır (pi-agent-core runtime)
|
||||
- gömülü döngü bir tane yaymazsa **yaşam döngüsü end/error** yayar
|
||||
- `runEmbeddedPiAgent` çağırır (pi-agent-core çalışma zamanı)
|
||||
- gömülü döngü bir tane yaymazsa **yaşam döngüsü bitiş/hata** yayar
|
||||
3. `runEmbeddedPiAgent`:
|
||||
- çalışmaları oturum başına + küresel kuyruklar üzerinden serileştirir
|
||||
- çalıştırmaları oturum başına + küresel kuyruklarla serileştirir
|
||||
- model + kimlik doğrulama profilini çözümler ve pi oturumunu oluşturur
|
||||
- pi olaylarına abone olur ve asistan/araç deltalarını akış olarak iletir
|
||||
- zaman aşımını uygular -> süre aşılırsa çalışmayı durdurur
|
||||
- yükleri + kullanım üst verilerini döndürür
|
||||
- pi olaylarına abone olur ve asistan/araç deltalarını akıtır
|
||||
- zaman aşımını uygular -> aşılırsa çalıştırmayı iptal eder
|
||||
- Codex uygulama sunucusu dönüşlerinde, terminal olaydan önce uygulama sunucusu ilerlemesi üretmeyi durduran kabul edilmiş dönüşü iptal eder
|
||||
- yükleri + kullanım meta verilerini döndürür
|
||||
4. `subscribeEmbeddedPiSession`, pi-agent-core olaylarını OpenClaw `agent` akışına köprüler:
|
||||
- araç olayları => `stream: "tool"`
|
||||
- asistan deltaları => `stream: "assistant"`
|
||||
- yaşam döngüsü olayları => `stream: "lifecycle"` (`phase: "start" | "end" | "error"`)
|
||||
5. `agent.wait`, `waitForAgentRun` kullanır:
|
||||
- `runId` için **yaşam döngüsü end/error** bekler
|
||||
- `runId` için **yaşam döngüsü bitiş/hata** bekler
|
||||
- `{ status: ok|error|timeout, startedAt, endedAt, error? }` döndürür
|
||||
|
||||
## Kuyruğa alma + eşzamanlılık
|
||||
|
||||
- Çalışmalar oturum anahtarı başına (oturum hattı) ve isteğe bağlı olarak küresel bir hat üzerinden serileştirilir.
|
||||
- Çalıştırmalar oturum anahtarı başına (oturum hattı) ve isteğe bağlı olarak küresel bir hat üzerinden serileştirilir.
|
||||
- Bu, araç/oturum yarışlarını önler ve oturum geçmişini tutarlı tutar.
|
||||
- Mesajlaşma kanalları bu hat sistemini besleyen kuyruk modlarını (collect/steer/followup) seçebilir.
|
||||
- Mesajlaşma kanalları, bu hat sistemini besleyen kuyruk modlarını (topla/yönlendir/takip) seçebilir.
|
||||
Bkz. [Komut Kuyruğu](/tr/concepts/queue).
|
||||
- Transkript yazımları da oturum dosyasında bir oturum yazma kilidiyle korunur. Kilit süreç duyarlı
|
||||
ve dosya tabanlıdır; bu yüzden süreç içi kuyruğu atlayan ya da başka bir süreçten gelen yazıcıları
|
||||
yakalar.
|
||||
- Oturum yazma kilitleri varsayılan olarak yeniden girilebilir değildir. Bir yardımcı aynı kilidin
|
||||
edinimini, tek bir mantıksal yazıcıyı koruyarak bilinçli şekilde iç içe geçiriyorsa, açıkça
|
||||
`allowReentrant: true` ile buna dahil olmalıdır.
|
||||
- Transkript yazmaları, oturum dosyası üzerindeki bir oturum yazma kilidiyle de korunur. Kilit
|
||||
süreç farkındadır ve dosya tabanlıdır; bu nedenle süreç içi kuyruğu atlayan veya
|
||||
başka bir süreçten gelen yazarları yakalar.
|
||||
- Oturum yazma kilitleri varsayılan olarak yeniden girişli değildir. Bir yardımcı, tek bir mantıksal yazarı
|
||||
korurken aynı kilidin alınmasını bilerek iç içe geçirirse, bunu açıkça
|
||||
`allowReentrant: true` ile etkinleştirmelidir.
|
||||
|
||||
## Oturum + çalışma alanı hazırlığı
|
||||
|
||||
- Çalışma alanı çözümlenir ve oluşturulur; sandbox içindeki çalışmalar bir sandbox çalışma alanı köküne yönlendirilebilir.
|
||||
- Skills yüklenir (veya bir anlık görüntüden yeniden kullanılır) ve ortama ve isteme enjekte edilir.
|
||||
- Bootstrap/bağlam dosyaları çözümlenir ve sistem istemi raporuna enjekte edilir.
|
||||
- Bir oturum yazma kilidi edinilir; `SessionManager` açılır ve akıştan önce hazırlanır. Daha sonraki
|
||||
herhangi bir transkript yeniden yazma, Compaction veya kırpma yolu, transkript dosyasını açmadan
|
||||
ya da değiştirmeden önce aynı kilidi almalıdır.
|
||||
- Çalışma alanı çözümlenir ve oluşturulur; korumalı alanlı çalıştırmalar bir korumalı alan çalışma alanı köküne yönlendirebilir.
|
||||
- Skills yüklenir (veya bir anlık görüntüden yeniden kullanılır) ve env ile prompt içine enjekte edilir.
|
||||
- Önyükleme/bağlam dosyaları çözümlenir ve sistem prompt raporuna enjekte edilir.
|
||||
- Bir oturum yazma kilidi alınır; `SessionManager` akıştan önce açılır ve hazırlanır. Daha sonraki
|
||||
herhangi bir transkript yeniden yazma, compaction veya kırpma yolu, transkript dosyasını açmadan veya
|
||||
değiştirmeden önce aynı kilidi almalıdır.
|
||||
|
||||
## İstem oluşturma + sistem istemi
|
||||
## Prompt derleme + sistem promptu
|
||||
|
||||
- Sistem istemi; OpenClaw’ın temel isteminden, Skills isteminden, bootstrap bağlamından ve çalışma başına geçersiz kılmalardan oluşturulur.
|
||||
- Modele özgü sınırlar ve Compaction için ayrılmış tokenlar uygulanır.
|
||||
- Modelin ne gördüğü için bkz. [Sistem istemi](/tr/concepts/system-prompt).
|
||||
- Sistem promptu, OpenClaw'ın temel promptundan, Skills promptundan, önyükleme bağlamından ve çalıştırma başına geçersiz kılmalardan oluşturulur.
|
||||
- Modele özgü sınırlar ve compaction ayrılmış belirteçleri uygulanır.
|
||||
- Modelin ne gördüğü için bkz. [Sistem promptu](/tr/concepts/system-prompt).
|
||||
|
||||
## Hook noktaları (nerede araya girebilirsiniz)
|
||||
## Kanca noktaları (nerede araya girebilirsiniz)
|
||||
|
||||
OpenClaw’da iki hook sistemi vardır:
|
||||
OpenClaw iki kanca sistemine sahiptir:
|
||||
|
||||
- **Dahili hook’lar** (Gateway hook’ları): komutlar ve yaşam döngüsü olayları için olay güdümlü betikler.
|
||||
- **Plugin hook’ları**: ajan/araç yaşam döngüsü ve Gateway hattı içindeki genişletme noktaları.
|
||||
- **İç kancalar** (Gateway kancaları): komutlar ve yaşam döngüsü olayları için olay odaklı betikler.
|
||||
- **Plugin kancaları**: ajan/araç yaşam döngüsü ve Gateway işlem hattı içindeki genişletme noktaları.
|
||||
|
||||
### Dahili hook’lar (Gateway hook’ları)
|
||||
### İç kancalar (Gateway kancaları)
|
||||
|
||||
- **`agent:bootstrap`**: sistem istemi son haline getirilmeden önce bootstrap dosyaları oluşturulurken çalışır.
|
||||
Bunu bootstrap bağlam dosyaları eklemek/kaldırmak için kullanın.
|
||||
- **Komut hook’ları**: `/new`, `/reset`, `/stop` ve diğer komut olayları (bkz. Hook’lar belgesi).
|
||||
- **`agent:bootstrap`**: sistem promptu sonlandırılmadan önce önyükleme dosyaları oluşturulurken çalışır.
|
||||
Önyükleme bağlam dosyaları eklemek/kaldırmak için bunu kullanın.
|
||||
- **Komut kancaları**: `/new`, `/reset`, `/stop` ve diğer komut olayları (bkz. Kancalar dokümanı).
|
||||
|
||||
Kurulum ve örnekler için bkz. [Hook’lar](/tr/automation/hooks).
|
||||
Kurulum ve örnekler için bkz. [Kancalar](/tr/automation/hooks).
|
||||
|
||||
### Plugin hook’ları (ajan + gateway yaşam döngüsü)
|
||||
### Plugin kancaları (ajan + Gateway yaşam döngüsü)
|
||||
|
||||
Bunlar ajan döngüsü veya gateway hattı içinde çalışır:
|
||||
Bunlar ajan döngüsü veya Gateway işlem hattı içinde çalışır:
|
||||
|
||||
- **`before_model_resolve`**: model çözümlemeden önce sağlayıcı/modeli deterministik olarak geçersiz kılmak için oturum öncesinde çalışır (`messages` yoktur).
|
||||
- **`before_prompt_build`**: istem gönderiminden önce `prependContext`, `systemPrompt`, `prependSystemContext` veya `appendSystemContext` enjekte etmek için oturum yüklendikten sonra çalışır (`messages` ile). Tur başına dinamik metin için `prependContext`, sistem istemi alanında kalması gereken kararlı rehberlik için sistem bağlamı alanlarını kullanın.
|
||||
- **`before_agent_start`**: iki fazdan birinde çalışabilen eski uyumluluk hook’u; yukarıdaki açık hook’ları tercih edin.
|
||||
- **`before_agent_reply`**: satır içi eylemlerden sonra ve LLM çağrısından önce çalışır; bir Plugin’in turu üstlenip sentetik bir yanıt döndürmesine veya turu tamamen susturmasına izin verir.
|
||||
- **`agent_end`**: tamamlandıktan sonra son ileti listesini ve çalışma üst verilerini inceler.
|
||||
- **`before_compaction` / `after_compaction`**: Compaction döngülerini gözlemler veya açıklama ekler.
|
||||
- **`before_tool_call` / `after_tool_call`**: araç parametrelerini/sonuçlarını araya girerek yakalar.
|
||||
- **`before_install`**: yerleşik tarama bulgularını inceler ve isteğe bağlı olarak skill ya da Plugin kurulumlarını engeller.
|
||||
- **`tool_result_persist`**: araç sonuçlarını OpenClaw’a ait bir oturum transkriptine yazılmadan önce eşzamanlı olarak dönüştürür.
|
||||
- **`message_received` / `message_sending` / `message_sent`**: gelen + giden ileti hook’ları.
|
||||
- **`before_model_resolve`**: model çözümlemesinden önce sağlayıcı/modeli deterministik olarak geçersiz kılmak için oturum öncesinde çalışır (`messages` yok).
|
||||
- **`before_prompt_build`**: prompt gönderiminden önce `prependContext`, `systemPrompt`, `prependSystemContext` veya `appendSystemContext` enjekte etmek için oturum yüklendikten sonra çalışır (`messages` ile). Tur başına dinamik metin için `prependContext`, sistem prompt alanında yer alması gereken kararlı rehberlik için sistem bağlamı alanlarını kullanın.
|
||||
- **`before_agent_start`**: iki aşamadan birinde çalışabilen eski uyumluluk kancası; yukarıdaki açık kancaları tercih edin.
|
||||
- **`before_agent_reply`**: satır içi eylemlerden sonra ve LLM çağrısından önce çalışır; bir plugin'in dönüşü üstlenmesine ve sentetik bir yanıt döndürmesine veya dönüşü tamamen susturmasına olanak tanır.
|
||||
- **`agent_end`**: tamamlandıktan sonra son ileti listesini ve çalıştırma meta verilerini inceler.
|
||||
- **`before_compaction` / `after_compaction`**: compaction döngülerini gözlemler veya notlandırır.
|
||||
- **`before_tool_call` / `after_tool_call`**: araç parametrelerini/sonuçlarını yakalar.
|
||||
- **`before_install`**: yerleşik tarama bulgularını inceler ve isteğe bağlı olarak skill veya plugin kurulumlarını engeller.
|
||||
- **`tool_result_persist`**: araç sonuçları OpenClaw sahipliğindeki bir oturum transkriptine yazılmadan önce eşzamanlı olarak dönüştürür.
|
||||
- **`message_received` / `message_sending` / `message_sent`**: gelen + giden ileti kancaları.
|
||||
- **`session_start` / `session_end`**: oturum yaşam döngüsü sınırları.
|
||||
- **`gateway_start` / `gateway_stop`**: gateway yaşam döngüsü olayları.
|
||||
- **`gateway_start` / `gateway_stop`**: Gateway yaşam döngüsü olayları.
|
||||
|
||||
Giden/araç korumaları için hook karar kuralları:
|
||||
Giden/araç korumaları için kanca karar kuralları:
|
||||
|
||||
- `before_tool_call`: `{ block: true }` sonlandırıcıdır ve daha düşük öncelikli işleyicileri durdurur.
|
||||
- `before_tool_call`: `{ block: false }` hiçbir işlem yapmaz ve önceki bir engellemeyi temizlemez.
|
||||
- `before_install`: `{ block: true }` sonlandırıcıdır ve daha düşük öncelikli işleyicileri durdurur.
|
||||
- `before_install`: `{ block: false }` hiçbir işlem yapmaz ve önceki bir engellemeyi temizlemez.
|
||||
- `message_sending`: `{ cancel: true }` sonlandırıcıdır ve daha düşük öncelikli işleyicileri durdurur.
|
||||
- `message_sending`: `{ cancel: false }` hiçbir işlem yapmaz ve önceki bir iptali temizlemez.
|
||||
- `before_tool_call`: `{ block: true }` terminaldir ve daha düşük öncelikli işleyicileri durdurur.
|
||||
- `before_tool_call`: `{ block: false }` işlem yapmaz ve önceki bir engellemeyi temizlemez.
|
||||
- `before_install`: `{ block: true }` terminaldir ve daha düşük öncelikli işleyicileri durdurur.
|
||||
- `before_install`: `{ block: false }` işlem yapmaz ve önceki bir engellemeyi temizlemez.
|
||||
- `message_sending`: `{ cancel: true }` terminaldir ve daha düşük öncelikli işleyicileri durdurur.
|
||||
- `message_sending`: `{ cancel: false }` işlem yapmaz ve önceki bir iptali temizlemez.
|
||||
|
||||
Hook API’si ve kayıt ayrıntıları için bkz. [Plugin hook’ları](/tr/plugins/hooks).
|
||||
Kanca API'si ve kayıt ayrıntıları için bkz. [Plugin kancaları](/tr/plugins/hooks).
|
||||
|
||||
Harness’lar bu hook’ları farklı şekilde uyarlayabilir. Codex app-server harness’ı, belgelenmiş yansıtılmış
|
||||
yüzeyler için uyumluluk sözleşmesi olarak OpenClaw Plugin hook’larını korurken, Codex yerel hook’ları
|
||||
ayrı bir alt düzey Codex mekanizması olarak kalır.
|
||||
Test düzenekleri bu kancaları farklı biçimde uyarlayabilir. Codex uygulama sunucusu test düzeneği,
|
||||
belgelenmiş yansıtılmış yüzeyler için uyumluluk sözleşmesi olarak OpenClaw plugin kancalarını korurken,
|
||||
Codex yerel kancaları ayrı bir daha düşük seviyeli Codex mekanizması olarak kalır.
|
||||
|
||||
## Akış + kısmi yanıtlar
|
||||
|
||||
- Asistan deltaları pi-agent-core’dan akış olarak alınır ve `assistant` olayları olarak yayılır.
|
||||
- Asistan deltaları pi-agent-core'dan akıtılır ve `assistant` olayları olarak yayılır.
|
||||
- Blok akışı, kısmi yanıtları `text_end` veya `message_end` üzerinde yayabilir.
|
||||
- Akıl yürütme akışı ayrı bir akış olarak veya blok yanıtları olarak yayılabilir.
|
||||
- Parçalama ve blok yanıt davranışı için bkz. [Akış](/tr/concepts/streaming).
|
||||
|
||||
## Araç yürütme + mesajlaşma araçları
|
||||
|
||||
- Araç start/update/end olayları `tool` akışında yayılır.
|
||||
- Araç sonuçları günlüğe yazılmadan/yayılmadan önce boyut ve görüntü yükleri için temizlenir.
|
||||
- Araç başlangıç/güncelleme/bitiş olayları `tool` akışında yayılır.
|
||||
- Araç sonuçları, günlüğe kaydetme/yayma öncesinde boyut ve görüntü yükleri açısından temizlenir.
|
||||
- Mesajlaşma aracı gönderimleri, yinelenen asistan onaylarını bastırmak için izlenir.
|
||||
|
||||
## Yanıt biçimlendirme + bastırma
|
||||
|
||||
- Son yükler şunlardan oluşturulur:
|
||||
- Son yükler şunlardan derlenir:
|
||||
- asistan metni (ve isteğe bağlı akıl yürütme)
|
||||
- satır içi araç özetleri (verbose + izin verildiğinde)
|
||||
- satır içi araç özetleri (ayrıntılı + izinliyse)
|
||||
- model hata verdiğinde asistan hata metni
|
||||
- Tam sessiz token `NO_REPLY` / `no_reply`, giden yüklerden filtrelenir.
|
||||
- Tam sessiz belirteç `NO_REPLY` / `no_reply`, giden
|
||||
yüklerden filtrelenir.
|
||||
- Mesajlaşma aracı yinelemeleri son yük listesinden kaldırılır.
|
||||
- İşlenebilir yük kalmazsa ve bir araç hata verdiyse, yedek bir araç hata yanıtı yayılır
|
||||
- Oluşturulabilir yük kalmazsa ve bir araç hata verdiyse, yedek bir araç hata yanıtı yayılır
|
||||
(bir mesajlaşma aracı zaten kullanıcıya görünür bir yanıt göndermediyse).
|
||||
|
||||
## Compaction + yeniden denemeler
|
||||
|
||||
- Otomatik Compaction, `compaction` akış olayları yayar ve yeniden denemeyi tetikleyebilir.
|
||||
- Otomatik compaction, `compaction` akış olayları yayar ve yeniden denemeyi tetikleyebilir.
|
||||
- Yeniden denemede, yinelenen çıktıyı önlemek için bellek içi tamponlar ve araç özetleri sıfırlanır.
|
||||
- Compaction hattı için bkz. [Compaction](/tr/concepts/compaction).
|
||||
- Compaction işlem hattı için bkz. [Compaction](/tr/concepts/compaction).
|
||||
|
||||
## Olay akışları (bugün)
|
||||
|
||||
- `lifecycle`: `subscribeEmbeddedPiSession` tarafından yayılır (ve yedek olarak `agentCommand` tarafından)
|
||||
- `assistant`: pi-agent-core’dan akış olarak gelen deltalar
|
||||
- `tool`: pi-agent-core’dan akış olarak gelen araç olayları
|
||||
- `lifecycle`: `subscribeEmbeddedPiSession` tarafından (ve yedek olarak `agentCommand` tarafından) yayılır
|
||||
- `assistant`: pi-agent-core'dan akıtılan deltalar
|
||||
- `tool`: pi-agent-core'dan akıtılan araç olayları
|
||||
|
||||
## Sohbet kanalı işleme
|
||||
|
||||
- Asistan deltaları sohbet `delta` iletilerine tamponlanır.
|
||||
- **Yaşam döngüsü end/error** olduğunda bir sohbet `final` yayılır.
|
||||
- **Yaşam döngüsü bitiş/hata** üzerinde bir sohbet `final` yayılır.
|
||||
|
||||
## Zaman aşımları
|
||||
|
||||
- `agent.wait` varsayılanı: 30 sn (yalnızca bekleme). `timeoutMs` parametresi geçersiz kılar.
|
||||
- Ajan çalışma zamanı: `agents.defaults.timeoutSeconds` varsayılanı 172800 sn (48 saat); `runEmbeddedPiAgent` durdurma zamanlayıcısında uygulanır.
|
||||
- Cron çalışma zamanı: yalıtılmış ajan turu `timeoutSeconds`, cron’a aittir. Zamanlayıcı bu süreölçeri yürütme başladığında başlatır, yapılandırılmış son sürede alttaki çalışmayı durdurur, sonra zaman aşımını kaydetmeden önce sınırlı temizlik çalıştırır; böylece eski bir alt oturum hattı takılı tutamaz.
|
||||
- Takılmış oturum kurtarma: tanılama etkinleştirildiğinde, `diagnostics.stuckSessionWarnMs` uzun süren `processing` oturumlarını algılar. Etkin gömülü çalışmalar, etkin yanıt işlemleri ve etkin oturum hattı görevleri varsayılan olarak yalnızca uyarı düzeyinde kalır; tanılamalar oturum için etkin çalışma göstermiyorsa, watchdog etkilenen oturum hattını serbest bırakır, böylece kuyruktaki başlatma işleri boşalabilir.
|
||||
- Model boşta kalma zaman aşımı: OpenClaw, boşta kalma penceresi dolmadan önce hiçbir yanıt parçası gelmezse model isteğini durdurur. `models.providers.<id>.timeoutSeconds`, yavaş yerel/kendi barındırılan sağlayıcılar için bu boşta kalma watchdog’unu uzatır; aksi halde OpenClaw, yapılandırıldığında `agents.defaults.timeoutSeconds` kullanır ve varsayılan olarak 120 sn ile sınırlar. Açık bir model veya ajan zaman aşımı olmayan Cron tetikli çalışmalar, boşta kalma watchdog’unu devre dışı bırakır ve cron dış zaman aşımına dayanır.
|
||||
- Sağlayıcı HTTP isteği zaman aşımı: `models.providers.<id>.timeoutSeconds`, bağlanma, başlıklar, gövde, SDK istek zaman aşımı, toplam korumalı-fetch durdurma işleme ve model akışı boşta kalma watchdog’u dahil olmak üzere bu sağlayıcının model HTTP fetch’lerine uygulanır. Tüm ajan çalışma zamanı zaman aşımını yükseltmeden önce Ollama gibi yavaş yerel/kendi barındırılan sağlayıcılar için bunu kullanın.
|
||||
- Ajan çalışma zamanı: `agents.defaults.timeoutSeconds` varsayılanı 172800 sn (48 saat); `runEmbeddedPiAgent` iptal zamanlayıcısında uygulanır.
|
||||
- Cron çalışma zamanı: yalıtılmış ajan dönüşü `timeoutSeconds` cron tarafından sahiplenilir. Zamanlayıcı bu zamanlayıcıyı yürütme başladığında başlatır, yapılandırılmış son tarihte alttaki çalıştırmayı iptal eder, ardından zaman aşımını kaydetmeden önce sınırlı temizlik çalıştırır; böylece eski bir alt oturum hattı takılı tutamaz.
|
||||
- Takılı oturum kurtarma: tanılamalar etkinleştirildiğinde, `diagnostics.stuckSessionWarnMs` uzun `processing` oturumlarını algılar. Etkin gömülü çalıştırmalar, etkin yanıt işlemleri ve etkin oturum hattı görevleri varsayılan olarak yalnızca uyarı olarak kalır; tanılamalar oturum için etkin çalışma göstermiyorsa watchdog etkilenen oturum hattını serbest bırakır, böylece kuyruğa alınmış başlangıç işi boşalabilir.
|
||||
- Model boşta kalma zaman aşımı: OpenClaw, boşta kalma penceresi dolmadan önce yanıt parçaları gelmediğinde model isteğini iptal eder. `models.providers.<id>.timeoutSeconds`, yavaş yerel/kendi barındırılan sağlayıcılar için bu boşta kalma watchdog'unu uzatır; aksi takdirde OpenClaw, yapılandırıldığında `agents.defaults.timeoutSeconds` kullanır ve varsayılan olarak 120 sn ile sınırlar. Açık model veya ajan zaman aşımı olmayan Cron tetikli çalıştırmalar boşta kalma watchdog'unu devre dışı bırakır ve cron dış zaman aşımına dayanır.
|
||||
- Sağlayıcı HTTP isteği zaman aşımı: `models.providers.<id>.timeoutSeconds`, bağlanma, başlıklar, gövde, SDK istek zaman aşımı, toplam korumalı-fetch iptal işleme ve model akışı boşta kalma watchdog'u dahil olmak üzere bu sağlayıcının model HTTP fetch'lerine uygulanır. Tüm ajan çalışma zamanı zaman aşımını yükseltmeden önce Ollama gibi yavaş yerel/kendi barındırılan sağlayıcılar için bunu kullanın.
|
||||
|
||||
## İşlerin erken bitebileceği yerler
|
||||
|
||||
- Ajan zaman aşımı (durdurma)
|
||||
- Ajan zaman aşımı (iptal)
|
||||
- AbortSignal (iptal)
|
||||
- Gateway bağlantı kopması veya RPC zaman aşımı
|
||||
- Gateway bağlantı kesilmesi veya RPC zaman aşımı
|
||||
- `agent.wait` zaman aşımı (yalnızca bekleme, ajanı durdurmaz)
|
||||
|
||||
## İlgili
|
||||
|
||||
- [Araçlar](/tr/tools) — kullanılabilir ajan araçları
|
||||
- [Hook’lar](/tr/automation/hooks) — ajan yaşam döngüsü olaylarıyla tetiklenen olay güdümlü betikler
|
||||
- [Kancalar](/tr/automation/hooks) — ajan yaşam döngüsü olayları tarafından tetiklenen olay odaklı betikler
|
||||
- [Compaction](/tr/concepts/compaction) — uzun konuşmaların nasıl özetlendiği
|
||||
- [Exec Onayları](/tr/tools/exec-approvals) — kabuk komutları için onay kapıları
|
||||
- [Düşünme](/tr/tools/thinking) — düşünme/akıl yürütme düzeyi yapılandırması
|
||||
- [Düşünme](/tr/tools/thinking) — düşünme/akıl yürütme seviyesi yapılandırması
|
||||
|
||||
@ -1,61 +1,60 @@
|
||||
---
|
||||
read_when:
|
||||
- Otomatik yanıt yürütmesini veya eşzamanlılığını değiştirme
|
||||
- Otomatik yanıt yürütmesini veya eşzamanlılığı değiştirme
|
||||
- /queue modlarını veya mesaj yönlendirme davranışını açıklama
|
||||
summary: Otomatik yanıt kuyruğu modları, varsayılanlar ve oturum başına geçersiz kılmalar
|
||||
summary: Otomatik yanıt kuyruğu modları, varsayılanları ve oturum başına geçersiz kılmaları
|
||||
title: Komut kuyruğu
|
||||
x-i18n:
|
||||
generated_at: "2026-04-30T09:18:31Z"
|
||||
generated_at: "2026-04-30T18:38:45Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 2ac0c0ded9558b080714fa4b8be0d552f985911bf19b427020f9654ae4955b2d
|
||||
source_hash: fbf1bb1ffd4ce06fa138f63e31651b8821226d9c95dd6b93d68326a5fb91fdd0
|
||||
source_path: concepts/queue.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Gelen otomatik yanıt çalıştırmalarını (tüm kanallar) küçük bir işlem içi kuyruk üzerinden serileştiririz; bu, birden fazla ajan çalıştırmasının çakışmasını önlerken oturumlar arasında güvenli paralelliğe hâlâ izin verir.
|
||||
OpenClaw, gelen otomatik yanıt çalıştırmalarını (tüm kanallar) küçük bir süreç içi kuyruktan geçirerek birden fazla ajan çalıştırmasının çakışmasını önler; aynı zamanda oturumlar arasında güvenli paralelliğe izin vermeye devam eder.
|
||||
|
||||
## Neden
|
||||
|
||||
- Otomatik yanıt çalıştırmaları maliyetli olabilir (LLM çağrıları) ve birden fazla gelen mesaj birbirine yakın zamanda ulaştığında çakışabilir.
|
||||
- Serileştirme, paylaşılan kaynaklar (oturum dosyaları, günlükler, CLI stdin) için rekabeti önler ve yukarı akış hız sınırlarına takılma olasılığını azaltır.
|
||||
- Otomatik yanıt çalıştırmaları maliyetli olabilir (LLM çağrıları) ve kısa aralıklarla birden fazla gelen mesaj ulaştığında çakışabilir.
|
||||
- Serileştirme, paylaşılan kaynaklar (oturum dosyaları, günlükler, CLI stdin) için rekabeti önler ve üst sistem hız sınırlarına takılma olasılığını azaltır.
|
||||
|
||||
## Nasıl çalışır
|
||||
|
||||
- Şerit farkındalığı olan bir FIFO kuyruk, her şeridi yapılandırılabilir bir eşzamanlılık sınırıyla boşaltır (yapılandırılmamış şeritler için varsayılan 1; main varsayılanı 4, subagent varsayılanı 8).
|
||||
- `runEmbeddedPiAgent`, oturum başına yalnızca bir etkin çalıştırmayı garanti etmek için **oturum anahtarına** göre kuyruğa alır (şerit `session:<key>`).
|
||||
- Ardından her oturum çalıştırması bir **genel şeride** (`main` varsayılan) alınır; böylece genel paralellik `agents.defaults.maxConcurrent` ile sınırlandırılır.
|
||||
- Ayrıntılı günlükleme etkinleştirildiğinde, kuyruğa alınmış çalıştırmalar başlamadan önce ~2 saniyeden fazla beklediyse kısa bir bildirim yayar.
|
||||
- Yazıyor göstergeleri, kuyruğa alma anında (kanal tarafından destekleniyorsa) yine hemen tetiklenir; bu yüzden sıra beklerken kullanıcı deneyimi değişmez.
|
||||
- Hat farkındalıklı bir FIFO kuyruğu, her hattı yapılandırılabilir bir eşzamanlılık üst sınırıyla boşaltır (yapılandırılmamış hatlar için varsayılan 1; main varsayılanı 4, subagent varsayılanı 8).
|
||||
- `runEmbeddedPiAgent`, oturum başına yalnızca bir etkin çalıştırmayı garanti etmek için **oturum anahtarına** göre (hat `session:<key>`) kuyruğa alır.
|
||||
- Her oturum çalıştırması daha sonra bir **genel hatta** (varsayılan olarak `main`) kuyruğa alınır; böylece toplam paralellik `agents.defaults.maxConcurrent` ile sınırlandırılır.
|
||||
- Ayrıntılı günlükleme etkinleştirildiğinde, kuyruğa alınan çalıştırmalar başlamadan önce ~2 sn’den fazla beklediyse kısa bir bildirim yayar.
|
||||
- Yazıyor göstergeleri, kanal desteklediğinde kuyruğa alma sırasında hemen tetiklenir; bu nedenle sıranın gelmesini beklerken kullanıcı deneyimi değişmez.
|
||||
|
||||
## Varsayılanlar
|
||||
|
||||
Ayarlanmadığında, tüm gelen kanal yüzeyleri şunları kullanır:
|
||||
Ayarlanmadığında tüm gelen kanal yüzeyleri şunları kullanır:
|
||||
|
||||
- `mode: "steer"`
|
||||
- `debounceMs: 500`
|
||||
- `cap: 20`
|
||||
- `drop: "summarize"`
|
||||
|
||||
`steer` varsayılandır çünkü ikinci bir oturum çalıştırması başlatmadan etkin model turunu yanıt verebilir halde tutar. Bir sonraki model sınırından önce gelen tüm yönlendirme mesajlarını boşaltır. Geçerli çalıştırma yönlendirmeyi kabul edemiyorsa OpenClaw bir takip kuyruğu girdisine geri döner.
|
||||
`steer` varsayılandır çünkü ikinci bir oturum çalıştırması başlatmadan etkin model turunu duyarlı tutar. Sonraki model sınırından önce gelen tüm yönlendirme mesajlarını boşaltır. Geçerli çalıştırma yönlendirmeyi kabul edemiyorsa OpenClaw bir takip kuyruğu girdisine geri döner.
|
||||
|
||||
## Kuyruk modları
|
||||
|
||||
Gelen mesajlar geçerli çalıştırmayı yönlendirebilir, bir takip turu bekleyebilir veya ikisini birden yapabilir:
|
||||
Gelen mesajlar geçerli çalıştırmayı yönlendirebilir, bir takip turu için bekleyebilir veya ikisini birden yapabilir:
|
||||
|
||||
- `steer`: yönlendirme mesajlarını etkin çalışma zamanına kuyruğa alır. Pi, bekleyen tüm yönlendirme mesajlarını **geçerli asistan turu araç çağrılarını çalıştırmayı bitirdikten sonra**, bir sonraki LLM çağrısından önce teslim eder; Codex app-server tek bir toplu `turn/steer` alır. Çalıştırma etkin olarak akış yapmıyorsa veya yönlendirme kullanılamıyorsa OpenClaw bir takip kuyruğu girdisine geri döner.
|
||||
- `queue` (eski): eski, tek seferde bir yönlendirme. Pi, her model sınırında kuyruğa alınmış bir yönlendirme mesajı teslim eder; Codex app-server ayrı `turn/steer` istekleri alır. Önceki serileştirilmiş davranışa ihtiyacınız yoksa `steer` tercih edin.
|
||||
- `followup`: her mesajı geçerli çalıştırma bittikten sonraki bir ajan turu için kuyruğa alır.
|
||||
- `collect`: sessizlik penceresinden sonra kuyruğa alınmış mesajları **tek** bir takip turunda birleştirir. Mesajlar farklı kanalları/iş parçacıklarını hedefliyorsa, yönlendirmeyi korumak için tek tek boşaltılır.
|
||||
- `steer-backlog` (diğer adıyla `steer+backlog`): şimdi yönlendirir **ve** aynı mesajı bir takip turu için korur.
|
||||
- `steer`: yönlendirme mesajlarını etkin çalışma zamanına kuyruğa alır. Pi, bekleyen tüm yönlendirme mesajlarını **geçerli asistan turu araç çağrılarını yürütmeyi bitirdikten sonra**, sonraki LLM çağrısından önce teslim eder; Codex app-server tek bir toplu `turn/steer` alır. Çalıştırma etkin olarak akış yapmıyorsa veya yönlendirme kullanılamıyorsa OpenClaw bir takip kuyruğu girdisine geri döner.
|
||||
- `queue` (eski): eski teker teker yönlendirme. Pi, her model sınırında bir kuyruğa alınmış yönlendirme mesajı teslim eder; Codex app-server ayrı `turn/steer` istekleri alır. Önceki serileştirilmiş davranışa ihtiyacınız yoksa `steer` tercih edin.
|
||||
- `followup`: her mesajı, geçerli çalıştırma bittikten sonra daha sonraki bir ajan turu için kuyruğa alır.
|
||||
- `collect`: kuyruğa alınmış mesajları sessiz pencerenin ardından **tek** bir takip turunda birleştirir. Mesajlar farklı kanalları/iş parçacıklarını hedefliyorsa yönlendirmeyi korumak için ayrı ayrı boşaltılır.
|
||||
- `steer-backlog` (`steer+backlog` olarak da bilinir): şimdi yönlendirir **ve** aynı mesajı bir takip turu için saklar.
|
||||
- `interrupt` (eski): o oturum için etkin çalıştırmayı iptal eder, ardından en yeni mesajı çalıştırır.
|
||||
|
||||
Steer-backlog, yönlendirilen çalıştırmadan sonra bir takip yanıtı alabileceğiniz anlamına gelir; bu yüzden akış yüzeyleri yinelenmiş gibi görünebilir. Gelen mesaj başına tek yanıt istiyorsanız `collect`/`steer` tercih edin.
|
||||
Steer-backlog, yönlendirilen çalıştırmadan sonra bir takip yanıtı alabileceğiniz anlamına gelir; bu nedenle akış yüzeyleri yinelenmiş gibi görünebilir. Gelen mesaj başına bir yanıt istiyorsanız `collect`/`steer` tercih edin.
|
||||
|
||||
Çalışma zamanına özgü zamanlama ve bağımlılık davranışı için bkz.
|
||||
[Yönlendirme kuyruğu](/tr/concepts/queue-steering).
|
||||
Çalışma zamanına özgü zamanlama ve bağımlılık davranışı için bkz. [Yönlendirme kuyruğu](/tr/concepts/queue-steering).
|
||||
|
||||
Genel olarak veya kanal başına `messages.queue` üzerinden yapılandırın:
|
||||
`messages.queue` üzerinden genel olarak veya kanal başına yapılandırın:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -73,12 +72,12 @@ Genel olarak veya kanal başına `messages.queue` üzerinden yapılandırın:
|
||||
|
||||
## Kuyruk seçenekleri
|
||||
|
||||
Seçenekler `followup`, `collect` ve `steer-backlog` için geçerlidir (`steer` veya eski `queue` yönlendirme takip kuyruğuna geri döndüğünde onlar için de geçerlidir):
|
||||
Seçenekler `followup`, `collect` ve `steer-backlog` için geçerlidir (ve yönlendirme takip kuyruğuna geri döndüğünde `steer` veya eski `queue` için de geçerlidir):
|
||||
|
||||
- `debounceMs`: kuyruğa alınmış takipleri boşaltmadan önceki sessizlik penceresi. Birimsiz sayılar milisaniyedir; `ms`, `s`, `m`, `h` ve `d` birimleri `/queue` seçenekleri tarafından kabul edilir.
|
||||
- `cap`: oturum başına kuyruğa alınabilecek en fazla mesaj sayısı. `1` altındaki değerler yok sayılır.
|
||||
- `drop: "summarize"`: varsayılan. Gerektiğinde en eski kuyruk girdilerini düşürür, kompakt özetleri korur ve bunları sentetik bir takip istemi olarak enjekte eder.
|
||||
- `drop: "old"`: gerektiğinde en eski kuyruk girdilerini, özetleri korumadan düşürür.
|
||||
- `debounceMs`: kuyruğa alınmış takipleri boşaltmadan önceki sessiz pencere. Yalın sayılar milisaniyedir; `/queue` seçenekleri tarafından `ms`, `s`, `m`, `h` ve `d` birimleri kabul edilir.
|
||||
- `cap`: oturum başına en fazla kuyruğa alınmış mesaj sayısı. `1` altındaki değerler yok sayılır.
|
||||
- `drop: "summarize"`: varsayılan. Gerektiğinde en eski kuyruk girdilerini düşürür, kompakt özetleri tutar ve bunları sentetik bir takip istemi olarak enjekte eder.
|
||||
- `drop: "old"`: gerektiğinde en eski kuyruk girdilerini özetleri korumadan düşürür.
|
||||
- `drop: "new"`: kuyruk zaten doluyken en yeni mesajı reddeder.
|
||||
|
||||
Varsayılanlar: `debounceMs: 500`, `cap: 20`, `drop: summarize`.
|
||||
@ -87,12 +86,12 @@ Varsayılanlar: `debounceMs: 500`, `cap: 20`, `drop: summarize`.
|
||||
|
||||
Mod seçimi için OpenClaw şu sırayla çözümler:
|
||||
|
||||
1. Satır içi veya saklanmış oturum başına `/queue` geçersiz kılması.
|
||||
1. Satır içi veya saklanan oturum başına `/queue` geçersiz kılması.
|
||||
2. `messages.queue.byChannel.<channel>`.
|
||||
3. `messages.queue.mode`.
|
||||
4. Varsayılan `steer`.
|
||||
|
||||
Seçenekler için satır içi veya saklanmış `/queue` seçenekleri yapılandırmaya üstün gelir. Ardından kanala özgü debounce (`messages.queue.debounceMsByChannel`), Plugin debounce varsayılanları, genel `messages.queue` seçenekleri ve yerleşik varsayılanlar uygulanır. `cap` ve `drop`, genel/oturum seçenekleridir; kanal başına yapılandırma anahtarları değildir.
|
||||
Seçeneklerde, satır içi veya saklanan `/queue` seçenekleri yapılandırmaya üstün gelir. Ardından kanala özgü debounce (`messages.queue.debounceMsByChannel`), Plugin debounce varsayılanları, genel `messages.queue` seçenekleri ve yerleşik varsayılanlar uygulanır. `cap` ve `drop` genel/oturum seçenekleridir, kanal başına yapılandırma anahtarları değildir.
|
||||
|
||||
## Oturum başına geçersiz kılmalar
|
||||
|
||||
@ -102,17 +101,18 @@ Seçenekler için satır içi veya saklanmış `/queue` seçenekleri yapılandı
|
||||
|
||||
## Kapsam ve garantiler
|
||||
|
||||
- Gateway yanıt işlem hattını kullanan tüm gelen kanallardaki otomatik yanıt ajan çalıştırmaları için geçerlidir (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat vb.).
|
||||
- Varsayılan şerit (`main`), gelenler + ana Heartbeat'ler için süreç genelindedir; birden fazla oturumun paralel çalışmasına izin vermek için `agents.defaults.maxConcurrent` ayarlayın.
|
||||
- Arka plan işlerinin gelen yanıtları engellemeden paralel çalışabilmesi için ek şeritler bulunabilir (örn. `cron`, `cron-nested`, `nested`, `subagent`). Yalıtılmış Cron ajan turları, iç ajan yürütmeleri `cron-nested` kullanırken bir `cron` yuvası tutar; ikisi de `cron.maxConcurrentRuns` kullanır. Paylaşılan Cron olmayan `nested` akışları kendi şerit davranışlarını korur. Bu ayrılmış çalıştırmalar [arka plan görevleri](/tr/automation/tasks) olarak izlenir.
|
||||
- Oturum başına şeritler, belirli bir oturuma aynı anda yalnızca bir ajan çalıştırmasının dokunmasını garanti eder.
|
||||
- Harici bağımlılık veya arka plan worker iş parçacığı yoktur; saf TypeScript + promise'lar.
|
||||
- Gateway yanıt hattını kullanan tüm gelen kanallarda (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat vb.) otomatik yanıt ajan çalıştırmaları için geçerlidir.
|
||||
- Varsayılan hat (`main`), gelenler + main Heartbeat’leri için süreç genelindedir; birden fazla oturuma paralel izin vermek için `agents.defaults.maxConcurrent` ayarlayın.
|
||||
- Arka plan işlerinin gelen yanıtlara engel olmadan paralel çalışabilmesi için ek hatlar bulunabilir (ör. `cron`, `cron-nested`, `nested`, `subagent`). Yalıtılmış Cron ajan turları, iç ajan yürütmeleri `cron-nested` kullanırken bir `cron` yuvasını tutar; ikisi de `cron.maxConcurrentRuns` kullanır. Paylaşılan Cron dışı `nested` akışları kendi hat davranışlarını korur. Bu ayrılmış çalıştırmalar [arka plan görevleri](/tr/automation/tasks) olarak izlenir.
|
||||
- Oturum başına hatlar, belirli bir oturuma aynı anda yalnızca bir ajan çalıştırmasının dokunmasını garanti eder.
|
||||
- Dış bağımlılık veya arka plan çalışan iş parçacığı yoktur; saf TypeScript + promise’ler.
|
||||
|
||||
## Sorun giderme
|
||||
|
||||
- Komutlar takılmış gibi görünüyorsa ayrıntılı günlükleri etkinleştirin ve kuyruğun boşaldığını doğrulamak için “queued for …ms” satırlarını arayın.
|
||||
- Komutlar takılmış görünüyorsa ayrıntılı günlükleri etkinleştirin ve kuyruğun boşaldığını doğrulamak için “queued for …ms” satırlarını arayın.
|
||||
- Kuyruk derinliğine ihtiyacınız varsa ayrıntılı günlükleri etkinleştirin ve kuyruk zamanlama satırlarını izleyin.
|
||||
- Tanılama etkinleştirildiğinde, `diagnostics.stuckSessionWarnMs` süresini aşarak `processing` durumunda kalan oturumlar takılmış oturum uyarısı günlüğe yazar. Etkin gömülü çalıştırmalar, etkin yanıt işlemleri ve etkin şerit görevleri varsayılan olarak yalnızca uyarı düzeyinde kalır; etkin oturum işi olmayan eski başlangıç defter tutma kayıtları, kuyruktaki işlerin boşalması için etkilenen oturum şeridini serbest bırakabilir.
|
||||
- Bir turu kabul edip sonra ilerleme yaymayı durduran Codex app-server çalıştırmaları Codex bağdaştırıcısı tarafından kesilir; böylece etkin oturum hattı dış çalıştırma zaman aşımını beklemek yerine serbest kalabilir.
|
||||
- Tanılamalar etkinleştirildiğinde, `diagnostics.stuckSessionWarnMs` süresini aşarak `processing` durumunda kalan oturumlar takılmış oturum uyarısı günlüğe yazar. Etkin gömülü çalıştırmalar, etkin yanıt işlemleri ve etkin hat görevleri varsayılan olarak yalnızca uyarı düzeyinde kalır; etkin oturum işi olmayan eski başlangıç kayıtları, etkilenen oturum hattını serbest bırakabilir ve böylece kuyruğa alınmış iş boşalır.
|
||||
|
||||
## İlgili
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,58 +1,59 @@
|
||||
---
|
||||
read_when:
|
||||
- Testleri çalıştırma veya düzeltme
|
||||
summary: Testleri yerel olarak çalıştırma (vitest) ve force/coverage modlarının ne zaman kullanılacağı
|
||||
summary: Testleri yerel olarak nasıl çalıştırırsınız (vitest) ve force/coverage modlarını ne zaman kullanmalısınız
|
||||
title: Testler
|
||||
x-i18n:
|
||||
generated_at: "2026-04-30T09:44:35Z"
|
||||
generated_at: "2026-04-30T18:38:35Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 9328d6f0383b5067fa8bb5d0f1bf22a3b9048a267908bf85167842ddc3d12e42
|
||||
source_hash: 131f2bad3b2806d28394213cec38d632d106ddbf8ff04d06345ab8046fb8bcf2
|
||||
source_path: reference/test.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
- Eksiksiz test araç seti (test paketleri, canlı, Docker): [Test Etme](/tr/help/testing)
|
||||
- Tam test kiti (test takımları, canlı, Docker): [Test](/tr/help/testing)
|
||||
|
||||
- `pnpm test:force`: Varsayılan kontrol portunu tutan kalıcı Gateway süreçlerini sonlandırır, ardından sunucu testlerinin çalışan bir örnekle çakışmaması için tam Vitest paketini yalıtılmış bir Gateway portuyla çalıştırır. Bunu önceki bir Gateway çalıştırması 18789 portunu dolu bıraktığında kullanın.
|
||||
- `pnpm test:coverage`: Birim paketini V8 kapsamıyla (`vitest.unit.config.ts` üzerinden) çalıştırır. Bu, tüm repo tüm dosya kapsamı değil, yüklenen dosyalara yönelik birim kapsam kapısıdır. Eşikler satırlar/fonksiyonlar/ifadeler için %70 ve dallar için %55’tir. `coverage.all` false olduğu için kapı, her bölünmüş kulvar kaynak dosyasını kapsanmamış saymak yerine birim kapsam paketi tarafından yüklenen dosyaları ölçer.
|
||||
- `pnpm test:coverage:changed`: Birim kapsamını yalnızca `origin/main`den beri değişen dosyalar için çalıştırır.
|
||||
- `pnpm test:force`: Varsayılan kontrol portunu tutan kalmış Gateway işlemlerini sonlandırır, ardından sunucu testlerinin çalışan bir örnekle çakışmaması için tam Vitest paketini yalıtılmış bir Gateway portuyla çalıştırır. Önceki bir Gateway çalıştırması 18789 portunu dolu bıraktığında bunu kullanın.
|
||||
- `pnpm test:coverage`: Birim paketini V8 kapsamıyla (`vitest.unit.config.ts` üzerinden) çalıştırır. Bu, tüm depo ve tüm dosyalar için kapsam değil, yüklenen dosyalara yönelik birim kapsam geçididir. Eşikler satırlar/işlevler/ifadeler için %70 ve dallar için %55’tir. `coverage.all` false olduğundan geçit, her bölünmüş şerit kaynak dosyasını kapsanmamış saymak yerine birim kapsam paketi tarafından yüklenen dosyaları ölçer.
|
||||
- `pnpm test:coverage:changed`: Yalnızca `origin/main` sonrasında değişen dosyalar için birim kapsamını çalıştırır.
|
||||
- `pnpm test:changed`: ucuz akıllı değişen test çalıştırması. Doğrudan test düzenlemelerinden, kardeş `*.test.ts` dosyalarından, açık kaynak eşlemelerinden ve yerel içe aktarma grafiğinden kesin hedefleri çalıştırır. Geniş/config/paket değişiklikleri, kesin testlere eşlenmedikçe atlanır.
|
||||
- `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed`: açık geniş değişen test çalıştırması. Bir test harness/config/paket düzenlemesinin Vitest’in daha geniş değişen-test davranışına geri dönmesi gerektiğinde kullanın.
|
||||
- `pnpm changed:lanes`: `origin/main`e karşı diff tarafından tetiklenen mimari kulvarları gösterir.
|
||||
- `pnpm check:changed`: `origin/main`e karşı diff için akıllı değişen kontrol kapısını çalıştırır. Etkilenen mimari kulvarlar için typecheck, lint ve guard komutlarını çalıştırır, ancak Vitest testlerini çalıştırmaz. Test kanıtı için `pnpm test:changed` veya açık `pnpm test <target>` kullanın.
|
||||
- `pnpm test`: açık dosya/dizin hedeflerini kapsamlı Vitest kulvarları üzerinden yönlendirir. Hedeflenmemiş çalıştırmalar sabit shard grupları kullanır ve yerel paralel yürütme için yaprak config’lere genişler; extension grubu, tek bir dev kök-proje süreci yerine her zaman extension başına shard config’lerine genişler.
|
||||
- Test sarmalayıcı çalıştırmaları kısa bir `[test] passed|failed|skipped ... in ...` özetiyle biter. Vitest’in kendi süre satırı shard başına ayrıntı olarak kalır.
|
||||
- Paylaşılan OpenClaw test durumu: Bir testin yalıtılmış `HOME`, `OPENCLAW_STATE_DIR`, `OPENCLAW_CONFIG_PATH`, config fixture’ı, çalışma alanı, agent dizini veya auth-profile deposu gerektiğinde Vitest’ten `src/test-utils/openclaw-test-state.ts` kullanın.
|
||||
- Süreç E2E yardımcıları: Bir Vitest süreç düzeyi E2E testinin çalışan bir Gateway’e, CLI env’ye, log yakalamaya ve temizliğe tek bir yerde ihtiyacı olduğunda `test/helpers/openclaw-test-instance.ts` kullanın.
|
||||
- Docker/Bash E2E yardımcıları: `scripts/lib/docker-e2e-image.sh` kaynaklayan kulvarlar container’a `docker_e2e_test_state_shell_b64 <label> <scenario>` geçirebilir ve bunu `scripts/lib/openclaw-e2e-instance.sh` ile çözebilir; çoklu-home script’leri `docker_e2e_test_state_function_b64` geçirebilir ve her akışta `openclaw_test_state_create <label> <scenario>` çağırabilir. Daha düşük düzey çağırıcılar, container içi shell parçacığı için `scripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>` veya source edilebilir host env dosyası için `node scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --json` kullanabilir. `create` öncesindeki `--`, daha yeni Node runtime’larının `--env-file`ı Node bayrağı olarak ele almasını önler. Gateway başlatan Docker/Bash kulvarları, entrypoint çözümleme, sahte OpenAI başlatma, Gateway ön plan/arka plan başlatma, hazır olma probları, durum env dışa aktarma, log dökümleri ve süreç temizliği için container içinde `scripts/lib/openclaw-e2e-instance.sh` kaynaklayabilir.
|
||||
- Tam, extension ve include-pattern shard çalıştırmaları yerel zamanlama verilerini `.artifacts/vitest-shard-timings.json` içinde günceller; daha sonraki tüm-config çalıştırmaları, yavaş ve hızlı shard’ları dengelemek için bu zamanlamaları kullanır. Include-pattern CI shard’ları shard adını zamanlama anahtarına ekler; bu, filtrelenmiş shard zamanlamalarını tüm-config zamanlama verilerinin yerine geçmeden görünür tutar. Yerel zamanlama artifact’ını yok saymak için `OPENCLAW_TEST_PROJECTS_TIMINGS=0` ayarlayın.
|
||||
- Seçili `plugin-sdk` ve `commands` test dosyaları artık yalnızca `test/setup.ts` tutan özel hafif kulvarlar üzerinden yönlendirilir; runtime-ağır durumlar mevcut kulvarlarında kalır.
|
||||
- Kardeş testleri olan kaynak dosyalar, daha geniş dizin glob’larına geri dönmeden önce o kardeşe eşlenir. `src/channels/plugins/contracts/test-helpers`, `src/plugin-sdk/test-helpers` ve `src/plugins/contracts` altındaki yardımcı düzenlemeleri, bağımlılık yolu kesin olduğunda her shard’ı geniş çalıştırmak yerine içe aktaran testleri çalıştırmak için yerel bir içe aktarma grafiği kullanır.
|
||||
- `auto-reply` artık üç özel config’e de bölünür (`core`, `top-level`, `reply`), böylece reply harness daha hafif üst düzey durum/token/yardımcı testlerine baskın olmaz.
|
||||
- Temel Vitest config artık varsayılan olarak `pool: "threads"` ve `isolate: false` kullanır; paylaşılan yalıtılmamış runner repo config’lerinin tamamında etkindir.
|
||||
- `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed`: açık geniş değişen test çalıştırması. Bir test altyapısı/config/paket düzenlemesinin Vitest’in daha geniş değişen test davranışına geri dönmesi gerektiğinde bunu kullanın.
|
||||
- `pnpm changed:lanes`: `origin/main` ile diff tarafından tetiklenen mimari şeritleri gösterir.
|
||||
- `pnpm check:changed`: `origin/main` ile diff için akıllı değişen kontrol geçidini çalıştırır. Etkilenen mimari şeritler için typecheck, lint ve guard komutlarını çalıştırır, ancak Vitest testlerini çalıştırmaz. Test kanıtı için `pnpm test:changed` veya açık `pnpm test <target>` kullanın.
|
||||
- `pnpm test`: açık dosya/dizin hedeflerini kapsamlı Vitest şeritleri üzerinden yönlendirir. Hedefsiz çalıştırmalar sabit shard gruplarını kullanır ve yerel paralel yürütme için yaprak config’lere genişler; extension grubu her zaman tek bir dev kök-proje işlemi yerine extension başına shard config’lerine genişler.
|
||||
- Test wrapper çalıştırmaları kısa bir `[test] passed|failed|skipped ... in ...` özetiyle biter. Vitest’in kendi süre satırı shard başına ayrıntı olarak kalır.
|
||||
- Paylaşılan OpenClaw test durumu: bir test yalıtılmış `HOME`, `OPENCLAW_STATE_DIR`, `OPENCLAW_CONFIG_PATH`, config fikstürü, çalışma alanı, ajan dizini veya auth-profile deposu gerektirdiğinde Vitest’ten `src/test-utils/openclaw-test-state.ts` kullanın.
|
||||
- İşlem E2E yardımcıları: bir Vitest işlem düzeyi E2E testi tek yerde çalışan bir Gateway, CLI env, log yakalama ve cleanup gerektirdiğinde `test/helpers/openclaw-test-instance.ts` kullanın.
|
||||
- Docker/Bash E2E yardımcıları: `scripts/lib/docker-e2e-image.sh` kaynaklayan şeritler, container içine `docker_e2e_test_state_shell_b64 <label> <scenario>` geçirebilir ve bunu `scripts/lib/openclaw-e2e-instance.sh` ile çözebilir; çoklu-home script’ler `docker_e2e_test_state_function_b64` geçirebilir ve her akışta `openclaw_test_state_create <label> <scenario>` çağırabilir. Daha düşük düzey çağırıcılar, container içi shell snippet’i için `scripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>` veya source edilebilir host env dosyası için `node scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --json` kullanabilir. `create` öncesindeki `--`, daha yeni Node runtime’larının `--env-file` değerini Node flag’i olarak ele almasını engeller. Gateway başlatan Docker/Bash şeritleri, entrypoint çözümleme, mock OpenAI başlatma, Gateway ön plan/arka plan başlatma, readiness probe’ları, durum env export’u, log dökümleri ve işlem cleanup’ı için container içinde `scripts/lib/openclaw-e2e-instance.sh` kaynaklayabilir.
|
||||
- Tam, extension ve include-pattern shard çalıştırmaları yerel zamanlama verilerini `.artifacts/vitest-shard-timings.json` içinde günceller; sonraki tüm-config çalıştırmaları bu zamanlamaları yavaş ve hızlı shard’ları dengelemek için kullanır. Include-pattern CI shard’ları zamanlama anahtarına shard adını ekler; bu, filtrelenmiş shard zamanlamalarını tüm-config zamanlama verilerini değiştirmeden görünür tutar. Yerel zamanlama artifact’ını yok saymak için `OPENCLAW_TEST_PROJECTS_TIMINGS=0` ayarlayın.
|
||||
- Seçili `plugin-sdk` ve `commands` test dosyaları artık yalnızca `test/setup.ts` tutan özel hafif şeritlerden yönlenir; runtime açısından ağır durumlar mevcut şeritlerinde kalır.
|
||||
- Kardeş testleri olan kaynak dosyaları, daha geniş dizin glob’larına geri dönmeden önce o kardeşe eşlenir. `src/channels/plugins/contracts/test-helpers`, `src/plugin-sdk/test-helpers` ve `src/plugins/contracts` altındaki yardımcı düzenlemeleri, bağımlılık yolu kesin olduğunda her shard’ı geniş çalıştırmak yerine içe aktaran testleri çalıştırmak için yerel bir içe aktarma grafiği kullanır.
|
||||
- `auto-reply` artık üç özel config’e (`core`, `top-level`, `reply`) de ayrılır, böylece reply altyapısı daha hafif top-level durum/token/yardımcı testlerini domine etmez.
|
||||
- Temel Vitest config’i artık varsayılan olarak `pool: "threads"` ve `isolate: false` kullanır; paylaşılan yalıtımsız runner repo config’leri genelinde etkindir.
|
||||
- `pnpm test:channels`, `vitest.channels.config.ts` çalıştırır.
|
||||
- `pnpm test:extensions` ve `pnpm test extensions`, tüm extension/Plugin shard’larını çalıştırır. Ağır kanal Plugin’leri, tarayıcı Plugin’i ve OpenAI özel shard’lar olarak çalışır; diğer Plugin grupları toplu kalır. Tek bir paketli Plugin kulvarı için `pnpm test extensions/<id>` kullanın.
|
||||
- `pnpm test:perf:imports`: Açık dosya/dizin hedefleri için kapsamlı kulvar yönlendirmesini kullanmaya devam ederken Vitest içe aktarma süresi + içe aktarma kırılımı raporlamasını etkinleştirir.
|
||||
- `pnpm test:perf:imports:changed`: aynı içe aktarma profillemesi, ancak yalnızca `origin/main`den beri değişen dosyalar için.
|
||||
- `pnpm test:perf:changed:bench -- --ref <git-ref>`, yönlendirilmiş changed-mode yolunu aynı commit’lenmiş git diff’i için yerel kök-proje çalıştırmasına karşı benchmark eder.
|
||||
- `pnpm test:perf:changed:bench -- --worktree`, önce commit etmeden geçerli worktree değişiklik kümesini benchmark eder.
|
||||
- `pnpm test:perf:profile:main`: Vitest ana iş parçacığı için bir CPU profili yazar (`.artifacts/vitest-main-profile`).
|
||||
- `pnpm test:perf:profile:runner`: Birim runner için CPU + heap profilleri yazar (`.artifacts/vitest-runner-profile`).
|
||||
- `pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json`: Her tam paket Vitest yaprak config’ini seri olarak çalıştırır ve config başına JSON/log artifact’larıyla birlikte gruplanmış süre verilerini yazar. Test Performance Agent bunu yavaş-test düzeltmelerine girişmeden önce baseline olarak kullanır.
|
||||
- `pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json`: Performans odaklı bir değişiklikten sonra gruplanmış raporları karşılaştırır.
|
||||
- Gateway entegrasyonu: `OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm test` veya `pnpm test:gateway` ile opt-in.
|
||||
- `pnpm test:e2e`: Gateway uçtan uca smoke testlerini çalıştırır (çoklu örnek WS/HTTP/node eşleştirme). `vitest.e2e.config.ts` içinde uyarlanabilir worker’larla varsayılan olarak `threads` + `isolate: false` kullanır; `OPENCLAW_E2E_WORKERS=<n>` ile ayarlayın ve ayrıntılı loglar için `OPENCLAW_E2E_VERBOSE=1` ayarlayın.
|
||||
- `pnpm test:live`: Provider canlı testlerini çalıştırır (minimax/zai). Atlamayı kaldırmak için API anahtarları ve `LIVE=1` (veya provider’a özgü `*_LIVE_TEST=1`) gerekir.
|
||||
- `pnpm test:docker:all`: Paylaşılan canlı-test imajını derler, OpenClaw’u bir kez npm tarball olarak paketler, çıplak Node/Git runner imajını ve bu tarball’u `/app` içine kuran işlevsel bir imajı derler/yeniden kullanır, ardından Docker smoke kulvarlarını ağırlıklı bir zamanlayıcı üzerinden `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır. Çıplak imaj (`OPENCLAW_DOCKER_E2E_BARE_IMAGE`) installer/update/plugin-dependency kulvarları için kullanılır; bu kulvarlar kopyalanmış repo kaynakları kullanmak yerine önceden derlenmiş tarball’u mount eder. İşlevsel imaj (`OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE`) normal derlenmiş uygulama işlevselliği kulvarları için kullanılır. `scripts/package-openclaw-for-docker.mjs` tek yerel/CI paket paketleyicisidir ve Docker tüketmeden önce tarball’u ve `dist/postinstall-inventory.json` dosyasını doğrular. Docker kulvar tanımları `scripts/lib/docker-e2e-scenarios.mjs` içinde yaşar; planner mantığı `scripts/lib/docker-e2e-plan.mjs` içinde yaşar; `scripts/test-docker-all.mjs` seçili planı yürütür. `node scripts/test-docker-all.mjs --plan-json`, derleme veya Docker çalıştırma yapmadan seçili kulvarlar, imaj türleri, paket/canlı-imaj ihtiyaçları, durum senaryoları ve credential kontrolleri için zamanlayıcıya ait CI planını yayımlar. `OPENCLAW_DOCKER_ALL_PARALLELISM=<n>` süreç slotlarını kontrol eder ve varsayılanı 10’dur; `OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>` provider’a duyarlı tail pool’u kontrol eder ve varsayılanı 10’dur. Ağır kulvar sınırları varsayılan olarak `OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9`, `OPENCLAW_DOCKER_ALL_NPM_LIMIT=10` ve `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7` olur; provider sınırları `OPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4`, `OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4` ve `OPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4` üzerinden provider başına bir ağır kulvar varsayılanına sahiptir. Daha büyük host’lar için `OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT` veya `OPENCLAW_DOCKER_ALL_DOCKER_LIMIT` kullanın. Bir kulvar düşük paralellikli bir host’ta etkin ağırlık veya kaynak sınırını aşarsa yine de boş pool’dan başlayabilir ve kapasiteyi bırakana kadar tek başına çalışır. Yerel Docker daemon create fırtınalarını önlemek için kulvar başlangıçları varsayılan olarak 2 saniye aralıklandırılır; `OPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>` ile geçersiz kılın. Runner varsayılan olarak Docker’ı preflight eder, bayat OpenClaw E2E container’larını temizler, her 30 saniyede bir aktif-kulvar durumunu yayımlar, uyumlu kulvarlar arasında provider CLI araç cache’lerini paylaşır, geçici canlı-provider hatalarını varsayılan olarak bir kez yeniden dener (`OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>`) ve sonraki çalıştırmalarda en uzundan önce sıralama için kulvar zamanlamalarını `.artifacts/docker-tests/lane-timings.json` içinde saklar. Docker çalıştırmadan kulvar manifestini yazdırmak için `OPENCLAW_DOCKER_ALL_DRY_RUN=1`, durum çıktısını ayarlamak için `OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>` veya zamanlama yeniden kullanımını devre dışı bırakmak için `OPENCLAW_DOCKER_ALL_TIMINGS=0` kullanın. Yalnızca deterministik/yerel kulvarlar için `OPENCLAW_DOCKER_ALL_LIVE_MODE=skip` veya yalnızca canlı-provider kulvarları için `OPENCLAW_DOCKER_ALL_LIVE_MODE=only` kullanın; paket alias’ları `pnpm test:docker:local:all` ve `pnpm test:docker:live:all` şeklindedir. Yalnızca canlı modu, ana ve tail canlı kulvarlarını tek bir en-uzundan-önce pool’da birleştirir, böylece provider bucket’ları Claude, Codex ve Gemini işlerini birlikte paketleyebilir. Runner, `OPENCLAW_DOCKER_ALL_FAIL_FAST=0` ayarlanmadıkça ilk hatadan sonra yeni pooled kulvarları zamanlamayı durdurur ve her kulvarın `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS` ile geçersiz kılınabilen 120 dakikalık fallback timeout’u vardır; seçili canlı/tail kulvarları daha sıkı kulvar başına sınırlar kullanır. CLI backend Docker kurulum komutlarının `OPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS` (varsayılan 180) üzerinden kendi timeout’u vardır. Kulvar başına loglar, `summary.json`, `failures.json` ve faz zamanlamaları `.artifacts/docker-tests/<run-id>/` altında yazılır; yavaş kulvarları incelemek için `pnpm test:docker:timings <summary.json>` ve ucuz hedefli yeniden çalıştırma komutlarını yazdırmak için `pnpm test:docker:rerun <run-id|summary.json|failures.json>` kullanın.
|
||||
- `pnpm test:docker:browser-cdp-snapshot`: Chromium destekli bir kaynak E2E container’ı derler, ham CDP ve yalıtılmış bir Gateway başlatır, `browser doctor --deep` çalıştırır ve CDP rol snapshot’larının bağlantı URL’lerini, cursor-promoted tıklanabilirleri, iframe ref’lerini ve frame metadata’sını içerdiğini doğrular.
|
||||
- CLI backend canlı Docker probları odaklı kulvarlar olarak çalıştırılabilir; örneğin `pnpm test:docker:live-cli-backend:codex`, `pnpm test:docker:live-cli-backend:codex:resume` veya `pnpm test:docker:live-cli-backend:codex:mcp`. Claude ve Gemini için de eşleşen `:resume` ve `:mcp` alias’ları vardır.
|
||||
- `pnpm test:docker:openwebui`: Docker’laştırılmış OpenClaw + Open WebUI başlatır, Open WebUI üzerinden oturum açar, `/api/models` kontrol eder, ardından `/api/chat/completions` üzerinden gerçek proxied chat çalıştırır. Kullanılabilir bir canlı model anahtarı gerektirir (örneğin `~/.profile` içinde OpenAI), harici bir Open WebUI imajı çeker ve normal birim/e2e paketleri kadar CI-kararlı olması beklenmez.
|
||||
- `pnpm test:docker:mcp-channels`: Seed edilmiş bir Gateway container’ı ve `openclaw mcp serve` başlatan ikinci bir client container’ı başlatır, ardından yönlendirilmiş konuşma keşfini, transcript okumalarını, ek metadata’sını, canlı olay kuyruğu davranışını, outbound gönderim yönlendirmesini ve gerçek stdio köprüsü üzerinden Claude tarzı kanal + izin bildirimlerini doğrular. Claude bildirim assertion’ı ham stdio MCP frame’lerini doğrudan okur, böylece smoke köprünün gerçekten ne yayımladığını yansıtır.
|
||||
- `pnpm test:extensions` ve `pnpm test extensions`, tüm extension/Plugin shard’larını çalıştırır. Ağır kanal Plugin’leri, browser Plugin’i ve OpenAI özel shard’lar olarak çalışır; diğer Plugin grupları toplu kalır. Tek bir paketli Plugin şeridi için `pnpm test extensions/<id>` kullanın.
|
||||
- `pnpm test:perf:imports`: açık dosya/dizin hedefleri için kapsamlı şerit yönlendirmesini kullanmaya devam ederken Vitest içe aktarma süresi + içe aktarma dökümü raporlamasını etkinleştirir.
|
||||
- `pnpm test:perf:imports:changed`: aynı içe aktarma profillemesi, ancak yalnızca `origin/main` sonrasında değişen dosyalar için.
|
||||
- `pnpm test:perf:changed:bench -- --ref <git-ref>` yönlendirilmiş changed-mode yolunu aynı commit’lenmiş git diff’i için native kök-proje çalıştırmasına karşı benchmark eder.
|
||||
- `pnpm test:perf:changed:bench -- --worktree` mevcut worktree değişiklik kümesini önce commit etmeden benchmark eder.
|
||||
- `pnpm test:perf:profile:main`: Vitest ana thread’i için CPU profili yazar (`.artifacts/vitest-main-profile`).
|
||||
- `pnpm test:perf:profile:runner`: birim runner için CPU + heap profilleri yazar (`.artifacts/vitest-runner-profile`).
|
||||
- `pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json`: her tam paket Vitest yaprak config’ini seri çalıştırır ve gruplanmış süre verileri ile config başına JSON/log artifact’ları yazar. Test Performance Agent bunu yavaş test düzeltmelerini denemeden önce baseline olarak kullanır.
|
||||
- `pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json`: performans odaklı bir değişiklikten sonra gruplanmış raporları karşılaştırır.
|
||||
- Gateway entegrasyonu: `OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm test` veya `pnpm test:gateway` ile opt-in yapılır.
|
||||
- `pnpm test:e2e`: Gateway uçtan uca smoke testlerini çalıştırır (çoklu örnek WS/HTTP/node eşleştirme). Varsayılan olarak `vitest.e2e.config.ts` içinde uyarlanabilir worker’larla `threads` + `isolate: false` kullanır; `OPENCLAW_E2E_WORKERS=<n>` ile ayarlayın ve ayrıntılı loglar için `OPENCLAW_E2E_VERBOSE=1` ayarlayın.
|
||||
- `pnpm test:live`: sağlayıcı canlı testlerini (minimax/zai) çalıştırır. Atlamayı kaldırmak için API anahtarları ve `LIVE=1` (veya sağlayıcıya özel `*_LIVE_TEST=1`) gerektirir.
|
||||
- `pnpm test:docker:all`: Paylaşılan canlı test imajını oluşturur, OpenClaw’ı bir kez npm tarball olarak paketler, çıplak bir Node/Git runner imajı ile bu tarball’ı `/app` içine kuran işlevsel bir imajı oluşturur/yeniden kullanır, ardından Docker smoke şeritlerini ağırlıklı bir zamanlayıcı üzerinden `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır. Çıplak imaj (`OPENCLAW_DOCKER_E2E_BARE_IMAGE`) installer/update/plugin-dependency şeritleri için kullanılır; bu şeritler kopyalanmış repo kaynaklarını kullanmak yerine önceden oluşturulmuş tarball’ı mount eder. İşlevsel imaj (`OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE`) normal built-app işlevsellik şeritleri için kullanılır. `scripts/package-openclaw-for-docker.mjs` tek yerel/CI paketleyicisidir ve Docker kullanmadan önce tarball ile `dist/postinstall-inventory.json` doğrulaması yapar. Docker şerit tanımları `scripts/lib/docker-e2e-scenarios.mjs` içindedir; planlayıcı mantığı `scripts/lib/docker-e2e-plan.mjs` içindedir; `scripts/test-docker-all.mjs` seçili planı yürütür. `node scripts/test-docker-all.mjs --plan-json`, seçili şeritler, imaj türleri, paket/canlı imaj gereksinimleri, durum senaryoları ve kimlik bilgisi kontrolleri için zamanlayıcıya ait CI planını Docker oluşturmadan veya çalıştırmadan yayar. `OPENCLAW_DOCKER_ALL_PARALLELISM=<n>` işlem slotlarını kontrol eder ve varsayılanı 10’dur; `OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>` sağlayıcıya duyarlı tail pool’u kontrol eder ve varsayılanı 10’dur. Ağır şerit sınırları varsayılan olarak `OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9`, `OPENCLAW_DOCKER_ALL_NPM_LIMIT=10` ve `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7` değerleridir; sağlayıcı sınırları `OPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4`, `OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4` ve `OPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4` üzerinden sağlayıcı başına bir ağır şerit varsayar. Daha büyük host’lar için `OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT` veya `OPENCLAW_DOCKER_ALL_DOCKER_LIMIT` kullanın. Düşük paralellikli bir host’ta bir şerit etkin ağırlık veya kaynak sınırını aşarsa yine de boş bir pool’dan başlayabilir ve kapasiteyi serbest bırakana kadar tek başına çalışır. Yerel Docker daemon oluşturma fırtınalarını önlemek için şerit başlangıçları varsayılan olarak 2 saniye aralıklandırılır; `OPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>` ile geçersiz kılın. Runner varsayılan olarak Docker preflight yapar, eski OpenClaw E2E container’larını temizler, her 30 saniyede etkin şerit durumunu yayar, uyumlu şeritler arasında sağlayıcı CLI araç cache’lerini paylaşır, geçici canlı sağlayıcı hatalarını varsayılan olarak bir kez yeniden dener (`OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>`) ve sonraki çalıştırmalarda en uzundan önce sıralama için şerit zamanlamalarını `.artifacts/docker-tests/lane-timings.json` içinde saklar. Docker çalıştırmadan şerit manifest’ini yazdırmak için `OPENCLAW_DOCKER_ALL_DRY_RUN=1`, durum çıktısını ayarlamak için `OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>` veya zamanlama yeniden kullanımını devre dışı bırakmak için `OPENCLAW_DOCKER_ALL_TIMINGS=0` kullanın. Yalnızca deterministik/yerel şeritler için `OPENCLAW_DOCKER_ALL_LIVE_MODE=skip` veya yalnızca canlı sağlayıcı şeritleri için `OPENCLAW_DOCKER_ALL_LIVE_MODE=only` kullanın; paket alias’ları `pnpm test:docker:local:all` ve `pnpm test:docker:live:all` şeklindedir. Yalnızca canlı modu, ana ve tail canlı şeritlerini tek bir en uzundan önce pool’da birleştirir, böylece sağlayıcı bucket’ları Claude, Codex ve Gemini işlerini birlikte paketleyebilir. Runner, `OPENCLAW_DOCKER_ALL_FAIL_FAST=0` ayarlanmadıkça ilk hatadan sonra yeni pool şeritleri zamanlamayı durdurur ve her şeridin `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS` ile geçersiz kılınabilen 120 dakikalık fallback timeout’u vardır; seçili canlı/tail şeritler daha sıkı şerit başına sınırlar kullanır. CLI backend Docker kurulum komutlarının `OPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS` üzerinden kendi timeout’u vardır (varsayılan 180). Şerit başına loglar, `summary.json`, `failures.json` ve faz zamanlamaları `.artifacts/docker-tests/<run-id>/` altına yazılır; yavaş şeritleri incelemek için `pnpm test:docker:timings <summary.json>` ve ucuz hedefli yeniden çalıştırma komutlarını yazdırmak için `pnpm test:docker:rerun <run-id|summary.json|failures.json>` kullanın.
|
||||
- `pnpm test:docker:browser-cdp-snapshot`: Chromium destekli bir kaynak E2E container’ı oluşturur, ham CDP ile yalıtılmış bir Gateway başlatır, `browser doctor --deep` çalıştırır ve CDP rol snapshot’larının link URL’leri, cursor-promoted tıklanabilir öğeler, iframe ref’leri ve frame metadata içerdiğini doğrular.
|
||||
- CLI backend canlı Docker probe’ları odaklı şeritler olarak çalıştırılabilir; örneğin `pnpm test:docker:live-cli-backend:codex`, `pnpm test:docker:live-cli-backend:codex:resume` veya `pnpm test:docker:live-cli-backend:codex:mcp`. Claude ve Gemini için eşleşen `:resume` ve `:mcp` alias’ları vardır.
|
||||
- `pnpm test:docker:openwebui`: Dockerize OpenClaw + Open WebUI başlatır, Open WebUI üzerinden oturum açar, `/api/models` kontrol eder, ardından `/api/chat/completions` üzerinden gerçek proxied chat çalıştırır. Kullanılabilir canlı model anahtarı gerektirir (örneğin `~/.profile` içinde OpenAI), harici bir Open WebUI imajı çeker ve normal unit/e2e paketleri kadar CI-kararlı olması beklenmez.
|
||||
- `pnpm test:docker:mcp-channels`: Seed edilmiş bir Gateway container’ı ve `openclaw mcp serve` başlatan ikinci bir istemci container’ı başlatır; ardından gerçek stdio köprüsü üzerinden yönlendirilmiş konuşma keşfini, transcript okumalarını, ek metadata’sını, canlı event queue davranışını, outbound gönderim yönlendirmesini ve Claude tarzı kanal + izin bildirimlerini doğrular. Claude bildirimi assertion’ı ham stdio MCP frame’lerini doğrudan okur, böylece smoke köprünün gerçekte ne yaydığını yansıtır.
|
||||
- `pnpm test:docker:upgrade-survivor`: Paketlenmiş OpenClaw tarball'ını kirli bir eski kullanıcı fixture'ı üzerine yükler, canlı sağlayıcı veya kanal anahtarları olmadan paket güncellemesini ve etkileşimsiz doctor'ı çalıştırır, ardından bir loopback Gateway başlatır ve aracıların, kanal yapılandırmasının, Plugin izin listelerinin, çalışma alanı/oturum dosyalarının, eski Plugin runtime-deps durumunun, başlangıcın ve RPC durumunun korunduğunu denetler.
|
||||
|
||||
## Yerel PR kapısı
|
||||
## Yerel PR geçidi
|
||||
|
||||
Yerel PR land/gate kontrolleri için şunu çalıştırın:
|
||||
Yerel PR land/geçit denetimleri için şunu çalıştırın:
|
||||
|
||||
- `pnpm check:changed`
|
||||
- `pnpm check`
|
||||
@ -61,27 +62,27 @@ Yerel PR land/gate kontrolleri için şunu çalıştırın:
|
||||
- `pnpm test`
|
||||
- `pnpm check:docs`
|
||||
|
||||
`pnpm test` yüklü bir host üzerinde flake verirse, bunu bir regresyon olarak ele almadan önce bir kez yeniden çalıştırın, ardından `pnpm test <path/to/test>` ile izole edin. Belleği kısıtlı hostlar için şunları kullanın:
|
||||
`pnpm test` yük altındaki bir ana makinede kararsız başarısız olursa, bunu bir regresyon olarak değerlendirmeden önce bir kez yeniden çalıştırın, ardından `pnpm test <path/to/test>` ile izole edin. Bellek kısıtlı ana makineler için şunu kullanın:
|
||||
|
||||
- `OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test`
|
||||
- `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed`
|
||||
|
||||
## Model gecikme bench’i (yerel anahtarlar)
|
||||
## Model gecikme karşılaştırması (yerel anahtarlar)
|
||||
|
||||
Betik: [`scripts/bench-model.ts`](https://github.com/openclaw/openclaw/blob/main/scripts/bench-model.ts)
|
||||
|
||||
Kullanım:
|
||||
|
||||
- `source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10`
|
||||
- İsteğe bağlı env: `MINIMAX_API_KEY`, `MINIMAX_BASE_URL`, `MINIMAX_MODEL`, `ANTHROPIC_API_KEY`
|
||||
- Varsayılan istem: “Tek bir kelimeyle yanıtla: ok. Noktalama veya ek metin yok.”
|
||||
- İsteğe bağlı ortam: `MINIMAX_API_KEY`, `MINIMAX_BASE_URL`, `MINIMAX_MODEL`, `ANTHROPIC_API_KEY`
|
||||
- Varsayılan istem: “Tek bir sözcükle yanıt ver: ok. Noktalama işareti veya ek metin yok.”
|
||||
|
||||
Son çalıştırma (2025-12-31, 20 çalıştırma):
|
||||
|
||||
- minimax medyan 1279 ms (min 1114, maks 2431)
|
||||
- opus medyan 2454 ms (min 1224, maks 3170)
|
||||
- minimax medyanı 1279 ms (min 1114, maks 2431)
|
||||
- opus medyanı 2454 ms (min 1224, maks 3170)
|
||||
|
||||
## CLI başlangıç bench’i
|
||||
## CLI başlatma karşılaştırması
|
||||
|
||||
Betik: [`scripts/bench-cli-startup.ts`](https://github.com/openclaw/openclaw/blob/main/scripts/bench-cli-startup.ts)
|
||||
|
||||
@ -103,41 +104,41 @@ Kullanım:
|
||||
- `pnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpu`
|
||||
- `pnpm tsx scripts/bench-cli-startup.ts --json`
|
||||
|
||||
Preset’ler:
|
||||
Ön ayarlar:
|
||||
|
||||
- `startup`: `--version`, `--help`, `health`, `health --json`, `status --json`, `status`
|
||||
- `real`: `health`, `status`, `status --json`, `sessions`, `sessions --json`, `tasks --json`, `tasks list --json`, `tasks audit --json`, `agents list --json`, `gateway status`, `gateway status --json`, `gateway health --json`, `config get gateway.port`
|
||||
- `all`: her iki preset
|
||||
- `all`: iki ön ayar da
|
||||
|
||||
Çıktı, her komut için `sampleCount`, ortalama, p50, p95, min/maks, çıkış kodu/sinyal dağılımı ve maks RSS özetlerini içerir. İsteğe bağlı `--cpu-prof-dir` / `--heap-prof-dir`, zamanlama ve profil yakalamanın aynı harness’i kullanması için her çalıştırma başına V8 profilleri yazar.
|
||||
Çıktı, her komut için `sampleCount`, ortalama, p50, p95, min/maks, çıkış kodu/sinyal dağılımı ve maks RSS özetlerini içerir. İsteğe bağlı `--cpu-prof-dir` / `--heap-prof-dir`, çalıştırma başına V8 profilleri yazar; böylece zamanlama ve profil yakalama aynı harness'i kullanır.
|
||||
|
||||
Kaydedilmiş çıktı kuralları:
|
||||
Kaydedilen çıktı kuralları:
|
||||
|
||||
- `pnpm test:startup:bench:smoke`, hedefli smoke artifaktını `.artifacts/cli-startup-bench-smoke.json` konumuna yazar
|
||||
- `pnpm test:startup:bench:save`, `runs=5` ve `warmup=1` kullanarak tam paket artifaktını `.artifacts/cli-startup-bench-all.json` konumuna yazar
|
||||
- `pnpm test:startup:bench:update`, `runs=5` ve `warmup=1` kullanarak depoya işlenmiş baseline fixture’ını `test/fixtures/cli-startup-bench.json` konumunda yeniler
|
||||
- `pnpm test:startup:bench:smoke`, hedefli smoke yapıtını `.artifacts/cli-startup-bench-smoke.json` konumuna yazar
|
||||
- `pnpm test:startup:bench:save`, `runs=5` ve `warmup=1` kullanarak tam paket yapıtını `.artifacts/cli-startup-bench-all.json` konumuna yazar
|
||||
- `pnpm test:startup:bench:update`, `runs=5` ve `warmup=1` kullanarak depoya işlenmiş temel fixture'ı `test/fixtures/cli-startup-bench.json` konumunda yeniler
|
||||
|
||||
Depoya işlenmiş fixture:
|
||||
|
||||
- `test/fixtures/cli-startup-bench.json`
|
||||
- `pnpm test:startup:bench:update` ile yenileyin
|
||||
- Geçerli sonuçları fixture ile `pnpm test:startup:bench:check` kullanarak karşılaştırın
|
||||
- Mevcut sonuçları `pnpm test:startup:bench:check` ile fixture'a karşı karşılaştırın
|
||||
|
||||
## Onboarding E2E (Docker)
|
||||
|
||||
Docker isteğe bağlıdır; bu yalnızca container içinde çalışan onboarding smoke testleri için gereklidir.
|
||||
Docker isteğe bağlıdır; bu yalnızca konteynerleştirilmiş onboarding smoke testleri için gereklidir.
|
||||
|
||||
Temiz bir Linux container’ında tam cold-start akışı:
|
||||
Temiz bir Linux konteynerinde tam cold-start akışı:
|
||||
|
||||
```bash
|
||||
scripts/e2e/onboard-docker.sh
|
||||
```
|
||||
|
||||
Bu betik etkileşimli sihirbazı bir pseudo-tty üzerinden yürütür, config/workspace/session dosyalarını doğrular, ardından Gateway’i başlatır ve `openclaw health` çalıştırır.
|
||||
Bu betik, etkileşimli sihirbazı bir pseudo-tty üzerinden sürer, yapılandırma/çalışma alanı/oturum dosyalarını doğrular, ardından Gateway'i başlatır ve `openclaw health` çalıştırır.
|
||||
|
||||
## QR içe aktarma smoke testi (Docker)
|
||||
|
||||
Bakımı yapılan QR runtime yardımcısının desteklenen Docker Node runtime’ları altında yüklendiğinden emin olur (varsayılan Node 24, uyumlu Node 22):
|
||||
Bakımı yapılan QR runtime yardımcısının desteklenen Docker Node runtime'ları altında yüklendiğinden emin olur (Node 24 varsayılan, Node 22 uyumlu):
|
||||
|
||||
```bash
|
||||
pnpm test:docker:qr
|
||||
@ -145,5 +146,5 @@ pnpm test:docker:qr
|
||||
|
||||
## İlgili
|
||||
|
||||
- [Test etme](/tr/help/testing)
|
||||
- [Test Etme](/tr/help/testing)
|
||||
- [Canlı test etme](/tr/help/testing-live)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user