From 55abfa7a7ca9197c685d2f063edf078f7a67f12d Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Thu, 30 Apr 2026 18:43:13 +0000 Subject: [PATCH] chore(i18n): refresh tr translations --- docs/tr/ci.md | 340 ++++++------ docs/tr/concepts/agent-loop.md | 184 +++---- docs/tr/concepts/queue.md | 76 +-- docs/tr/help/testing.md | 929 +++++++++++++++++---------------- docs/tr/reference/test.md | 119 ++--- 5 files changed, 835 insertions(+), 813 deletions(-) diff --git a/docs/tr/ci.md b/docs/tr/ci.md index e8dde70fd..0a8797b1f 100644 --- a/docs/tr/ci.md +++ b/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= ## 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:` 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:` 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=`, `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=`, `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 # download Docker artifacts and print combined/per-lane targeted rerun commands pnpm test:docker:timings # 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) diff --git a/docs/tr/concepts/agent-loop.md b/docs/tr/concepts/agent-loop.md index 9ec7839c1..6178d4a85 100644 --- a/docs/tr/concepts/agent-loop.md +++ b/docs/tr/concepts/agent-loop.md @@ -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..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..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..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..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ı diff --git a/docs/tr/concepts/queue.md b/docs/tr/concepts/queue.md index 0859713db..5ff49cc62 100644 --- a/docs/tr/concepts/queue.md +++ b/docs/tr/concepts/queue.md @@ -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:`). -- 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:`) 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.`. 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 diff --git a/docs/tr/help/testing.md b/docs/tr/help/testing.md index 462b17805..c09fc7614 100644 --- a/docs/tr/help/testing.md +++ b/docs/tr/help/testing.md @@ -3,190 +3,197 @@ read_when: - Testleri yerel olarak veya CI'da çalıştırma - Model/sağlayıcı hataları için regresyon testleri ekleme - Gateway + aracı davranışında hata ayıklama -summary: 'Test kiti: birim/e2e/canlı test takımları, Docker çalıştırıcıları ve her testin neyi kapsadığı' +summary: 'Test kiti: birim/e2e/canlı test takımları, Docker çalıştırıcıları ve her testin neleri kapsadığı' title: Test Etme x-i18n: - generated_at: "2026-04-30T09:27:34Z" + generated_at: "2026-04-30T18:38:49Z" model: gpt-5.5 provider: openai - source_hash: c7b506350f11431195cb55c84cb10e99efb5f43b934079528b982627024d1ffc + source_hash: 470a96c6b47c2708950d05adc4a4efba5fe290f0675a131e2888d2d0032d5953 source_path: help/testing.md workflow: 16 --- -OpenClaw üç Vitest paketine (unit/integration, e2e, live) ve küçük bir Docker runner kümesine sahiptir. Bu doküman bir "nasıl test ediyoruz" kılavuzudur: +OpenClaw'ın üç Vitest paketi (birim/entegrasyon, e2e, canlı) ve küçük bir +Docker çalıştırıcıları kümesi vardır. Bu belge bir "nasıl test ediyoruz" rehberidir: - Her paketin neleri kapsadığı (ve bilinçli olarak neleri _kapsamadığı_). - Yaygın iş akışları için hangi komutların çalıştırılacağı (yerel, push öncesi, hata ayıklama). -- Live testlerin kimlik bilgilerini nasıl keşfettiği ve model/provider seçtiği. -- Gerçek dünyadaki model/provider sorunları için regresyonların nasıl ekleneceği. +- Canlı testlerin kimlik bilgilerini nasıl keşfettiği ve modelleri/sağlayıcıları nasıl seçtiği. +- Gerçek dünyadaki model/sağlayıcı sorunları için regresyonların nasıl ekleneceği. -**QA yığını (qa-lab, qa-channel, live transport yolları)** ayrı olarak belgelenmiştir: +**QA yığını (qa-lab, qa-channel, canlı aktarım şeritleri)** ayrı olarak belgelenmiştir: -- [QA genel bakış](/tr/concepts/qa-e2e-automation) — mimari, komut yüzeyi, senaryo yazımı. -- [Matrix QA](/tr/concepts/qa-matrix) — `pnpm openclaw qa matrix` için başvuru. -- [QA channel](/tr/channels/qa-channel) — repo destekli senaryolar tarafından kullanılan sentetik transport Plugin. +- [QA genel bakışı](/tr/concepts/qa-e2e-automation) — mimari, komut yüzeyi, senaryo yazımı. +- [Matrix QA](/tr/concepts/qa-matrix) — `pnpm openclaw qa matrix` için referans. +- [QA kanalı](/tr/channels/qa-channel) — depo destekli senaryolar tarafından kullanılan sentetik aktarım Plugin'i. -Bu sayfa düzenli test paketlerini ve Docker/Parallels runner'larını çalıştırmayı kapsar. Aşağıdaki QA'ya özgü runner'lar bölümü ([QA'ya özgü runner'lar](#qa-specific-runners)) somut `qa` çağrılarını listeler ve yukarıdaki başvurulara geri yönlendirir. +Bu sayfa normal test paketlerini ve Docker/Parallels çalıştırıcılarını çalıştırmayı kapsar. Aşağıdaki QA'ya özgü çalıştırıcılar bölümü ([QA'ya özgü çalıştırıcılar](#qa-specific-runners)) somut `qa` çağrılarını listeler ve yukarıdaki referanslara geri yönlendirir. ## Hızlı başlangıç Çoğu gün: -- Tam gate (push öncesi beklenir): `pnpm build && pnpm check && pnpm check:test-types && pnpm test` +- Tam geçit (push öncesinde beklenir): `pnpm build && pnpm check && pnpm check:test-types && pnpm test` - Geniş kaynaklı bir makinede daha hızlı yerel tam paket çalıştırması: `pnpm test:max` -- Doğrudan Vitest watch döngüsü: `pnpm test:watch` -- Doğrudan dosya hedefleme artık extension/channel yollarını da yönlendirir: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` -- Tek bir hata üzerinde iterasyon yaparken önce hedefli çalıştırmaları tercih edin. +- Doğrudan Vitest izleme döngüsü: `pnpm test:watch` +- Doğrudan dosya hedefleme artık uzantı/kanal yollarını da yönlendirir: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` +- Tek bir hata üzerinde yineleme yaparken önce hedefli çalıştırmaları tercih edin. - Docker destekli QA sitesi: `pnpm qa:lab:up` -- Linux VM destekli QA yolu: `pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline` +- Linux VM destekli QA şeridi: `pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline` -Testlere dokunduğunuzda veya ek güvence istediğinizde: +Testlere dokunduğunuzda veya ek güven istediğinizde: -- Coverage gate: `pnpm test:coverage` +- Kapsam geçidi: `pnpm test:coverage` - E2E paketi: `pnpm test:e2e` -Gerçek provider'lar/modeller üzerinde hata ayıklarken (gerçek kimlik bilgileri gerekir): +Gerçek sağlayıcılar/modeller üzerinde hata ayıklarken (gerçek kimlik bilgileri gerektirir): -- Live paket (modeller + Gateway tool/image probları): `pnpm test:live` -- Tek bir live dosyayı sessizce hedefleyin: `pnpm test:live -- src/agents/models.profiles.live.test.ts` -- Docker live model taraması: `pnpm test:docker:live-models` - - Seçilen her model artık bir metin turu ve küçük bir dosya okuma tarzı prob çalıştırır. - Metadata'sı `image` girdisini duyuran modeller ayrıca küçük bir image turu çalıştırır. - Provider hatalarını izole ederken ek probları `OPENCLAW_LIVE_MODEL_FILE_PROBE=0` veya +- Canlı paket (modeller + Gateway araç/görüntü yoklamaları): `pnpm test:live` +- Bir canlı dosyayı sessizce hedefle: `pnpm test:live -- src/agents/models.profiles.live.test.ts` +- Docker canlı model taraması: `pnpm test:docker:live-models` + - Seçilen her model artık bir metin turu ve küçük bir dosya-okuma tarzı yoklama çalıştırır. + Metadata'sı `image` girişini duyuran modeller ayrıca küçük bir görüntü turu çalıştırır. + Sağlayıcı hatalarını izole ederken ek yoklamaları `OPENCLAW_LIVE_MODEL_FILE_PROBE=0` veya `OPENCLAW_LIVE_MODEL_IMAGE_PROBE=0` ile devre dışı bırakın. - - CI coverage: günlük `OpenClaw Scheduled Live And E2E Checks` ve manuel - `OpenClaw Release Checks`, her ikisi de yeniden kullanılabilir live/E2E workflow'unu - `include_live_suites: true` ile çağırır; buna provider'a göre shard edilmiş ayrı Docker live model - matrix işleri dahildir. - - Odaklı CI yeniden çalıştırmaları için `OpenClaw Live And E2E Checks (Reusable)` workflow'unu - `include_live_suites: true` ve `live_models_only: true` ile dispatch edin. - - Yeni yüksek sinyalli provider secret'larını `scripts/ci-hydrate-live-auth.sh` - ile `.github/workflows/openclaw-live-and-e2e-checks-reusable.yml` ve onun - scheduled/release çağırıcılarına ekleyin. -- Yerel Codex bound-chat smoke: `pnpm test:docker:live-codex-bind` - - Codex app-server yolu üzerinde bir Docker live yolu çalıştırır, sentetik bir + - CI kapsamı: günlük `OpenClaw Scheduled Live And E2E Checks` ve manuel + `OpenClaw Release Checks`, ayrı Docker canlı model + matris işlerini sağlayıcıya göre parçalanmış halde içeren yeniden kullanılabilir canlı/E2E iş akışını + `include_live_suites: true` ile çağırır. + - Odaklı CI yeniden çalıştırmaları için `OpenClaw Live And E2E Checks (Reusable)` iş akışını + `include_live_suites: true` ve `live_models_only: true` ile tetikleyin. + - Yeni yüksek sinyalli sağlayıcı gizlerini `scripts/ci-hydrate-live-auth.sh` + ile `.github/workflows/openclaw-live-and-e2e-checks-reusable.yml` dosyasına ve onun + zamanlanmış/sürüm çağırıcılarına ekleyin. +- Yerel Codex bağlı sohbet smoke testi: `pnpm test:docker:live-codex-bind` + - Codex app-server yolu üzerinde Docker canlı şeridi çalıştırır, sentetik bir Slack DM'yi `/codex bind` ile bağlar, `/codex fast` ve - `/codex permissions` komutlarını çalıştırır, ardından düz bir yanıtın ve bir image attachment'ın - ACP yerine yerel Plugin binding üzerinden yönlendirildiğini doğrular. -- Codex app-server harness smoke: `pnpm test:docker:live-codex-harness` - - Gateway agent turlarını Plugin'e ait Codex app-server harness üzerinden çalıştırır, - `/codex status` ve `/codex models` komutlarını doğrular ve varsayılan olarak image, - Cron MCP, sub-agent ve Guardian problarını çalıştırır. Diğer Codex - app-server hatalarını izole ederken sub-agent probunu - `OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=0` ile devre dışı bırakın. Odaklı bir sub-agent kontrolü için diğer probları devre dışı bırakın: + `/codex permissions` komutlarını uygular, ardından düz bir yanıtın ve bir görüntü ekinin + ACP yerine yerel Plugin bağlaması üzerinden yönlendirildiğini doğrular. +- Codex app-server koşum smoke testi: `pnpm test:docker:live-codex-harness` + - Gateway ajan turlarını Plugin'e ait Codex app-server koşumu üzerinden çalıştırır, + `/codex status` ve `/codex models` öğelerini doğrular ve varsayılan olarak görüntü, + cron MCP, alt ajan ve Guardian yoklamalarını uygular. Diğer Codex + app-server hatalarını izole ederken alt ajan yoklamasını + `OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=0` ile devre dışı bırakın. Odaklı bir alt ajan denetimi için diğer yoklamaları devre dışı bırakın: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=1 pnpm test:docker:live-codex-harness`. - `OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_ONLY=0` ayarlanmadıkça bu, sub-agent probundan sonra çıkar. -- Crestodian rescue komutu smoke: `pnpm test:live:crestodian-rescue-channel` - - Message-channel rescue komutu - yüzeyi için isteğe bağlı, ek güvenlik kontrolü. `/crestodian status` komutunu çalıştırır, kalıcı bir model - değişikliğini kuyruğa alır, `/crestodian yes` yanıtını verir ve audit/config yazma yolunu doğrular. -- Crestodian planner Docker smoke: `pnpm test:docker:crestodian-planner` - - Crestodian'ı `PATH` üzerinde sahte bir Claude CLI ile config'siz bir container'da çalıştırır - ve fuzzy planner fallback'in audit'lenmiş typed - config yazımına çevrildiğini doğrular. -- Crestodian ilk çalıştırma Docker smoke: `pnpm test:docker:crestodian-first-run` - - Boş bir OpenClaw state dizininden başlar, çıplak `openclaw` komutunu - Crestodian'a yönlendirir, setup/model/agent/Discord Plugin + SecretRef yazımlarını uygular, - config'i doğrular ve audit girdilerini doğrular. Aynı Ring 0 setup yolu + `OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_ONLY=0` ayarlanmadıkça bu, alt ajan yoklamasından sonra çıkar. +- Crestodian kurtarma komutu smoke testi: `pnpm test:live:crestodian-rescue-channel` + - Mesaj-kanalı kurtarma komutu yüzeyi için isteğe bağlı, ekstra güvence denetimi. + `/crestodian status` komutunu uygular, kalıcı bir model değişikliğini sıraya alır, + `/crestodian yes` yanıtını verir ve denetim/yapılandırma yazma yolunu doğrular. +- Crestodian planlayıcı Docker smoke testi: `pnpm test:docker:crestodian-planner` + - Crestodian'ı `PATH` üzerinde sahte bir Claude CLI bulunan yapılandırmasız bir konteynerde çalıştırır + ve bulanık planlayıcı geri dönüşünün denetlenmiş tipli bir + yapılandırma yazımına çevrildiğini doğrular. +- Crestodian ilk çalıştırma Docker smoke testi: `pnpm test:docker:crestodian-first-run` + - Boş bir OpenClaw durum dizininden başlar, yalın `openclaw` komutunu + Crestodian'a yönlendirir, kurulum/model/ajan/Discord Plugin + SecretRef yazımlarını uygular, + yapılandırmayı doğrular ve denetim girdilerini doğrular. Aynı Ring 0 kurulum yolu QA Lab'de de `pnpm openclaw qa suite --scenario crestodian-ring-zero-setup` ile kapsanır. -- Moonshot/Kimi maliyet smoke: `MOONSHOT_API_KEY` ayarlıyken - `openclaw models list --provider moonshot --json` çalıştırın, ardından - `moonshot/kimi-k2.6` üzerinde izole bir +- Moonshot/Kimi maliyet smoke testi: `MOONSHOT_API_KEY` ayarlıyken + `openclaw models list --provider moonshot --json` çalıştırın, ardından `moonshot/kimi-k2.6` üzerinde izole bir `openclaw agent --local --session-id live-kimi-cost --message 'Reply exactly: KIMI_LIVE_OK' --thinking off --json` - çalıştırın. JSON'ın Moonshot/K2.6 raporladığını ve - assistant transcript'in normalize edilmiş `usage.cost` sakladığını doğrulayın. + çalıştırın. JSON'un Moonshot/K2.6 bildirdiğini ve asistan transkriptinin normalize edilmiş `usage.cost` sakladığını doğrulayın. -Yalnızca tek bir hatalı vaka gerektiğinde, live testleri aşağıda açıklanan allowlist env değişkenleriyle daraltmayı tercih edin. +Yalnızca bir başarısız vakaya ihtiyacınız olduğunda, canlı testleri aşağıda açıklanan izin listesi env var'larıyla daraltmayı tercih edin. -## QA'ya özgü runner'lar +## QA'ya özgü çalıştırıcılar -Bu komutlar, QA-lab gerçekçiliği gerektiğinde ana test paketlerinin yanında yer alır: +Bu komutlar, QA-lab gerçekçiliğine ihtiyaç duyduğunuzda ana test paketlerinin yanında yer alır: -CI, QA Lab'i özel workflow'larda çalıştırır. `Parity gate` eşleşen PR'larda ve -manuel dispatch'ten mock provider'larla çalışır. `QA-Lab - All Lanes` her gece -`main` üzerinde ve manuel dispatch'ten mock parity gate, live Matrix yolu, -Convex yönetimli live Telegram yolu ve Convex yönetimli live Discord yolu ile -paralel işler olarak çalışır. Scheduled QA ve release kontrolleri Matrix `--profile fast` -değerini açıkça geçirirken, Matrix CLI ve manuel workflow input varsayılanı -`all` olarak kalır; manuel dispatch `all` değerini `transport`, `media`, `e2ee-smoke`, -`e2ee-deep` ve `e2ee-cli` işlerine shard edebilir. `OpenClaw Release Checks`, release onayı öncesinde parity ile -fast Matrix ve Telegram yollarını çalıştırır; release transport kontrolleri için -`mock-openai/gpt-5.5` kullanır, böylece deterministik kalırlar -ve normal provider-Plugin başlangıcından kaçınırlar. Bu live transport Gateway'leri -memory search'ü devre dışı bırakır; memory davranışı QA parity paketleri tarafından kapsanmaya devam eder. +CI, QA Lab'i özel iş akışlarında çalıştırır. `Parity gate`, eşleşen PR'larda ve +sahte sağlayıcılarla manuel tetiklemeden çalışır. `QA-Lab - All Lanes`, `main` üzerinde +gece çalışır ve sahte eşlik geçidi, canlı Matrix şeridi, +Convex tarafından yönetilen canlı Telegram şeridi ve Convex tarafından yönetilen canlı Discord şeridi ile +manuel tetiklemeden paralel işler olarak çalışır. Zamanlanmış QA ve sürüm denetimleri Matrix `--profile fast` +seçeneğini açıkça geçirirken, Matrix CLI ve manuel iş akışı girdisi varsayılanı +`all` olarak kalır; manuel tetikleme `all` öğesini `transport`, `media`, `e2ee-smoke`, +`e2ee-deep` ve `e2ee-cli` işlerine parçalayabilir. `OpenClaw Release Checks`, sürüm onayından önce +eşliği ve hızlı Matrix ile Telegram şeritlerini çalıştırır; sürüm aktarım denetimleri için +`mock-openai/gpt-5.5` kullanır, böylece bunlar deterministik kalır +ve normal sağlayıcı-Plugin başlatmasını atlar. Bu canlı aktarım Gateway'leri +bellek aramasını devre dışı bırakır; bellek davranışı QA eşlik paketleri tarafından kapsanmaya devam eder. -Tam release live media shard'ları -`ghcr.io/openclaw/openclaw-live-media-runner:ubuntu-24.04` kullanır; bu image içinde zaten -`ffmpeg` ve `ffprobe` bulunur. Docker live model/backend shard'ları, seçilen -commit başına bir kez oluşturulan paylaşılan -`ghcr.io/openclaw/openclaw-live-test:` image'ını kullanır, ardından her shard içinde yeniden build etmek yerine -`OPENCLAW_SKIP_DOCKER_BUILD=1` ile çeker. +Tam sürüm canlı medya parçaları +`ghcr.io/openclaw/openclaw-live-media-runner:ubuntu-24.04` kullanır; bu imajda zaten +`ffmpeg` ve `ffprobe` bulunur. Docker canlı model/arka uç parçaları, seçilen +commit başına bir kez oluşturulan ortak +`ghcr.io/openclaw/openclaw-live-test:` imajını kullanır, ardından her parça içinde yeniden oluşturmak yerine +`OPENCLAW_SKIP_DOCKER_BUILD=1` ile onu çeker. - `pnpm openclaw qa suite` - - Repo destekli QA senaryolarını doğrudan host üzerinde çalıştırır. + - Depo destekli QA senaryolarını doğrudan ana makinede çalıştırır. - Seçilen birden çok senaryoyu varsayılan olarak izole - Gateway worker'larıyla paralel çalıştırır. `qa-channel` varsayılan concurrency değeri 4'tür (seçilen senaryo sayısıyla sınırlıdır). Worker - sayısını ayarlamak için `--concurrency ` kullanın veya eski serial yol için `--concurrency 1` kullanın. - - Herhangi bir senaryo başarısız olduğunda sıfır dışı kodla çıkar. Hata çıkış kodu olmadan artifact istediğinizde - `--allow-failures` kullanın. - - `live-frontier`, `mock-openai` ve `aimock` provider modlarını destekler. - `aimock`, senaryo farkındalığına sahip - `mock-openai` yolunun yerine geçmeden deneysel - fixture ve protocol-mock coverage için yerel AIMock destekli bir provider server başlatır. + Gateway çalışanlarıyla paralel çalıştırır. `qa-channel`, concurrency 4 değerini varsayar (seçilen + senaryo sayısıyla sınırlıdır). Çalışan sayısını ayarlamak için + `--concurrency ` kullanın veya eski seri şerit için `--concurrency 1` kullanın. + - Herhangi bir senaryo başarısız olursa sıfır olmayan kodla çıkar. Başarısız çıkış kodu olmadan + artifact istediğinizde `--allow-failures` kullanın. + - `live-frontier`, `mock-openai` ve `aimock` sağlayıcı modlarını destekler. + `aimock`, senaryo farkındalıklı + `mock-openai` şeridinin yerine geçmeden deneysel fixture ve protokol-sahte kapsamı için yerel bir AIMock destekli sağlayıcı sunucusu başlatır. - `pnpm test:gateway:cpu-scenarios` - - Gateway startup bench'i ve küçük bir mock QA Lab senaryo paketini + - Gateway başlatma bench'i ile küçük bir sahte QA Lab senaryo paketini (`channel-chat-baseline`, `memory-failure-fallback`, - `gateway-restart-inflight-run`) çalıştırır ve `.artifacts/gateway-cpu-scenarios/` altında birleşik bir CPU gözlem - özeti yazar. - - Varsayılan olarak yalnızca sürekli hot CPU gözlemlerini işaretler (`--cpu-core-warn` - artı `--hot-wall-warn-ms`), böylece kısa startup patlamaları, dakikalarca süren Gateway peg regresyonu gibi görünmeden metrik olarak kaydedilir. - - Build edilmiş `dist` artifact'lerini kullanır; checkout'ta zaten taze runtime output yoksa önce build çalıştırın. + `gateway-restart-inflight-run`) çalıştırır ve birleşik CPU gözlem + özetini `.artifacts/gateway-cpu-scenarios/` altında yazar. + - Varsayılan olarak yalnızca sürekli sıcak CPU gözlemlerini işaretler (`--cpu-core-warn` + artı `--hot-wall-warn-ms`), böylece kısa başlatma patlamaları, + dakikalar süren Gateway kilitlenme regresyonu gibi görünmeden metrik olarak kaydedilir. + - Oluşturulmuş `dist` artifact'larını kullanır; checkout'ta zaten taze runtime çıktısı yoksa önce build çalıştırın. - `pnpm openclaw qa suite --runner multipass` - - Aynı QA paketini tek kullanımlık bir Multipass Linux VM içinde çalıştırır. - - Host üzerindeki `qa suite` ile aynı senaryo seçim davranışını korur. - - `qa suite` ile aynı provider/model seçim flag'lerini yeniden kullanır. - - Live çalıştırmalar, guest için pratik olan desteklenen QA auth input'larını iletir: - env tabanlı provider key'leri, QA live provider config yolu ve mevcut olduğunda `CODEX_HOME`. - - Output dizinleri repo root altında kalmalıdır, böylece guest, mount edilmiş workspace üzerinden geri yazabilir. - - Normal QA report + summary ve Multipass log'larını - `.artifacts/qa-e2e/...` altına yazar. + - Aynı QA paketini atılabilir bir Multipass Linux VM içinde çalıştırır. + - Ana makinedeki `qa suite` ile aynı senaryo-seçim davranışını korur. + - `qa suite` ile aynı sağlayıcı/model seçim bayraklarını yeniden kullanır. + - Canlı çalıştırmalar, konuk için pratik olan desteklenen QA auth girdilerini iletir: + env tabanlı sağlayıcı anahtarları, QA canlı sağlayıcı yapılandırma yolu ve mevcut olduğunda `CODEX_HOME`. + - Çıkış dizinleri depo kökünün altında kalmalıdır ki konuk, bağlanmış çalışma alanı üzerinden geri yazabilsin. + - Normal QA raporu + özeti ve Multipass günlüklerini + `.artifacts/qa-e2e/...` altında yazar. - `pnpm qa:lab:up` - - Operator tarzı QA işi için Docker destekli QA sitesini başlatır. + - Operatör tarzı QA çalışması için Docker destekli QA sitesini başlatır. - `pnpm test:docker:npm-onboard-channel-agent` - - Mevcut checkout'tan bir npm tarball oluşturur, Docker içinde global olarak kurar, etkileşimsiz OpenAI API-key onboarding çalıştırır, varsayılan olarak Telegram'ı yapılandırır, Plugin'i etkinleştirmenin runtime dependency'lerini gerektiğinde kurduğunu doğrular, doctor çalıştırır ve mock OpenAI endpoint'e karşı bir yerel agent turu çalıştırır. - - Aynı packaged-install yolunu Discord ile çalıştırmak için `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` kullanın. + - Geçerli checkout'tan bir npm tarball oluşturur, bunu Docker içinde global olarak yükler, + etkileşimsiz OpenAI API anahtarı onboarding'i çalıştırır, varsayılan olarak Telegram'ı yapılandırır, + Plugin'i etkinleştirmenin runtime bağımlılıklarını gerektiğinde yüklediğini doğrular, + doctor çalıştırır ve sahte bir OpenAI endpoint'ine karşı bir yerel ajan turu çalıştırır. + - Aynı paketlenmiş-kurulum şeridini Discord ile çalıştırmak için `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` kullanın. - `pnpm test:docker:session-runtime-context` - - Embedded runtime context transcript'leri için deterministik built-app Docker smoke çalıştırır. Gizli OpenClaw runtime context'in görünür user turn'e sızmak yerine görüntülenmeyen custom message olarak kalıcılaştırıldığını doğrular, ardından etkilenmiş bozuk bir session JSONL'i seed eder ve - `openclaw doctor --fix` komutunun onu bir backup ile active branch'e yeniden yazdığını doğrular. + - Gömülü runtime context transkriptleri için deterministik oluşturulmuş-uygulama Docker smoke testi çalıştırır. + Gizli OpenClaw runtime context'inin görünür kullanıcı turuna sızmak yerine + görüntülenmeyen özel mesaj olarak kalıcılaştırıldığını doğrular, + ardından etkilenmiş bozuk bir oturum JSONL dosyası tohumlar ve + `openclaw doctor --fix` komutunun bunu yedekle birlikte aktif dala yeniden yazdığını doğrular. - `pnpm test:docker:npm-telegram-live` - - Docker içinde bir OpenClaw package candidate kurar, installed-package onboarding çalıştırır, Telegram'ı installed CLI üzerinden yapılandırır, ardından live Telegram QA yolunu SUT Gateway olarak bu kurulu package ile yeniden kullanır. - - Varsayılan `OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@beta` değeridir; registry'den kurmak yerine çözümlenmiş yerel tarball test etmek için + - Docker içinde bir OpenClaw paket adayını yükler, yüklü-paket + onboarding'i çalıştırır, Telegram'ı yüklü CLI üzerinden yapılandırır, ardından + canlı Telegram QA şeridini SUT Gateway olarak bu yüklü paketle yeniden kullanır. + - Varsayılan `OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@beta` değeridir; registry'den yüklemek yerine + çözümlenmiş yerel bir tarball test etmek için `OPENCLAW_NPM_TELEGRAM_PACKAGE_TGZ=/path/to/openclaw-current.tgz` veya `OPENCLAW_CURRENT_PACKAGE_TGZ` ayarlayın. - - `pnpm openclaw qa telegram` ile aynı Telegram env kimlik bilgilerini veya Convex credential source'u kullanır. CI/release automation için - `OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex` ve - `OPENCLAW_QA_CONVEX_SITE_URL` ile role secret'ı ayarlayın. CI'da - `OPENCLAW_QA_CONVEX_SITE_URL` ve bir Convex role secret mevcutsa, - Docker wrapper Convex'i otomatik olarak seçer. - - `OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci|maintainer`, yalnızca bu yol için paylaşılan - `OPENCLAW_QA_CREDENTIAL_ROLE` değerini override eder. - - GitHub Actions bu yolu manuel maintainer workflow'u - `NPM Telegram Beta E2E` olarak sunar. Merge sırasında çalışmaz. Workflow, - `qa-live-shared` environment'ını ve Convex CI credential lease'lerini kullanır. -- GitHub Actions ayrıca tek bir candidate package'a karşı side-run product proof için + - `pnpm openclaw qa telegram` ile aynı Telegram env kimlik bilgilerini veya Convex kimlik bilgisi kaynağını kullanır. + CI/sürüm otomasyonu için `OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex` ile + `OPENCLAW_QA_CONVEX_SITE_URL` ve rol gizini ayarlayın. CI içinde + `OPENCLAW_QA_CONVEX_SITE_URL` ve bir Convex rol gizi mevcutsa, + Docker sarmalayıcısı Convex'i otomatik olarak seçer. + - `OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci|maintainer`, yalnızca bu şerit için ortak + `OPENCLAW_QA_CREDENTIAL_ROLE` değerini geçersiz kılar. + - GitHub Actions bu şeridi manuel bakımcı iş akışı + `NPM Telegram Beta E2E` olarak sunar. Merge sırasında çalışmaz. İş akışı + `qa-live-shared` environment'ını ve Convex CI kimlik bilgisi kiralamalarını kullanır. +- GitHub Actions ayrıca bir aday pakete karşı yan çalıştırma ürün kanıtı için `Package Acceptance` sunar. Güvenilir bir ref, yayımlanmış npm spec, - HTTPS tarball URL'si artı SHA-256 veya başka bir run'dan tarball artifact kabul eder, - normalize edilmiş `openclaw-current.tgz` dosyasını `package-under-test` olarak yükler, ardından - mevcut Docker E2E scheduler'ı smoke, package, product, full veya custom - lane profile'larıyla çalıştırır. Telegram QA workflow'unu aynı `package-under-test` artifact'ına karşı çalıştırmak için - `telegram_mode=mock-openai` veya `live-frontier` ayarlayın. - - En yeni beta product proof: + HTTPS tarball URL'si artı SHA-256 veya başka bir çalıştırmadan tarball artifact'ı kabul eder, + normalize edilmiş `openclaw-current.tgz` dosyasını `package-under-test` olarak yükler, ardından mevcut Docker E2E scheduler'ını smoke, package, product, full veya custom + şerit profilleriyle çalıştırır. Telegram QA iş akışını aynı `package-under-test` artifact'ına karşı çalıştırmak için `telegram_mode=mock-openai` veya `live-frontier` ayarlayın. + - En son beta ürün kanıtı: ```bash gh workflow run package-acceptance.yml --ref main \ @@ -196,7 +203,7 @@ gh workflow run package-acceptance.yml --ref main \ -f telegram_mode=mock-openai ``` -- Tam tarball URL proof'u digest gerektirir: +- Tam tarball URL kanıtı bir digest gerektirir: ```bash gh workflow run package-acceptance.yml --ref main \ @@ -206,7 +213,7 @@ gh workflow run package-acceptance.yml --ref main \ -f suite_profile=package ``` -- Artefakt kanıtı, başka bir Actions çalıştırmasından bir tarball artefaktı indirir: +- Artifact kanıtı, başka bir Actions çalıştırmasından bir tarball artifact indirir: ```bash gh workflow run package-acceptance.yml --ref main \ @@ -217,74 +224,74 @@ gh workflow run package-acceptance.yml --ref main \ ``` - `pnpm test:docker:bundled-channel-deps` - - Geçerli OpenClaw derlemesini Docker içinde paketler ve kurar, OpenAI yapılandırılmış olarak Gateway'i başlatır, ardından yapılandırma düzenlemeleriyle paketli kanal/plugin'leri etkinleştirir. - - Kurulum keşfinin, yapılandırılmamış plugin çalışma zamanı bağımlılıklarını yok bıraktığını; ilk yapılandırılmış Gateway veya doctor çalıştırmasının her paketli plugin'in çalışma zamanı bağımlılıklarını isteğe bağlı olarak kurduğunu; ikinci yeniden başlatmanın ise zaten etkinleştirilmiş bağımlılıkları yeniden kurmadığını doğrular. - - Ayrıca bilinen daha eski bir npm temel sürümünü kurar, `openclaw update --tag ` çalıştırmadan önce Telegram'ı etkinleştirir ve aday sürümün güncelleme sonrası doctor işleminin paketli kanal çalışma zamanı bağımlılıklarını, test donanımı tarafında postinstall onarımı olmadan onardığını doğrular. + - Geçerli OpenClaw derlemesini Docker içinde paketler ve kurar, OpenAI yapılandırılmış olarak Gateway'i başlatır, ardından yapılandırma düzenlemeleriyle paketli kanal/Plugin'leri etkinleştirir. + - Kurulum keşfinin yapılandırılmamış Plugin çalışma zamanı bağımlılıklarını mevcut bırakmadığını, ilk yapılandırılmış Gateway veya doctor çalıştırmasının her paketli Plugin'in çalışma zamanı bağımlılıklarını gerektiğinde kurduğunu ve ikinci yeniden başlatmanın zaten etkinleştirilmiş bağımlılıkları yeniden kurmadığını doğrular. + - Ayrıca bilinen eski bir npm temel sürümünü kurar, `openclaw update --tag ` çalıştırmadan önce Telegram'ı etkinleştirir ve adayın güncelleme sonrası doctor onarımının paketli kanal çalışma zamanı bağımlılıklarını harness tarafında postinstall onarımı olmadan düzelttiğini doğrular. - `pnpm test:parallels:npm-update` - Parallels konukları genelinde yerel paketli kurulum güncelleme smoke testini çalıştırır. Seçilen her platform önce istenen temel paketi kurar, ardından aynı konukta kurulu `openclaw update` komutunu çalıştırır ve kurulu sürümü, güncelleme durumunu, gateway hazır olma durumunu ve bir yerel ajan turunu doğrular. - - Tek bir konuk üzerinde yineleme yaparken `--platform macos`, `--platform windows` veya `--platform linux` kullanın. Özet artefakt yolu ve hat başına durum için `--json` kullanın. - - OpenAI hattı, canlı ajan turu kanıtı için varsayılan olarak `openai/gpt-5.5` kullanır. Bilerek başka bir OpenAI modelini doğrularken `--model ` geçirin veya `OPENCLAW_PARALLELS_OPENAI_MODEL` ayarlayın. - - Parallels taşıma takılmalarının test penceresinin kalanını tüketmemesi için uzun yerel çalıştırmaları bir ana makine zaman aşımıyla sarın: + - Tek bir konuk üzerinde yineleme yaparken `--platform macos`, `--platform windows` veya `--platform linux` kullanın. Özet artifact yolu ve her lane durumu için `--json` kullanın. + - OpenAI lane'i varsayılan olarak canlı ajan turu kanıtı için `openai/gpt-5.5` kullanır. Başka bir OpenAI modelini bilinçli olarak doğrularken `--model ` geçirin veya `OPENCLAW_PARALLELS_OPENAI_MODEL` ayarlayın. + - Parallels aktarım takılmalarının test penceresinin geri kalanını tüketmemesi için uzun yerel çalıştırmaları bir ana makine zaman aşımıyla sarın: ```bash timeout --foreground 150m pnpm test:parallels:npm-update -- --json timeout --foreground 90m pnpm test:parallels:npm-update -- --platform windows --json ``` - - Betik, iç içe hat günlüklerini `/tmp/openclaw-parallels-npm-update.*` altında yazar. Dış sarmalayıcının takıldığını varsaymadan önce `windows-update.log`, `macos-update.log` veya `linux-update.log` dosyasını inceleyin. + - Betik, iç içe lane günlüklerini `/tmp/openclaw-parallels-npm-update.*` altında yazar. Dış sarmalayıcının takıldığını varsaymadan önce `windows-update.log`, `macos-update.log` veya `linux-update.log` dosyasını inceleyin. - Windows güncellemesi, soğuk bir konukta güncelleme sonrası doctor/çalışma zamanı bağımlılığı onarımında 10 ila 15 dakika harcayabilir; iç içe npm hata ayıklama günlüğü ilerliyorsa bu hâlâ sağlıklıdır. - - Bu toplu sarmalayıcıyı tekil Parallels macOS, Windows veya Linux smoke hatlarıyla paralel çalıştırmayın. VM durumunu paylaşırlar ve anlık görüntü geri yükleme, paket sunma veya konuk gateway durumunda çakışabilirler. - - Güncelleme sonrası kanıt, normal paketli plugin yüzeyini çalıştırır; çünkü konuşma, görüntü oluşturma ve medya anlama gibi yetenek cepheleri, ajan turunun kendisi yalnızca basit bir metin yanıtını denetlese bile paketli çalışma zamanı API'leri üzerinden yüklenir. + - Bu toplu sarmalayıcıyı tekil Parallels macOS, Windows veya Linux smoke lane'leriyle paralel çalıştırmayın. Bunlar VM durumunu paylaşır ve snapshot geri yükleme, paket sunma veya konuk gateway durumu üzerinde çakışabilir. + - Güncelleme sonrası kanıt normal paketli Plugin yüzeyini çalıştırır çünkü konuşma, görüntü oluşturma ve medya anlama gibi capability facade'ları, ajan turunun kendisi yalnızca basit bir metin yanıtını kontrol etse bile paketli çalışma zamanı API'leri üzerinden yüklenir. - `pnpm openclaw qa aimock` - Doğrudan protokol smoke testi için yalnızca yerel AIMock sağlayıcı sunucusunu başlatır. - `pnpm openclaw qa matrix` - - Matrix canlı QA hattını, tek kullanımlık Docker destekli bir Tuwunel homeserver'a karşı çalıştırır. Yalnızca kaynak checkout'u; paketli kurulumlar `qa-lab` göndermez. - - Tam CLI, profil/senaryo kataloğu, ortam değişkenleri ve artefakt düzeni: [Matrix QA](/tr/concepts/qa-matrix). + - Matrix canlı QA lane'ini, tek kullanımlık Docker destekli bir Tuwunel homeserver'a karşı çalıştırır. Yalnızca kaynak checkout'u — paketli kurulumlar `qa-lab` içermez. + - Tam CLI, profil/senaryo kataloğu, env var'ları ve artifact düzeni: [Matrix QA](/tr/concepts/qa-matrix). - `pnpm openclaw qa telegram` - - Telegram canlı QA hattını, ortamdan gelen sürücü ve SUT bot token'larıyla gerçek bir özel gruba karşı çalıştırır. - - `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` ve `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN` gerektirir. Grup kimliği sayısal Telegram sohbet kimliği olmalıdır. - - Paylaşılan havuzlanmış kimlik bilgileri için `--credential-source convex` destekler. Varsayılan olarak env modunu kullanın veya havuzlanmış kiralamaları seçmek için `OPENCLAW_QA_CREDENTIAL_SOURCE=convex` ayarlayın. - - Herhangi bir senaryo başarısız olduğunda sıfır olmayan kodla çıkar. Başarısız çıkış kodu olmadan artefaktlar istediğinizde `--allow-failures` kullanın. - - Aynı özel grupta iki ayrı bot gerektirir; SUT botu bir Telegram kullanıcı adı sunmalıdır. + - Telegram canlı QA lane'ini, env'den gelen sürücü ve SUT bot token'ları kullanarak gerçek bir özel gruba karşı çalıştırır. + - `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` ve `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN` gerektirir. Grup id'si sayısal Telegram sohbet id'si olmalıdır. + - Paylaşılan havuz kimlik bilgileri için `--credential-source convex` destekler. Varsayılan olarak env modunu kullanın veya havuzlanmış kiralamalara katılmak için `OPENCLAW_QA_CREDENTIAL_SOURCE=convex` ayarlayın. + - Herhangi bir senaryo başarısız olduğunda sıfır olmayan kodla çıkar. Başarısız çıkış kodu olmadan artifact istediğinizde `--allow-failures` kullanın. + - Aynı özel grupta iki ayrı bot gerektirir; SUT botunun bir Telegram kullanıcı adı sunması gerekir. - Kararlı botlar arası gözlem için her iki botta da `@BotFather` içinde Bot-to-Bot Communication Mode'u etkinleştirin ve sürücü botun grup bot trafiğini gözlemleyebildiğinden emin olun. - - `.artifacts/qa-e2e/...` altında bir Telegram QA raporu, özeti ve gözlenen iletiler artefaktı yazar. Yanıt senaryoları, sürücü gönderme isteğinden gözlenen SUT yanıtına kadar RTT içerir. + - `.artifacts/qa-e2e/...` altında bir Telegram QA raporu, özet ve gözlemlenen mesajlar artifact'i yazar. Yanıtlama senaryoları, sürücü gönderme isteğinden gözlemlenen SUT yanıtına kadar RTT içerir. -Canlı taşıma hatları, yeni taşımaların sapmaması için tek bir standart sözleşme paylaşır; hat başına kapsam matrisi [QA genel bakış → Canlı taşıma kapsamı](/tr/concepts/qa-e2e-automation#live-transport-coverage) içinde bulunur. `qa-channel` geniş sentetik pakettir ve bu matrisin parçası değildir. +Canlı aktarım lane'leri tek bir standart sözleşmeyi paylaşır, böylece yeni aktarımlar sapmaz; lane başına kapsama matrisi [QA genel bakış → Canlı aktarım kapsamı](/tr/concepts/qa-e2e-automation#live-transport-coverage) içinde yer alır. `qa-channel` geniş sentetik süittir ve bu matrisin parçası değildir. ### Convex üzerinden paylaşılan Telegram kimlik bilgileri (v1) -`openclaw qa telegram` için `--credential-source convex` (veya `OPENCLAW_QA_CREDENTIAL_SOURCE=convex`) etkinleştirildiğinde, QA lab Convex destekli bir havuzdan özel bir kiralama alır, hat çalışırken bu kiralamaya heartbeat gönderir ve kapanışta kiralamayı serbest bırakır. +`openclaw qa telegram` için `--credential-source convex` (veya `OPENCLAW_QA_CREDENTIAL_SOURCE=convex`) etkinleştirildiğinde, QA lab Convex destekli bir havuzdan özel bir kiralama alır, lane çalışırken bu kiralama için Heartbeat gönderir ve kapanışta kiralamayı serbest bırakır. -Referans Convex proje iskelesi: +Referans Convex proje iskeleti: - `qa/convex-credential-broker/` -Gerekli ortam değişkenleri: +Gerekli env var'ları: - `OPENCLAW_QA_CONVEX_SITE_URL` (örneğin `https://your-deployment.convex.site`) -- Seçilen rol için bir gizli değer: +- Seçilen rol için bir secret: - `maintainer` için `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` - `ci` için `OPENCLAW_QA_CONVEX_SECRET_CI` -- Kimlik bilgisi rolü seçimi: +- Kimlik bilgisi rol seçimi: - CLI: `--credential-role maintainer|ci` - - Varsayılan env: `OPENCLAW_QA_CREDENTIAL_ROLE` (CI'da varsayılan `ci`, aksi halde `maintainer`) + - Env varsayılanı: `OPENCLAW_QA_CREDENTIAL_ROLE` (CI'da varsayılan `ci`, aksi halde `maintainer`) -İsteğe bağlı ortam değişkenleri: +İsteğe bağlı env var'ları: - `OPENCLAW_QA_CREDENTIAL_LEASE_TTL_MS` (varsayılan `1200000`) - `OPENCLAW_QA_CREDENTIAL_HEARTBEAT_INTERVAL_MS` (varsayılan `30000`) - `OPENCLAW_QA_CREDENTIAL_ACQUIRE_TIMEOUT_MS` (varsayılan `90000`) - `OPENCLAW_QA_CREDENTIAL_HTTP_TIMEOUT_MS` (varsayılan `15000`) - `OPENCLAW_QA_CONVEX_ENDPOINT_PREFIX` (varsayılan `/qa-credentials/v1`) -- `OPENCLAW_QA_CREDENTIAL_OWNER_ID` (isteğe bağlı iz kimliği) +- `OPENCLAW_QA_CREDENTIAL_OWNER_ID` (isteğe bağlı izleme id'si) - `OPENCLAW_QA_ALLOW_INSECURE_HTTP=1`, yalnızca yerel geliştirme için loopback `http://` Convex URL'lerine izin verir. `OPENCLAW_QA_CONVEX_SITE_URL` normal çalışmada `https://` kullanmalıdır. -Bakımcı yönetici komutları (havuz ekleme/kaldırma/listeleme) özellikle `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` gerektirir. +Maintainer yönetici komutları (havuz ekleme/kaldırma/listeleme) özellikle `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` gerektirir. -Bakımcılar için CLI yardımcıları: +Maintainer'lar için CLI yardımcıları: ```bash pnpm openclaw qa credentials doctor @@ -293,9 +300,9 @@ pnpm openclaw qa credentials list --kind telegram pnpm openclaw qa credentials remove --credential-id ``` -Canlı çalıştırmalardan önce Convex site URL'sini, broker gizli değerlerini, uç nokta önekini, HTTP zaman aşımını ve yönetici/liste erişilebilirliğini gizli değerleri yazdırmadan denetlemek için `doctor` kullanın. Betikler ve CI yardımcı programlarında makine tarafından okunabilir çıktı için `--json` kullanın. +Canlı çalıştırmalardan önce Convex site URL'sini, broker secret'larını, endpoint önekini, HTTP zaman aşımını ve admin/liste erişilebilirliğini secret değerlerini yazdırmadan kontrol etmek için `doctor` kullanın. Betikler ve CI yardımcı araçlarında makine tarafından okunabilir çıktı için `--json` kullanın. -Varsayılan uç nokta sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): +Varsayılan endpoint sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): - `POST /acquire` - İstek: `{ kind, ownerId, actorRole, leaseTtlMs, heartbeatIntervalMs }` @@ -307,138 +314,144 @@ Varsayılan uç nokta sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credent - `POST /release` - İstek: `{ kind, ownerId, actorRole, credentialId, leaseToken }` - Başarı: `{ status: "ok" }` (veya boş `2xx`) -- `POST /admin/add` (yalnızca maintainer gizli değeri) +- `POST /admin/add` (yalnızca maintainer secret'ı) - İstek: `{ kind, actorId, payload, note?, status? }` - Başarı: `{ status: "ok", credential }` -- `POST /admin/remove` (yalnızca maintainer gizli değeri) +- `POST /admin/remove` (yalnızca maintainer secret'ı) - İstek: `{ credentialId, actorId }` - Başarı: `{ status: "ok", changed, credential }` - Etkin kiralama koruması: `{ status: "error", code: "LEASE_ACTIVE", ... }` -- `POST /admin/list` (yalnızca maintainer gizli değeri) +- `POST /admin/list` (yalnızca maintainer secret'ı) - İstek: `{ kind?, status?, includePayload?, limit? }` - Başarı: `{ status: "ok", credentials, count }` -Telegram türü için payload şekli: +Telegram türü için payload biçimi: - `{ groupId: string, driverToken: string, sutToken: string }` -- `groupId` sayısal bir Telegram sohbet kimliği dizesi olmalıdır. -- `admin/add`, `kind: "telegram"` için bu şekli doğrular ve hatalı biçimlendirilmiş payload'ları reddeder. +- `groupId` sayısal Telegram sohbet id'si dizesi olmalıdır. +- `admin/add`, `kind: "telegram"` için bu biçimi doğrular ve hatalı biçimlendirilmiş payload'ları reddeder. ### QA'ya kanal ekleme -Yeni kanal bağdaştırıcıları için mimari ve senaryo yardımcısı adları [QA genel bakış → Kanal ekleme](/tr/concepts/qa-e2e-automation#adding-a-channel) içinde bulunur. Asgari çıta: taşıma çalıştırıcısını paylaşılan `qa-lab` ana makine yüzeyinde uygulayın, plugin manifestinde `qaRunners` bildirin, `openclaw qa ` olarak bağlayın ve senaryoları `qa/scenarios/` altında yazın. +Yeni kanal adaptörleri için mimari ve senaryo yardımcı adları [QA genel bakış → Kanal ekleme](/tr/concepts/qa-e2e-automation#adding-a-channel) içinde yer alır. Asgari gereksinim: aktarım çalıştırıcısını paylaşılan `qa-lab` ana makine seam'i üzerinde uygulamak, Plugin manifest'inde `qaRunners` bildirmek, `openclaw qa ` olarak bağlamak ve `qa/scenarios/` altında senaryolar yazmaktır. -## Test paketleri (ne nerede çalışır) +## Test süitleri (nerede ne çalışır) -Paketleri “artan gerçekçilik” (ve artan oynaklık/maliyet) olarak düşünün: +Süitleri “artan gerçekçilik” (ve artan kırılganlık/maliyet) olarak düşünün: ### Birim / entegrasyon (varsayılan) - Komut: `pnpm test` - Yapılandırma: hedeflenmemiş çalıştırmalar `vitest.full-*.config.ts` shard kümesini kullanır ve paralel zamanlama için çok projeli shard'ları proje başına yapılandırmalara genişletebilir -- Dosyalar: `src/**/*.test.ts`, `packages/**/*.test.ts` ve `test/**/*.test.ts` altında core/birim envanterleri; UI birim testleri ayrılmış `unit-ui` shard'ında çalışır +- Dosyalar: `src/**/*.test.ts`, `packages/**/*.test.ts` ve `test/**/*.test.ts` altındaki core/birim envanterleri; UI birim testleri ayrılmış `unit-ui` shard'ında çalışır - Kapsam: - Saf birim testleri - - Süreç içi entegrasyon testleri (gateway kimlik doğrulaması, yönlendirme, araç kullanımı, ayrıştırma, yapılandırma) + - Süreç içi entegrasyon testleri (gateway kimlik doğrulama, yönlendirme, araçlar, ayrıştırma, yapılandırma) - Bilinen hatalar için deterministik regresyonlar - Beklentiler: - CI'da çalışır - Gerçek anahtar gerektirmez - Hızlı ve kararlı olmalıdır - - Çözümleyici ve genel yüzey yükleyici testleri, gerçek paketli plugin kaynak API'leriyle değil, oluşturulmuş küçük plugin fikstürleriyle geniş `api.js` ve `runtime-api.js` fallback davranışını kanıtlamalıdır. Gerçek plugin API yüklemeleri, plugin'e ait sözleşme/entegrasyon paketlerine aittir. + - Resolver ve public-surface loader testleri, gerçek paketli Plugin kaynak API'leriyle değil, oluşturulmuş küçük Plugin fixture'larıyla geniş `api.js` ve `runtime-api.js` fallback davranışını kanıtlamalıdır. Gerçek Plugin API yüklemeleri Plugin'e ait contract/entegrasyon süitlerine aittir. - + - - Hedef belirtilmeyen `pnpm test`, tek bir dev yerel kök proje süreci yerine on iki daha küçük shard yapılandırması (`core-unit-fast`, `core-unit-src`, `core-unit-security`, `core-unit-ui`, `core-unit-support`, `core-support-boundary`, `core-contracts`, `core-bundled`, `core-runtime`, `agentic`, `auto-reply`, `extensions`) çalıştırır. Bu, yüklü makinelerde tepe RSS değerini düşürür ve auto-reply/uzantı işlerinin ilgisiz suite'leri aç bırakmasını önler. - - `pnpm test --watch`, çok shard'lı bir izleme döngüsü pratik olmadığı için hâlâ yerel kök `vitest.config.ts` proje grafiğini kullanır. - - `pnpm test`, `pnpm test:watch` ve `pnpm test:perf:imports`, açık dosya/dizin hedeflerini önce kapsamlı lane'ler üzerinden yönlendirir; böylece `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` tam kök proje başlatma maliyetini ödemez. - - `pnpm test:changed`, değişen git yollarını varsayılan olarak ucuz kapsamlı lane'lere genişletir: doğrudan test düzenlemeleri, kardeş `*.test.ts` dosyaları, açık kaynak eşlemeleri ve yerel import grafiği bağımlıları. Config/setup/package düzenlemeleri, açıkça `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` kullanmadığınız sürece testleri geniş kapsamda çalıştırmaz. - - `pnpm check:changed`, dar çalışmalar için normal akıllı yerel kontrol kapısıdır. Diff'i core, core testleri, uzantılar, uzantı testleri, uygulamalar, dokümanlar, release metadata, canlı Docker araçları ve araçlar olarak sınıflandırır; ardından eşleşen typecheck, lint ve guard komutlarını çalıştırır. Vitest testlerini çalıştırmaz; test kanıtı için `pnpm test:changed` veya açık `pnpm test ` çağırın. Yalnızca release metadata sürüm artırımları, üst düzey version alanı dışındaki package değişikliklerini reddeden bir guard ile hedeflenmiş version/config/root-dependency kontrollerini çalıştırır. - - Canlı Docker ACP harness düzenlemeleri odaklı kontroller çalıştırır: canlı Docker auth script'leri için shell söz dizimi ve canlı Docker scheduler dry-run. `package.json` değişiklikleri yalnızca diff `scripts["test:docker:live-*"]` ile sınırlı olduğunda dahil edilir; dependency, export, version ve diğer package yüzeyi düzenlemeleri hâlâ daha geniş guard'ları kullanır. - - Agents, komutlar, plugins, auto-reply helper'ları, `plugin-sdk` ve benzer saf yardımcı alanlardan import-light unit testler, `test/setup-openclaw-runtime.ts` dosyasını atlayan `unit-fast` lane'i üzerinden yönlendirilir; stateful/runtime-heavy dosyalar mevcut lane'lerde kalır. - - Seçili `plugin-sdk` ve `commands` helper kaynak dosyaları da changed-mode çalıştırmalarını bu hafif lane'lerde açık kardeş testlere eşler; böylece helper düzenlemeleri, o dizin için tam ağır suite'i yeniden çalıştırmaz. - - `auto-reply`, üst düzey core helper'lar, üst düzey `reply.*` integration testleri ve `src/auto-reply/reply/**` alt ağacı için özel bucket'lara sahiptir. CI ayrıca reply alt ağacını agent-runner, dispatch ve commands/state-routing shard'larına böler; böylece import-heavy tek bir bucket tam Node kuyruğunu sahiplenmez. - - Normal PR/main CI, uzantı batch sweep'ini ve yalnızca release için olan `agentic-plugins` shard'ını bilinçli olarak atlar. Full Release Validation, release candidate'larında bu plugin/uzantı ağırlıklı suite'ler için ayrı `Plugin Prerelease` child workflow'unu dispatch eder. + - Hedef belirtilmemiş `pnpm test`, tek bir dev yerel kök proje işlemi yerine on iki daha küçük parça yapılandırması (`core-unit-fast`, `core-unit-src`, `core-unit-security`, `core-unit-ui`, `core-unit-support`, `core-support-boundary`, `core-contracts`, `core-bundled`, `core-runtime`, `agentic`, `auto-reply`, `extensions`) çalıştırır. Bu, yüklü makinelerde tepe RSS değerini düşürür ve auto-reply/uzantı işinin ilgisiz paketleri kaynak açısından aç bırakmasını önler. + - `pnpm test --watch` hâlâ yerel kök `vitest.config.ts` proje grafiğini kullanır, çünkü çok parçalı bir watch döngüsü pratik değildir. + - `pnpm test`, `pnpm test:watch` ve `pnpm test:perf:imports`, açık dosya/dizin hedeflerini önce kapsamlı hatlar üzerinden yönlendirir; böylece `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` tam kök proje başlatma maliyetini ödemez. + - `pnpm test:changed`, değişen git yollarını varsayılan olarak ucuz kapsamlı hatlara genişletir: doğrudan test düzenlemeleri, kardeş `*.test.ts` dosyaları, açık kaynak eşlemeleri ve yerel içe aktarma grafiği bağımlıları. Yapılandırma/kurulum/paket düzenlemeleri, açıkça `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` kullanmadığınız sürece testleri geniş kapsamlı çalıştırmaz. + - `pnpm check:changed`, dar işler için normal akıllı yerel kontrol kapısıdır. Diff'i core, core testleri, uzantılar, uzantı testleri, uygulamalar, dokümanlar, yayın meta verisi, canlı Docker araçları ve araçlar olarak sınıflandırır; ardından eşleşen typecheck, lint ve guard komutlarını çalıştırır. Vitest testlerini çalıştırmaz; test kanıtı için `pnpm test:changed` veya açık `pnpm test ` çağırın. Yalnızca yayın meta verisi içeren sürüm artırımları, üst düzey version alanı dışındaki paket değişikliklerini reddeden bir guard ile hedefli sürüm/yapılandırma/kök bağımlılık kontrolleri çalıştırır. + - Canlı Docker ACP harness düzenlemeleri odaklı kontroller çalıştırır: canlı Docker auth betikleri için kabuk sözdizimi ve canlı Docker zamanlayıcı dry-run. `package.json` değişiklikleri yalnızca diff `scripts["test:docker:live-*"]` ile sınırlı olduğunda dahil edilir; bağımlılık, export, version ve diğer paket yüzeyi düzenlemeleri hâlâ daha geniş guard'ları kullanır. + - Agents, commands, Plugin'ler, auto-reply yardımcıları, `plugin-sdk` ve benzer saf yardımcı alanlardan içe aktarma yükü hafif birim testleri, `test/setup-openclaw-runtime.ts` dosyasını atlayan `unit-fast` hattı üzerinden yönlendirilir; durum tutan/çalışma zamanı ağır dosyalar mevcut hatlarda kalır. + - Seçili `plugin-sdk` ve `commands` yardımcı kaynak dosyaları da değişiklik modundaki çalıştırmaları bu hafif hatlardaki açık kardeş testlere eşler; böylece yardımcı düzenlemeleri o dizin için tam ağır paketi yeniden çalıştırmaktan kaçınır. + - `auto-reply`, üst düzey core yardımcıları, üst düzey `reply.*` entegrasyon testleri ve `src/auto-reply/reply/**` alt ağacı için ayrılmış gruplara sahiptir. CI ayrıca reply alt ağacını agent-runner, dispatch ve commands/state-routing parçalarına böler; böylece içe aktarma yükü ağır tek bir grup tüm Node kuyruğunu sahiplenmez. + - Normal PR/main CI, uzantı toplu taramasını ve yalnızca yayın için olan `agentic-plugins` parçasını bilerek atlar. Tam Yayın Doğrulama, yayın adaylarında bu Plugin/uzantı ağırlıklı paketler için ayrı Plugin Ön Yayın alt iş akışını başlatır. - + - - Message-tool discovery girdilerini veya Compaction runtime - bağlamını değiştirdiğinizde, iki kapsam düzeyini de koruyun. - - Saf yönlendirme ve normalizasyon sınırları için odaklı helper regresyonları - ekleyin. - - Gömülü runner integration suite'lerini sağlıklı tutun: + - İleti aracı keşif girdilerini veya Compaction çalışma zamanı + bağlamını değiştirdiğinizde, her iki kapsam düzeyini de koruyun. + - Saf yönlendirme ve normalleştirme sınırları için odaklı yardımcı + regresyon testleri ekleyin. + - Yerleşik çalıştırıcı entegrasyon paketlerini sağlıklı tutun: `src/agents/pi-embedded-runner/compact.hooks.test.ts`, `src/agents/pi-embedded-runner/run.overflow-compaction.test.ts` ve `src/agents/pi-embedded-runner/run.overflow-compaction.loop.test.ts`. - - Bu suite'ler, kapsamlı id'lerin ve Compaction davranışının gerçek - `run.ts` / `compact.ts` yolları üzerinden hâlâ aktığını doğrular; yalnızca - helper testleri bu integration yollarının yeterli bir yerine geçmez. + - Bu paketler, kapsamlı kimliklerin ve Compaction davranışının gerçek + `run.ts` / `compact.ts` yollarından akmaya devam ettiğini doğrular; + yalnızca yardımcı testleri, bu entegrasyon yollarının yeterli bir + alternatifi değildir. - + - - Temel Vitest config varsayılanı `threads` değeridir. - - Paylaşılan Vitest config `isolate: false` değerini sabitler ve kök projelerde, - e2e'de ve canlı config'lerde izole olmayan runner'ı kullanır. - - Kök UI lane'i kendi `jsdom` setup'ını ve optimizer'ını korur, ancak o da - paylaşılan izole olmayan runner üzerinde çalışır. - - Her `pnpm test` shard'ı, paylaşılan Vitest config'ten aynı `threads` + `isolate: false` - varsayılanlarını devralır. - - `scripts/run-vitest.mjs`, büyük yerel çalıştırmalar sırasında V8 compile churn'ünü - azaltmak için varsayılan olarak Vitest child Node süreçlerine `--no-maglev` - ekler. Stock V8 davranışıyla karşılaştırmak için `OPENCLAW_VITEST_ENABLE_MAGLEV=1` - ayarlayın. + - Temel Vitest yapılandırması varsayılan olarak `threads` kullanır. + - Paylaşılan Vitest yapılandırması `isolate: false` değerini sabitler ve + kök projeler, e2e ve canlı yapılandırmalar genelinde yalıtılmamış + çalıştırıcıyı kullanır. + - Kök UI hattı `jsdom` kurulumunu ve iyileştiricisini korur, ancak o da + paylaşılan yalıtılmamış çalıştırıcıda çalışır. + - Her `pnpm test` parçası, paylaşılan Vitest yapılandırmasından aynı + `threads` + `isolate: false` varsayılanlarını devralır. + - `scripts/run-vitest.mjs`, büyük yerel çalıştırmalar sırasında V8 derleme + yükünü azaltmak için Vitest alt Node işlemlerine varsayılan olarak + `--no-maglev` ekler. Standart V8 davranışıyla karşılaştırmak için + `OPENCLAW_VITEST_ENABLE_MAGLEV=1` ayarlayın. - + - - `pnpm changed:lanes`, bir diff'in hangi mimari lane'leri tetiklediğini gösterir. - - Pre-commit hook yalnızca formatlama yapar. Formatlanan dosyaları yeniden stage eder ve - lint, typecheck veya test çalıştırmaz. - - Akıllı yerel kontrol kapısına ihtiyacınız olduğunda handoff veya push öncesinde - `pnpm check:changed` komutunu açıkça çalıştırın. - - `pnpm test:changed`, varsayılan olarak ucuz kapsamlı lane'ler üzerinden yönlendirilir. `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` komutunu yalnızca agent bir harness, config, package veya contract düzenlemesinin gerçekten daha geniş Vitest kapsamına ihtiyaç duyduğuna karar verdiğinde kullanın. - - `pnpm test:max` ve `pnpm test:changed:max` aynı yönlendirme davranışını korur, - yalnızca daha yüksek bir worker sınırıyla. - - Yerel worker otomatik ölçekleme bilinçli olarak muhafazakârdır ve host load average - zaten yüksek olduğunda geri çekilir; bu yüzden birden fazla eşzamanlı + - `pnpm changed:lanes`, bir diff'in hangi mimari hatları tetiklediğini gösterir. + - Pre-commit kancası yalnızca biçimlendirme yapar. Biçimlendirilmiş dosyaları + yeniden hazırlama alanına alır ve lint, typecheck veya test çalıştırmaz. + - Akıllı yerel kontrol kapısına ihtiyacınız olduğunda devretmeden veya uzak + depoya göndermeden önce `pnpm check:changed` komutunu açıkça çalıştırın. + - `pnpm test:changed` varsayılan olarak ucuz kapsamlı hatlardan yönlendirilir. Ajan + bir harness, yapılandırma, paket veya sözleşme düzenlemesinin gerçekten daha geniş + Vitest kapsamına ihtiyaç duyduğuna karar verdiğinde yalnızca + `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` kullanın. + - `pnpm test:max` ve `pnpm test:changed:max` aynı yönlendirme + davranışını korur, yalnızca daha yüksek bir işçi sınırıyla. + - Yerel işçi otomatik ölçeklendirmesi bilerek tutucudur ve ana makine yük + ortalaması zaten yüksek olduğunda geri çekilir; böylece birden çok eşzamanlı Vitest çalıştırması varsayılan olarak daha az zarar verir. - - Temel Vitest config, test bağlantıları değiştiğinde changed-mode yeniden çalıştırmalarının - doğru kalması için projeleri/config dosyalarını `forceRerunTriggers` olarak işaretler. - - Config, desteklenen host'larda `OPENCLAW_VITEST_FS_MODULE_CACHE` değerini etkin tutar; - doğrudan profiling için tek bir açık cache konumu istiyorsanız - `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/abs/path` ayarlayın. + - Temel Vitest yapılandırması, test bağlantıları değiştiğinde değişiklik + modundaki yeniden çalıştırmalar doğru kalsın diye projeleri/yapılandırma + dosyalarını `forceRerunTriggers` olarak işaretler. + - Yapılandırma, desteklenen ana makinelerde `OPENCLAW_VITEST_FS_MODULE_CACHE` + etkin tutar; doğrudan profil oluşturma için tek bir açık önbellek konumu + istiyorsanız `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/abs/path` ayarlayın. - + - - `pnpm test:perf:imports`, Vitest import-duration raporlamasını ve - import-breakdown çıktısını etkinleştirir. - - `pnpm test:perf:imports:changed`, aynı profiling görünümünü `origin/main` sonrası - değişen dosyalarla sınırlar. - - Shard timing verileri `.artifacts/vitest-shard-timings.json` dosyasına yazılır. - Whole-config çalıştırmaları anahtar olarak config yolunu kullanır; include-pattern CI - shard'ları, filtrelenmiş shard'ların ayrı izlenebilmesi için shard adını ekler. - - Sıcak bir test hâlâ zamanının çoğunu başlatma import'larında harcıyorsa, - ağır dependency'leri dar bir yerel `*.runtime.ts` seam'inin arkasında tutun ve - sırf `vi.mock(...)` üzerinden geçirmek için runtime helper'larını deep-import etmek yerine - o seam'i doğrudan mock edin. - - `pnpm test:perf:changed:bench -- --ref `, routed - `test:changed` değerini o commit'lenmiş diff için yerel kök proje yolu ile karşılaştırır - ve wall time ile macOS max RSS yazdırır. + - `pnpm test:perf:imports`, Vitest içe aktarma süresi raporlamasını ve + içe aktarma dökümü çıktısını etkinleştirir. + - `pnpm test:perf:imports:changed`, aynı profil oluşturma görünümünü + `origin/main` sonrasında değişen dosyalarla sınırlar. + - Parça zamanlama verileri `.artifacts/vitest-shard-timings.json` dosyasına yazılır. + Tam yapılandırma çalıştırmaları anahtar olarak yapılandırma yolunu kullanır; dahil etme deseni CI + parçaları, filtrelenmiş parçalar ayrı izlenebilsin diye parça adını sona ekler. + - Yoğun bir test hâlâ zamanının çoğunu başlatma içe aktarmalarında harcadığında, + ağır bağımlılıkları dar bir yerel `*.runtime.ts` aralığının arkasında tutun ve + onları yalnızca `vi.mock(...)` üzerinden geçirmek için çalışma zamanı yardımcılarını + derinden içe aktarmak yerine bu aralığı doğrudan mock edin. + - `pnpm test:perf:changed:bench -- --ref `, yönlendirilmiş + `test:changed` ile o işlenmiş diff için yerel kök proje yolunu karşılaştırır + ve duvar saati süresini artı macOS maks. RSS değerini yazdırır. - `pnpm test:perf:changed:bench -- --worktree`, değişen dosya listesini - `scripts/test-projects.mjs` ve kök Vitest config üzerinden yönlendirerek mevcut - dirty tree'yi benchmark eder. - - `pnpm test:perf:profile:main`, Vitest/Vite başlatma ve transform overhead'i için - main-thread CPU profili yazar. - - `pnpm test:perf:profile:runner`, dosya paralelliği devre dışıyken unit suite için - runner CPU+heap profilleri yazar. + `scripts/test-projects.mjs` ve kök Vitest yapılandırması üzerinden yönlendirerek + geçerli kirli ağacı benchmark eder. + - `pnpm test:perf:profile:main`, Vitest/Vite başlatma ve dönüştürme ek yükü için + ana iş parçacığı CPU profili yazar. + - `pnpm test:perf:profile:runner`, dosya paralelliği devre dışı bırakılmış + birim paketi için çalıştırıcı CPU+heap profilleri yazar. @@ -446,318 +459,324 @@ Paketleri “artan gerçekçilik” (ve artan oynaklık/maliyet) olarak düşün ### Kararlılık (Gateway) - Komut: `pnpm test:stability:gateway` -- Config: `vitest.gateway.config.ts`, tek worker'a zorlanır +- Yapılandırma: `vitest.gateway.config.ts`, bir işçiye zorlanmış - Kapsam: - - Varsayılan olarak diagnostics etkinleştirilmiş gerçek bir loopback Gateway başlatır - - Diagnostic event yolu üzerinden sentetik gateway mesajı, memory ve large-payload churn'ü yürütür + - Tanılamalar varsayılan olarak etkin olacak şekilde gerçek bir geri döngü Gateway'i başlatır + - Sentetik Gateway iletisi, bellek ve büyük yük hareketliliğini tanılama olay yolu üzerinden sürer - Gateway WS RPC üzerinden `diagnostics.stability` sorgular - - Diagnostic stability bundle persistence helper'larını kapsar - - Recorder'ın sınırlı kaldığını, sentetik RSS örneklerinin pressure budget altında kaldığını ve session başına queue depth'lerin tekrar sıfıra indiğini assert eder + - Tanılama kararlılığı paketi kalıcılık yardımcılarını kapsar + - Kaydedicinin sınırlı kaldığını, sentetik RSS örneklerinin baskı bütçesinin altında kaldığını ve oturum başına kuyruk derinliklerinin yeniden sıfıra boşaldığını doğrular - Beklentiler: - - CI-safe ve anahtarsız - - Stability-regression takibi için dar lane; tam Gateway suite'inin yerine geçmez + - CI için güvenli ve anahtarsız + - Kararlılık regresyonu takibi için dar hat; tam Gateway paketinin yerine geçmez -### E2E (Gateway smoke) +### E2E (Gateway duman testi) - Komut: `pnpm test:e2e` -- Config: `vitest.e2e.config.ts` -- Dosyalar: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts` ve `extensions/` altındaki paketli Plugin E2E testleri -- Runtime varsayılanları: - - Repo'nun geri kalanıyla eşleşecek şekilde Vitest `threads` ile `isolate: false` kullanır. - - Uyarlanabilir worker'lar kullanır (CI: en fazla 2, yerel: varsayılan olarak 1). - - Console I/O overhead'ini azaltmak için varsayılan olarak silent modda çalışır. -- Kullanışlı override'lar: - - Worker sayısını zorlamak için `OPENCLAW_E2E_WORKERS=` (16 ile sınırlıdır). - - Ayrıntılı console çıktısını yeniden etkinleştirmek için `OPENCLAW_E2E_VERBOSE=1`. +- Yapılandırma: `vitest.e2e.config.ts` +- Dosyalar: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts` ve `extensions/` altındaki paketlenmiş Plugin E2E testleri +- Çalışma zamanı varsayılanları: + - Deponun geri kalanıyla eşleşecek şekilde Vitest `threads` değerini `isolate: false` ile kullanır. + - Uyarlanabilir işçiler kullanır (CI: en fazla 2, yerel: varsayılan olarak 1). + - Konsol G/Ç ek yükünü azaltmak için varsayılan olarak sessiz modda çalışır. +- Yararlı geçersiz kılmalar: + - İşçi sayısını zorlamak için `OPENCLAW_E2E_WORKERS=` (16 ile sınırlandırılır). + - Ayrıntılı konsol çıktısını yeniden etkinleştirmek için `OPENCLAW_E2E_VERBOSE=1`. - Kapsam: - Çok örnekli Gateway uçtan uca davranışı - - WebSocket/HTTP yüzeyleri, node pairing ve daha ağır networking + - WebSocket/HTTP yüzeyleri, Node eşleştirme ve daha ağır ağ iletişimi - Beklentiler: - - CI'da çalışır (pipeline'da etkinleştirildiğinde) + - CI'da çalışır (pipeline içinde etkinleştirildiğinde) - Gerçek anahtar gerekmez - - Unit testlere göre daha fazla hareketli parçaya sahiptir (daha yavaş olabilir) + - Birim testlerinden daha fazla hareketli parça içerir (daha yavaş olabilir) -### E2E: OpenShell backend smoke +### E2E: OpenShell arka uç duman testi - Komut: `pnpm test:e2e:openshell` - Dosya: `extensions/openshell/src/backend.e2e.test.ts` - Kapsam: - - Docker aracılığıyla host üzerinde izole bir OpenShell Gateway başlatır - - Geçici bir yerel Dockerfile'dan sandbox oluşturur - - OpenClaw'ın OpenShell backend'ini gerçek `sandbox ssh-config` + SSH exec üzerinden çalıştırır - - Sandbox fs bridge üzerinden remote-canonical dosya sistemi davranışını doğrular + - Docker üzerinden ana makinede yalıtılmış bir OpenShell Gateway'i başlatır + - Geçici bir yerel Dockerfile'dan korumalı alan oluşturur + - OpenClaw'ın OpenShell arka ucunu gerçek `sandbox ssh-config` + SSH yürütmesi üzerinden çalıştırır + - Uzak-kanonik dosya sistemi davranışını korumalı alan fs köprüsü üzerinden doğrular - Beklentiler: - - Yalnızca opt-in; varsayılan `pnpm test:e2e` çalıştırmasının parçası değildir - - Yerel bir `openshell` CLI ve çalışan bir Docker daemon gerektirir - - İzole `HOME` / `XDG_CONFIG_HOME` kullanır, ardından test Gateway'ini ve sandbox'ı yok eder -- Kullanışlı override'lar: - - Daha geniş e2e suite'i manuel çalıştırırken testi etkinleştirmek için `OPENCLAW_E2E_OPENSHELL=1` - - Varsayılan olmayan bir CLI binary'sine veya wrapper script'e işaret etmek için `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell` + - Yalnızca isteğe bağlı; varsayılan `pnpm test:e2e` çalıştırmasının parçası değildir + - Yerel `openshell` CLI ve çalışan bir Docker artalan süreci gerektirir + - Yalıtılmış `HOME` / `XDG_CONFIG_HOME` kullanır, ardından test Gateway'ini ve korumalı alanı yok eder +- Yararlı geçersiz kılmalar: + - Daha geniş e2e paketini elle çalıştırırken testi etkinleştirmek için `OPENCLAW_E2E_OPENSHELL=1` + - Varsayılan olmayan bir CLI ikilisine veya sarmalayıcı betiğe işaret etmek için `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell` -### Canlı (gerçek providers + gerçek models) +### Canlı (gerçek sağlayıcılar + gerçek modeller) - Komut: `pnpm test:live` -- Config: `vitest.live.config.ts` -- Dosyalar: `src/**/*.live.test.ts`, `test/**/*.live.test.ts` ve `extensions/` altındaki paketli Plugin canlı testleri -- Varsayılan: `pnpm test:live` tarafından **etkin** (`OPENCLAW_LIVE_TEST=1` ayarlar) +- Yapılandırma: `vitest.live.config.ts` +- Dosyalar: `src/**/*.live.test.ts`, `test/**/*.live.test.ts` ve `extensions/` altındaki paketlenmiş Plugin canlı testleri +- Varsayılan: `pnpm test:live` tarafından **etkinleştirilir** (`OPENCLAW_LIVE_TEST=1` ayarlar) - Kapsam: - - “Bu provider/model gerçek kimlik bilgileriyle _bugün_ gerçekten çalışıyor mu?” - - Provider format değişikliklerini, tool-calling tuhaflıklarını, auth sorunlarını ve rate limit davranışını yakalar + - “Bu sağlayıcı/model gerçek kimlik bilgileriyle _bugün_ gerçekten çalışıyor mu?” + - Sağlayıcı biçim değişikliklerini, araç çağırma tuhaflıklarını, kimlik doğrulama sorunlarını ve hız sınırı davranışını yakalar - Beklentiler: - - Tasarım gereği CI-stable değildir (gerçek ağlar, gerçek provider politikaları, kotalar, kesintiler) - - Para harcar / rate limit kullanır - - “Her şeyi” çalıştırmak yerine daraltılmış alt kümeleri çalıştırmayı tercih edin -- Canlı çalıştırmalar, eksik API anahtarlarını almak için `~/.profile` dosyasını source eder. -- Varsayılan olarak, canlı çalıştırmalar yine de `HOME` değerini izole eder ve unit fixture'larının gerçek `~/.openclaw` dizininizi mutate edememesi için config/auth material'ını geçici bir test home'a kopyalar. -- `OPENCLAW_LIVE_USE_REAL_HOME=1` değerini yalnızca canlı testlerin bilerek gerçek home dizininizi kullanmasına ihtiyacınız olduğunda ayarlayın. -- `pnpm test:live` artık varsayılan olarak daha sessiz bir moda geçer: `[live] ...` ilerleme çıktısını korur, ancak ek `~/.profile` bildirimini bastırır ve Gateway bootstrap log'larını/Bonjour chatter'ını susturur. Tam startup log'larını geri istiyorsanız `OPENCLAW_LIVE_TEST_QUIET=0` ayarlayın. -- API anahtarı rotasyonu (provider'a özgü): virgül/noktalı virgül biçimiyle `*_API_KEYS` veya `*_API_KEY_1`, `*_API_KEY_2` ayarlayın (örneğin `OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS`) ya da `OPENCLAW_LIVE_*_KEY` ile canlıya özel override kullanın; testler rate limit yanıtlarında yeniden dener. + - Tasarımı gereği CI-kararlı değildir (gerçek ağlar, gerçek sağlayıcı politikaları, kotalar, kesintiler) + - Para maliyeti vardır / hız sınırlarını kullanır + - “Her şey” yerine daraltılmış alt kümeleri çalıştırmayı tercih edin +- Canlı çalıştırmalar, eksik API anahtarlarını almak için `~/.profile` dosyasını kaynak olarak okur. +- Varsayılan olarak canlı çalıştırmalar hâlâ `HOME` öğesini yalıtır ve yapılandırma/auth malzemesini geçici bir test home dizinine kopyalar; böylece birim fixture'ları gerçek `~/.openclaw` dizininizi değiştiremez. +- `OPENCLAW_LIVE_USE_REAL_HOME=1` değerini yalnızca canlı testlerin kasıtlı olarak gerçek home dizininizi kullanmasına ihtiyaç duyduğunuzda ayarlayın. +- `pnpm test:live` artık varsayılan olarak daha sessiz bir moda geçer: `[live] ...` ilerleme çıktısını korur, ancak ek `~/.profile` bildirimini bastırır ve Gateway başlatma günlüklerini/Bonjour gürültüsünü sessize alır. Tam başlatma günlüklerini geri istiyorsanız `OPENCLAW_LIVE_TEST_QUIET=0` ayarlayın. +- API anahtarı rotasyonu (sağlayıcıya özel): virgül/noktalı virgül biçimiyle `*_API_KEYS` veya `*_API_KEY_1`, `*_API_KEY_2` ayarlayın (örneğin `OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS`) ya da `OPENCLAW_LIVE_*_KEY` üzerinden canlı test başına geçersiz kılma kullanın; testler hız sınırı yanıtlarında yeniden dener. - İlerleme/Heartbeat çıktısı: - - Canlı suite'ler artık stderr'e ilerleme satırları yayar; böylece uzun provider çağrıları Vitest console capture sessiz olsa bile görünür şekilde aktiftir. - - `vitest.live.config.ts`, canlı çalıştırmalar sırasında provider/Gateway ilerleme satırlarının hemen stream edilmesi için Vitest console interception'ı devre dışı bırakır. - - Direct-model Heartbeat'leri `OPENCLAW_LIVE_HEARTBEAT_MS` ile ayarlayın. - - Gateway/probe Heartbeat'leri `OPENCLAW_LIVE_GATEWAY_HEARTBEAT_MS` ile ayarlayın. + - Canlı paketler artık ilerleme satırlarını stderr'ye yazar; böylece uzun sağlayıcı çağrıları Vitest konsol yakalaması sessizken bile görünür biçimde etkindir. + - `vitest.live.config.ts`, canlı çalıştırmalar sırasında sağlayıcı/Gateway ilerleme satırlarının hemen akması için Vitest konsol müdahalesini devre dışı bırakır. + - Doğrudan model Heartbeat'lerini `OPENCLAW_LIVE_HEARTBEAT_MS` ile ayarlayın. + - Gateway/sonda Heartbeat'lerini `OPENCLAW_LIVE_GATEWAY_HEARTBEAT_MS` ile ayarlayın. -## Hangi suite'i çalıştırmalıyım? +## Hangi paketi çalıştırmalıyım? Bu karar tablosunu kullanın: -- Düzenleme mantığı/testleri: `pnpm test` çalıştırın (çok değişiklik yaptıysanız `pnpm test:coverage` da çalıştırın) -- Gateway ağına / WS protokolüne / eşleştirmeye dokunuyorsanız: `pnpm test:e2e` ekleyin -- “botum kapalı” / sağlayıcıya özgü hatalar / araç çağırma hata ayıklaması: daraltılmış bir `pnpm test:live` çalıştırın +- Düzenleme mantığı/testleri: `pnpm test` komutunu çalıştırın (çok şey değiştirdiyseniz `pnpm test:coverage` da çalıştırın) +- Gateway ağı / WS protokolü / eşleştirme üzerinde değişiklik yapıyorsanız: `pnpm test:e2e` ekleyin +- “botum kapalı” / sağlayıcıya özgü hatalar / araç çağırma hata ayıklaması yapıyorsanız: daraltılmış bir `pnpm test:live` çalıştırın ## Canlı (ağa dokunan) testler Canlı model matrisi, CLI arka uç smoke testleri, ACP smoke testleri, Codex uygulama sunucusu -koşumu ve tüm medya sağlayıcısı canlı testleri (Deepgram, BytePlus, ComfyUI, görüntü, -müzik, video, medya koşumu) — ayrıca canlı çalıştırmalar için kimlik bilgisi yönetimi — için -bkz. [Test — canlı paketler](/tr/help/testing-live). +koşumu ve tüm medya sağlayıcı canlı testleri (Deepgram, BytePlus, ComfyUI, image, +music, video, media harness) ve canlı çalıştırmalar için kimlik bilgisi işleme hakkında bilgi için bkz. +[Testing — live suites](/tr/help/testing-live). ## Docker çalıştırıcıları (isteğe bağlı "Linux'ta çalışıyor" kontrolleri) Bu Docker çalıştırıcıları iki gruba ayrılır: -- Canlı model çalıştırıcıları: `test:docker:live-models` ve `test:docker:live-gateway`, repo Docker imajı içinde yalnızca eşleşen profil anahtarlı canlı dosyalarını (`src/agents/models.profiles.live.test.ts` ve `src/gateway/gateway-models.profiles.live.test.ts`) çalıştırır; yerel yapılandırma dizininizi ve çalışma alanınızı bağlar (ve bağlanmışsa `~/.profile` dosyasını kaynak olarak kullanır). Eşleşen yerel giriş noktaları `test:live:models-profiles` ve `test:live:gateway-profiles` şeklindedir. +- Canlı model çalıştırıcıları: `test:docker:live-models` ve `test:docker:live-gateway`, repo Docker imajı içinde yalnızca eşleşen profil anahtarlı canlı dosyalarını (`src/agents/models.profiles.live.test.ts` ve `src/gateway/gateway-models.profiles.live.test.ts`) çalıştırır; yerel yapılandırma dizininizi ve çalışma alanınızı bağlar (bağlanmışsa `~/.profile` dosyasını da kaynak alır). Eşleşen yerel giriş noktaları `test:live:models-profiles` ve `test:live:gateway-profiles` şeklindedir. - Docker canlı çalıştırıcıları varsayılan olarak daha küçük bir smoke sınırı kullanır; böylece tam bir Docker taraması pratik kalır: - `test:docker:live-models` varsayılan olarak `OPENCLAW_LIVE_MAX_MODELS=12` kullanır ve + `test:docker:live-models` varsayılan olarak `OPENCLAW_LIVE_MAX_MODELS=12` kullanır; ayrıca `test:docker:live-gateway` varsayılan olarak `OPENCLAW_LIVE_GATEWAY_SMOKE=1`, `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=8`, `OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=45000` ve - `OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=90000` kullanır. Daha büyük kapsamlı taramayı açıkça + `OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=90000` kullanır. Açıkça daha büyük ve kapsamlı taramayı istediğinizde bu env değişkenlerini geçersiz kılın. -- `test:docker:all`, canlı Docker imajını `test:docker:live-build` üzerinden bir kez derler, `scripts/package-openclaw-for-docker.mjs` ile OpenClaw'ı bir kez npm tarball olarak paketler, ardından iki `scripts/e2e/Dockerfile` imajı derler/yeniden kullanır. Yalın imaj, kurulum/güncelleme/Plugin bağımlılığı kulvarları için yalnızca Node/Git çalıştırıcısıdır; bu kulvarlar önceden derlenmiş tarball'u bağlar. İşlevsel imaj, derlenmiş uygulama işlevselliği kulvarları için aynı tarball'u `/app` içine kurar. Docker kulvar 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çilen planı yürütür. Toplu çalışma ağırlıklı bir yerel zamanlayıcı kullanır: `OPENCLAW_DOCKER_ALL_PARALLELISM` işlem yuvalarını kontrol ederken, kaynak sınırları ağır canlı, npm-kurulum ve çok hizmetli kulvarların hepsinin aynı anda başlamasını engeller. Tek bir kulvar etkin sınırlardan daha ağırsa, zamanlayıcı havuz boşken yine de onu başlatabilir ve kapasite yeniden kullanılabilir olana kadar tek başına çalışır durumda tutar. Varsayılanlar 10 yuva, `OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9`, `OPENCLAW_DOCKER_ALL_NPM_LIMIT=10` ve `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7` şeklindedir; `OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT` veya `OPENCLAW_DOCKER_ALL_DOCKER_LIMIT` değerlerini yalnızca Docker ana makinesinde daha fazla pay olduğunda ayarlayın. Çalıştırıcı varsayılan olarak bir Docker ön kontrolü yapar, eski OpenClaw E2E konteynerlerini kaldırır, her 30 saniyede bir durumu yazdırır, başarılı kulvar sürelerini `.artifacts/docker-tests/lane-timings.json` içinde saklar ve sonraki çalıştırmalarda daha uzun kulvarları önce başlatmak için bu süreleri kullanır. Docker derlemeden veya çalıştırmadan ağırlıklı kulvar manifestini yazdırmak için `OPENCLAW_DOCKER_ALL_DRY_RUN=1` kullanın ya da seçilen kulvarlar, paket/imaj ihtiyaçları ve kimlik bilgileri için CI planını yazdırmak üzere `node scripts/test-docker-all.mjs --plan-json` çalıştırın. -- `Package Acceptance`, "bu kurulabilir tarball bir ürün olarak çalışıyor mu?" sorusu için GitHub yerel paket kapısıdır. `source=npm`, `source=ref`, `source=url` veya `source=artifact` üzerinden bir aday paketi çözer, onu `package-under-test` olarak yükler, ardından seçilen ref'i yeniden paketlemek yerine yeniden kullanılabilir Docker E2E kulvarlarını tam olarak bu tarball'a karşı çalıştırır. `workflow_ref` güvenilen iş akışı/koşum betiklerini seçerken, `package_ref` `source=ref` olduğunda paketlenecek kaynak commit/branch/tag değerini seçer; bu, güncel kabul mantığının daha eski güvenilir commit'leri doğrulamasını sağlar. Profiller genişliğe göre sıralanır: `smoke` hızlı kurulum/kanal/agent artı Gateway/yapılandırmadır, `package` paket/güncelleme/Plugin sözleşmesidir ve çoğu Parallels paket/güncelleme kapsamı için varsayılan yerel ikamedir, `product` MCP kanalları, cron/subagent temizliği, OpenAI web araması ve OpenWebUI ekler, `full` ise OpenWebUI ile yayın yolu Docker parçalarını çalıştırır. Yayın doğrulaması özel bir paket deltası (`bundled-channel-deps-compat plugins-offline`) artı Telegram paket QA çalıştırır; çünkü yayın yolu Docker parçaları çakışan paket/güncelleme/Plugin kulvarlarını zaten kapsar. Artefaktlardan üretilen hedefli GitHub Docker yeniden çalıştırma komutları, varsa önceki paket artefaktını ve hazırlanmış imaj girdilerini içerir; böylece başarısız kulvarlar paketi ve imajları yeniden derlemekten kaçınabilir. -- Derleme ve yayın kontrolleri, tsdown sonrasında `scripts/check-cli-bootstrap-imports.mjs` çalıştırır. Koruma, `dist/entry.js` ve `dist/cli/run-main.js` üzerinden statik derlenmiş grafiği dolaşır ve komut dağıtımından önceki başlangıç aşaması Commander, prompt UI, undici veya günlükleme gibi paket bağımlılıklarını komut dağıtımından önce içe aktarırsa başarısız olur; ayrıca paketlenmiş Gateway çalıştırma parçasını bütçe altında tutar ve bilinen soğuk Gateway yollarının statik içe aktarımlarını reddeder. Paketlenmiş CLI smoke ayrıca kök yardımını, onboarding yardımını, doctor yardımını, durumu, yapılandırma şemasını ve bir model listesi komutunu kapsar. -- Package Acceptance eski uyumluluğu `2026.4.25` ile sınırlıdır (`2026.4.25-beta.*` dahil). Bu sınıra kadar koşum yalnızca gönderilmiş paket metadata boşluklarını tolere eder: atlanmış özel QA envanter girdileri, eksik `gateway install --wrapper`, tarball'dan türetilmiş git fixture içinde eksik yama dosyaları, eksik kalıcı `update.channel`, eski Plugin kurulum kaydı konumları, eksik marketplace kurulum kaydı kalıcılığı ve `plugins update` sırasında yapılandırma metadata migrasyonu. `2026.4.25` sonrasındaki paketlerde bu yollar katı başarısızlıktır. -- Konteyner smoke çalıştırıcıları: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:npm-onboard-channel-agent`, `test:docker:update-channel-switch`, `test:docker:session-runtime-context`, `test:docker:agents-delete-shared-workspace`, `test:docker:gateway-network`, `test:docker:browser-cdp-snapshot`, `test:docker:mcp-channels`, `test:docker:pi-bundle-mcp-tools`, `test:docker:cron-mcp-cleanup`, `test:docker:plugins`, `test:docker:plugin-update` ve `test:docker:config-reload` bir veya daha fazla gerçek konteyner başlatır ve daha üst düzey entegrasyon yollarını doğrular. +- `test:docker:all`, canlı Docker imajını `test:docker:live-build` aracılığıyla bir kez oluşturur, OpenClaw'ı `scripts/package-openclaw-for-docker.mjs` üzerinden bir npm tarball olarak bir kez paketler, ardından iki `scripts/e2e/Dockerfile` imajı oluşturur/yeniden kullanır. Yalın imaj, install/update/plugin-dependency hatları için yalnızca Node/Git çalıştırıcısıdır; bu hatlar önceden oluşturulmuş tarball'ı bağlar. İşlevsel imaj, derlenmiş uygulama işlevselliği hatları için aynı tarball'ı `/app` içine kurar. Docker hat tanımları `scripts/lib/docker-e2e-scenarios.mjs` içinde bulunur; planlayıcı mantığı `scripts/lib/docker-e2e-plan.mjs` içindedir; `scripts/test-docker-all.mjs` seçilen planı yürütür. Toplam çalıştırma ağırlıklı bir yerel zamanlayıcı kullanır: `OPENCLAW_DOCKER_ALL_PARALLELISM` işlem yuvalarını denetlerken, kaynak sınırları ağır canlı, npm-install ve çok hizmetli hatların hepsinin aynı anda başlamasını engeller. Tek bir hat etkin sınırlardan daha ağırsa, zamanlayıcı havuz boşken yine de onu başlatabilir ve kapasite yeniden kullanılabilir olana kadar tek başına çalıştırmaya devam eder. Varsayılanlar 10 yuva, `OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9`, `OPENCLAW_DOCKER_ALL_NPM_LIMIT=10` ve `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7` şeklindedir; `OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT` veya `OPENCLAW_DOCKER_ALL_DOCKER_LIMIT` değerlerini yalnızca Docker ana makinesinde daha fazla kapasite varsa ayarlayın. Çalıştırıcı varsayılan olarak bir Docker ön kontrolü yapar, eski OpenClaw E2E container'larını kaldırır, her 30 saniyede bir durum yazdırır, başarılı hat sürelerini `.artifacts/docker-tests/lane-timings.json` içinde saklar ve sonraki çalıştırmalarda daha uzun hatları önce başlatmak için bu süreleri kullanır. Docker oluşturmadan veya çalıştırmadan ağırlıklı hat manifestini yazdırmak için `OPENCLAW_DOCKER_ALL_DRY_RUN=1` kullanın ya da seçilen hatlar, paket/imaj gereksinimleri ve kimlik bilgileri için CI planını yazdırmak üzere `node scripts/test-docker-all.mjs --plan-json` çalıştırın. +- `Package Acceptance`, "bu kurulabilir tarball ürün olarak çalışıyor mu?" sorusu için GitHub yerel paket kapısıdır. `source=npm`, `source=ref`, `source=url` veya `source=artifact` içinden bir aday paket çözümler, bunu `package-under-test` olarak yükler, ardından yeniden kullanılabilir Docker E2E hatlarını seçilen ref'i yeniden paketlemek yerine tam olarak bu tarball'a karşı çalıştırır. `workflow_ref` güvenilir workflow/koşum betiklerini seçerken, `package_ref` `source=ref` olduğunda paketlenecek kaynak commit/branch/tag değerini seçer; bu, güncel kabul mantığının eski güvenilir commit'leri doğrulamasını sağlar. Profiller kapsam genişliğine göre sıralanır: `smoke` hızlı kurulum/kanal/agent artı Gateway/config içerir, `package` paket/update/Plugin sözleşmesini, anahtarsız upgrade-survivor fixture'ını ve çoğu Parallels package/update kapsamı için varsayılan yerel değişimi içerir, `product` MCP kanalları, cron/subagent temizliği, OpenAI web araması ve OpenWebUI ekler, `full` ise release-path Docker parçalarını OpenWebUI ile çalıştırır. Yayın doğrulaması, release-path Docker parçaları zaten örtüşen package/update/Plugin hatlarını kapsadığı için özel bir paket deltası (`bundled-channel-deps-compat plugins-offline`) artı Telegram paket QA çalıştırır. Artifact'lerden üretilen hedefli GitHub Docker yeniden çalıştırma komutları, varsa önceki paket artifact'ini ve hazırlanmış imaj girdilerini içerir; böylece başarısız hatlar paketi ve imajları yeniden oluşturmaktan kaçınabilir. +- Derleme ve yayın kontrolleri, tsdown sonrasında `scripts/check-cli-bootstrap-imports.mjs` çalıştırır. Koruma, statik derlenmiş grafiği `dist/entry.js` ve `dist/cli/run-main.js` üzerinden yürür ve komut yönlendirmesinden önce başlatma öncesi import'lar Commander, prompt UI, undici veya logging gibi paket bağımlılıklarını içe aktarırsa başarısız olur; ayrıca paketlenmiş Gateway çalıştırma parçasını bütçe altında tutar ve bilinen soğuk Gateway yollarının statik import'larını reddeder. Paketlenmiş CLI smoke testi ayrıca kök yardımını, onboard yardımını, doctor yardımını, durumu, yapılandırma şemasını ve bir model-list komutunu kapsar. +- Package Acceptance eski uyumluluğu `2026.4.25` ile sınırlandırılmıştır (`2026.4.25-beta.*` dahil). Bu son tarihe kadar koşum yalnızca gönderilmiş paket metadata boşluklarını tolere eder: atlanan özel QA envanteri girdileri, eksik `gateway install --wrapper`, tarball'dan türetilmiş git fixture'ında eksik patch dosyaları, eksik kalıcı `update.channel`, eski Plugin install-record konumları, eksik marketplace install-record kalıcılığı ve `plugins update` sırasında yapılandırma metadata migration'ı. `2026.4.25` sonrasındaki paketler için bu yollar kesin hatadır. +- Container smoke çalıştırıcıları: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:npm-onboard-channel-agent`, `test:docker:update-channel-switch`, `test:docker:upgrade-survivor`, `test:docker:session-runtime-context`, `test:docker:agents-delete-shared-workspace`, `test:docker:gateway-network`, `test:docker:browser-cdp-snapshot`, `test:docker:mcp-channels`, `test:docker:pi-bundle-mcp-tools`, `test:docker:cron-mcp-cleanup`, `test:docker:plugins`, `test:docker:plugin-update` ve `test:docker:config-reload` bir veya daha fazla gerçek container başlatır ve daha üst düzey entegrasyon yollarını doğrular. -Canlı model Docker çalıştırıcıları ayrıca yalnızca gereken CLI auth ana dizinlerini (veya çalışma daraltılmamışsa desteklenenlerin tamamını) bind-mount eder, ardından harici CLI OAuth'un ana makine auth deposunu değiştirmeden token yenileyebilmesi için bunları çalıştırmadan önce konteyner ana dizinine kopyalar: +Canlı model Docker çalıştırıcıları ayrıca yalnızca gereken CLI auth home'larını (veya çalıştırma daraltılmamışsa desteklenenlerin tümünü) bind-mount eder, ardından çalıştırmadan önce bunları container home'una kopyalar; böylece harici CLI OAuth token'ları ana makine auth deposunu değiştirmeden yenileyebilir: - Doğrudan modeller: `pnpm test:docker:live-models` (betik: `scripts/test-live-models-docker.sh`) -- ACP bind smoke: `pnpm test:docker:live-acp-bind` (betik: `scripts/test-live-acp-bind-docker.sh`; varsayılan olarak Claude, Codex ve Gemini'yi kapsar; Droid/OpenCode kapsamı için `pnpm test:docker:live-acp-bind:droid` ve `pnpm test:docker:live-acp-bind:opencode` ile sıkı kapsam sağlar) -- CLI backend smoke: `pnpm test:docker:live-cli-backend` (betik: `scripts/test-live-cli-backend-docker.sh`) -- Codex app-server harness smoke: `pnpm test:docker:live-codex-harness` (betik: `scripts/test-live-codex-harness-docker.sh`) -- Gateway + geliştirme aracısı: `pnpm test:docker:live-gateway` (betik: `scripts/test-live-gateway-models-docker.sh`) -- Gözlemlenebilirlik smoke: `pnpm qa:otel:smoke` özel bir QA kaynak-checkout hattıdır. npm tarball QA Lab'ı dışarıda bıraktığı için kasıtlı olarak paket Docker sürüm hatlarının parçası değildir. -- Open WebUI canlı smoke: `pnpm test:docker:openwebui` (betik: `scripts/e2e/openwebui-docker.sh`) -- Başlatma sihirbazı (TTY, tam scaffolding): `pnpm test:docker:onboard` (betik: `scripts/e2e/onboard-docker.sh`) -- Npm tarball başlatma/kanal/aracı smoke: `pnpm test:docker:npm-onboard-channel-agent`, paketlenmiş OpenClaw tarball'ını Docker içinde global olarak kurar, env-ref başlatma üzerinden OpenAI'yi ve varsayılan olarak Telegram'ı yapılandırır, doctor onarımlarının etkinleştirilmiş Plugin çalışma zamanı bağımlılıklarını doğrular ve bir taklit OpenAI aracı turu çalıştırır. Önceden oluşturulmuş bir tarball'ı `OPENCLAW_CURRENT_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile yeniden kullanın, ana makine yeniden derlemesini `OPENCLAW_NPM_ONBOARD_HOST_BUILD=0` ile atlayın veya kanalı `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` ile değiştirin. -- Güncelleme kanalı değiştirme smoke: `pnpm test:docker:update-channel-switch`, paketlenmiş OpenClaw tarball'ını Docker içinde global olarak kurar, paket `stable` kanalından git `dev` kanalına geçer, kalıcı kanalın ve Plugin güncelleme sonrası çalışmanın doğrulandığını doğrular, ardından paket `stable` kanalına geri döner ve güncelleme durumunu denetler. -- Oturum çalışma zamanı bağlamı smoke: `pnpm test:docker:session-runtime-context`, gizli çalışma zamanı bağlamı transkript kalıcılığını ve etkilenen yinelenmiş prompt-yeniden-yazma dallarının doctor onarımını doğrular. -- Bun global kurulum smoke: `bash scripts/e2e/bun-global-install-smoke.sh`, geçerli ağacı paketler, yalıtılmış bir home içinde `bun install -g` ile kurar ve `openclaw infer image providers --json` komutunun takılmak yerine paketlenmiş görüntü sağlayıcılarını döndürdüğünü doğrular. Önceden oluşturulmuş bir tarball'ı `OPENCLAW_BUN_GLOBAL_SMOKE_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile yeniden kullanın, ana makine derlemesini `OPENCLAW_BUN_GLOBAL_SMOKE_HOST_BUILD=0` ile atlayın veya derlenmiş bir Docker görüntüsünden `OPENCLAW_BUN_GLOBAL_SMOKE_DIST_IMAGE=openclaw-dockerfile-smoke:local` ile `dist/` kopyalayın. -- Kurucu Docker smoke: `bash scripts/test-install-sh-docker.sh`, root, update ve direct-npm container'ları arasında tek bir npm cache paylaşır. Update smoke, aday tarball'a yükseltmeden önce kararlı temel olarak varsayılan şekilde npm `latest` kullanır. Yerelde `OPENCLAW_INSTALL_SMOKE_UPDATE_BASELINE=2026.4.22` ile veya GitHub'da Install Smoke iş akışının `update_baseline_version` girdisiyle geçersiz kılın. Root olmayan kurucu denetimleri, root'a ait cache girdilerinin kullanıcı-yerel kurulum davranışını maskelememesi için yalıtılmış bir npm cache tutar. Yerel yeniden çalıştırmalarda root/update/direct-npm cache'i yeniden kullanmak için `OPENCLAW_INSTALL_SMOKE_NPM_CACHE_DIR=/path/to/cache` ayarlayın. -- Install Smoke CI, yinelenen direct-npm global güncellemeyi `OPENCLAW_INSTALL_SMOKE_SKIP_NPM_GLOBAL=1` ile atlar; doğrudan `npm install -g` kapsamı gerektiğinde betiği yerelde bu env olmadan çalıştırın. -- Agents paylaşılan workspace CLI silme smoke: `pnpm test:docker:agents-delete-shared-workspace` (betik: `scripts/e2e/agents-delete-shared-workspace-docker.sh`) varsayılan olarak kök Dockerfile görüntüsünü derler, yalıtılmış bir container home içinde tek workspace'e sahip iki aracı tohumlar, `agents delete --json` çalıştırır ve geçerli JSON ile korunmuş workspace davranışını doğrular. Install-smoke görüntüsünü `OPENCLAW_AGENTS_DELETE_SHARED_WORKSPACE_E2E_IMAGE=openclaw-dockerfile-smoke:local OPENCLAW_AGENTS_DELETE_SHARED_WORKSPACE_E2E_SKIP_BUILD=1` ile yeniden kullanın. +- ACP bağlama duman testi: `pnpm test:docker:live-acp-bind` (betik: `scripts/test-live-acp-bind-docker.sh`; varsayılan olarak Claude, Codex ve Gemini’yi kapsar, Droid/OpenCode için sıkı kapsam `pnpm test:docker:live-acp-bind:droid` ve `pnpm test:docker:live-acp-bind:opencode` ile sağlanır) +- CLI arka uç duman testi: `pnpm test:docker:live-cli-backend` (betik: `scripts/test-live-cli-backend-docker.sh`) +- Codex uygulama-sunucusu harness duman testi: `pnpm test:docker:live-codex-harness` (betik: `scripts/test-live-codex-harness-docker.sh`) +- Gateway + geliştirme ajanı: `pnpm test:docker:live-gateway` (betik: `scripts/test-live-gateway-models-docker.sh`) +- Gözlemlenebilirlik duman testi: `pnpm qa:otel:smoke`, özel bir QA kaynak-checkout hattıdır. npm tarball’ı QA Lab’i içermediği için paket Docker yayın hatlarının bilerek bir parçası değildir. +- Open WebUI canlı duman testi: `pnpm test:docker:openwebui` (betik: `scripts/e2e/openwebui-docker.sh`) +- Onboarding sihirbazı (TTY, tam scaffolding): `pnpm test:docker:onboard` (betik: `scripts/e2e/onboard-docker.sh`) +- Npm tarball onboarding/kanal/ajan duman testi: `pnpm test:docker:npm-onboard-channel-agent`, paketlenmiş OpenClaw tarball’ını Docker içinde global olarak kurar, env-ref onboarding üzerinden OpenAI’ı ve varsayılan olarak Telegram’ı yapılandırır, doctor onarımlarının etkinleştirilmiş plugin çalışma zamanı bağımlılıklarını etkinleştirdiğini doğrular ve bir taklit OpenAI ajan turu çalıştırır. Önceden oluşturulmuş bir tarball’ı `OPENCLAW_CURRENT_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile yeniden kullanın, ana makine yeniden derlemesini `OPENCLAW_NPM_ONBOARD_HOST_BUILD=0` ile atlayın veya kanalı `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` ile değiştirin. +- Güncelleme kanalı değiştirme duman testi: `pnpm test:docker:update-channel-switch`, paketlenmiş OpenClaw tarball’ını Docker içinde global olarak kurar, paket `stable` kanalından git `dev` kanalına geçer, kalıcı kanalın ve plugin güncelleme sonrası çalışmasının doğrulandığını kontrol eder, ardından tekrar paket `stable` kanalına döner ve güncelleme durumunu denetler. +- Yükseltme sağ kalım duman testi: `pnpm test:docker:upgrade-survivor`, paketlenmiş OpenClaw tarball’ını ajanlar, kanal yapılandırması, plugin izin listeleri, eski plugin çalışma zamanı bağımlılıkları durumu ve mevcut çalışma alanı/oturum dosyaları bulunan kirli bir eski-kullanıcı fixture’ının üzerine kurar. 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 yapılandırma/durum korunmasını ve başlangıç/durum bütçelerini denetler. +- Oturum çalışma zamanı bağlamı duman testi: `pnpm test:docker:session-runtime-context`, gizli çalışma zamanı bağlamı transcript kalıcılığını ve etkilenen yinelenmiş prompt-rewrite dallarının doctor ile onarılmasını doğrular. +- Bun global kurulum duman testi: `bash scripts/e2e/bun-global-install-smoke.sh`, mevcut ağacı paketler, yalıtılmış bir home içinde `bun install -g` ile kurar ve `openclaw infer image providers --json` komutunun takılmak yerine paketlenmiş görüntü sağlayıcılarını döndürdüğünü doğrular. Önceden oluşturulmuş bir tarball’ı `OPENCLAW_BUN_GLOBAL_SMOKE_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile yeniden kullanın, ana makine derlemesini `OPENCLAW_BUN_GLOBAL_SMOKE_HOST_BUILD=0` ile atlayın veya oluşturulmuş bir Docker imajından `dist/` dizinini `OPENCLAW_BUN_GLOBAL_SMOKE_DIST_IMAGE=openclaw-dockerfile-smoke:local` ile kopyalayın. +- Yükleyici Docker duman testi: `bash scripts/test-install-sh-docker.sh`, root, güncelleme ve doğrudan-npm container’ları arasında tek bir npm önbelleği paylaşır. Güncelleme duman testi, aday tarball’a yükseltmeden önce kararlı taban çizgisi olarak varsayılan şekilde npm `latest` kullanır. Yerelde `OPENCLAW_INSTALL_SMOKE_UPDATE_BASELINE=2026.4.22` ile veya GitHub’daki Install Smoke iş akışının `update_baseline_version` girdisiyle geçersiz kılın. Root olmayan yükleyici kontrolleri, root tarafından sahiplenilmiş önbellek girdilerinin kullanıcı-yerel kurulum davranışını maskelememesi için yalıtılmış bir npm önbelleği kullanır. Yerel yeniden çalıştırmalarda root/güncelleme/doğrudan-npm önbelleğini yeniden kullanmak için `OPENCLAW_INSTALL_SMOKE_NPM_CACHE_DIR=/path/to/cache` ayarlayın. +- Install Smoke CI, yinelenen doğrudan-npm global güncellemeyi `OPENCLAW_INSTALL_SMOKE_SKIP_NPM_GLOBAL=1` ile atlar; doğrudan `npm install -g` kapsamı gerektiğinde betiği yerelde bu env olmadan çalıştırın. +- Ajanlar paylaşılan çalışma alanını siler CLI duman testi: `pnpm test:docker:agents-delete-shared-workspace` (betik: `scripts/e2e/agents-delete-shared-workspace-docker.sh`) varsayılan olarak kök Dockerfile imajını derler, yalıtılmış bir container home içinde tek bir çalışma alanına sahip iki ajanı seed eder, `agents delete --json` çalıştırır ve geçerli JSON ile korunmuş çalışma alanı davranışını doğrular. Install-smoke imajını `OPENCLAW_AGENTS_DELETE_SHARED_WORKSPACE_E2E_IMAGE=openclaw-dockerfile-smoke:local OPENCLAW_AGENTS_DELETE_SHARED_WORKSPACE_E2E_SKIP_BUILD=1` ile yeniden kullanın. - Gateway ağ iletişimi (iki container, WS auth + health): `pnpm test:docker:gateway-network` (betik: `scripts/e2e/gateway-network-docker.sh`) -- Tarayıcı CDP snapshot smoke: `pnpm test:docker:browser-cdp-snapshot` (betik: `scripts/e2e/browser-cdp-snapshot-docker.sh`) kaynak E2E görüntüsünü ve bir Chromium katmanını derler, Chromium'u ham CDP ile 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ı kapsadığını doğrular. -- OpenAI Responses web_search minimal reasoning regresyonu: `pnpm test:docker:openai-web-search-minimal` (betik: `scripts/e2e/openai-web-search-minimal-docker.sh`) Gateway üzerinden taklit bir OpenAI sunucusu çalıştırır, `web_search` işleminin `reasoning.effort` değerini `minimal` değerinden `low` değerine yükselttiğini doğrular, ardından sağlayıcı şema reddini zorlar ve ham ayrıntının Gateway günlüklerinde göründüğünü denetler. -- MCP kanal köprüsü (tohumlanmış Gateway + stdio köprüsü + ham Claude notification-frame smoke): `pnpm test:docker:mcp-channels` (betik: `scripts/e2e/mcp-channels-docker.sh`) -- Pi paket MCP araçları (gerçek stdio MCP sunucusu + gömülü Pi profili allow/deny smoke): `pnpm test:docker:pi-bundle-mcp-tools` (betik: `scripts/e2e/pi-bundle-mcp-tools-docker.sh`) +- Tarayıcı CDP snapshot duman testi: `pnpm test:docker:browser-cdp-snapshot` (betik: `scripts/e2e/browser-cdp-snapshot-docker.sh`) kaynak E2E imajını ve bir Chromium katmanını derler, Chromium’u ham CDP ile başlatır, `browser doctor --deep` çalıştırır ve CDP rol snapshot’larının bağlantı URL’lerini, cursor ile yükseltilmiş tıklanabilirleri, iframe refs’lerini ve frame metadatasını kapsadığını doğrular. +- OpenAI Responses `web_search` minimal reasoning regresyonu: `pnpm test:docker:openai-web-search-minimal` (betik: `scripts/e2e/openai-web-search-minimal-docker.sh`) taklit bir OpenAI sunucusunu Gateway üzerinden çalıştırır, `web_search` öğesinin `reasoning.effort` değerini `minimal` seviyesinden `low` seviyesine yükselttiğini doğrular, ardından sağlayıcı şemasını reddetmeye zorlar ve ham detayın Gateway günlüklerinde göründüğünü denetler. +- MCP kanal köprüsü (seed edilmiş Gateway + stdio köprüsü + ham Claude notification-frame duman testi): `pnpm test:docker:mcp-channels` (betik: `scripts/e2e/mcp-channels-docker.sh`) +- Pi paket MCP araçları (gerçek stdio MCP sunucusu + gömülü Pi profili izin/reddet duman testi): `pnpm test:docker:pi-bundle-mcp-tools` (betik: `scripts/e2e/pi-bundle-mcp-tools-docker.sh`) - Cron/subagent MCP temizliği (gerçek Gateway + yalıtılmış cron ve tek seferlik subagent çalıştırmalarından sonra stdio MCP child kapatma): `pnpm test:docker:cron-mcp-cleanup` (betik: `scripts/e2e/cron-mcp-cleanup-docker.sh`) -- Pluginler (kurulum smoke, ClawHub kitchen-sink kurma/kaldırma, marketplace güncellemeleri ve Claude-bundle etkinleştirme/inceleme): `pnpm test:docker:plugins` (betik: `scripts/e2e/plugins-docker.sh`) +- Plugins (kurulum duman testi, ClawHub kitchen-sink kurulum/kaldırma, marketplace güncellemeleri ve Claude-bundle etkinleştirme/inceleme): `pnpm test:docker:plugins` (betik: `scripts/e2e/plugins-docker.sh`) ClawHub bloğunu atlamak için `OPENCLAW_PLUGINS_E2E_CLAWHUB=0` ayarlayın veya varsayılan kitchen-sink paket/çalışma zamanı çiftini `OPENCLAW_PLUGINS_E2E_CLAWHUB_SPEC` ve `OPENCLAW_PLUGINS_E2E_CLAWHUB_ID` ile geçersiz kılın. `OPENCLAW_CLAWHUB_URL`/`CLAWHUB_URL` olmadan test, hermetik bir yerel ClawHub fixture sunucusu kullanır. -- Plugin güncelleme değişmemiş smoke: `pnpm test:docker:plugin-update` (betik: `scripts/e2e/plugin-update-unchanged-docker.sh`) -- Config reload metadata smoke: `pnpm test:docker:config-reload` (betik: `scripts/e2e/config-reload-source-docker.sh`) -- Paketlenmiş Plugin çalışma zamanı bağımlılıkları: `pnpm test:docker:bundled-channel-deps` varsayılan olarak küçük bir Docker runner görüntüsü derler, OpenClaw'ı ana makinede bir kez derleyip paketler, ardından bu tarball'ı her Linux kurulum senaryosuna mount eder. Görüntüyü `OPENCLAW_SKIP_DOCKER_BUILD=1` ile yeniden kullanın, yeni bir yerel derlemeden sonra ana makine yeniden derlemesini `OPENCLAW_BUNDLED_CHANNEL_HOST_BUILD=0` ile atlayın veya mevcut bir tarball'ı `OPENCLAW_CURRENT_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile gösterin. Tam Docker agregası ve sürüm-yolu paketlenmiş-kanal parçaları bu tarball'ı bir kez önceden paketler, ardından paketlenmiş kanal denetimlerini Telegram, Discord, Slack, Feishu, memory-lancedb ve ACPX için ayrı güncelleme hatları dahil olmak üzere bağımsız hatlara böler. Sürüm parçaları kanal smoke'larını, güncelleme hedeflerini ve kurulum/çalışma zamanı sözleşmelerini `bundled-channels-core`, `bundled-channels-update-a`, `bundled-channels-update-b` ve `bundled-channels-contracts` olarak ayırır; agrega `bundled-channels` parçası manuel yeniden çalıştırmalar için kullanılabilir kalır. Sürüm iş akışı ayrıca sağlayıcı kurucu parçalarını ve paketlenmiş Plugin kurma/kaldırma parçalarını ayırır; eski `package-update`, `plugins-runtime` ve `plugins-integrations` parçaları manuel yeniden çalıştırmalar için agrega alias'ları olarak kalır. Paketlenmiş hattı doğrudan çalıştırırken kanal matrisini daraltmak için `OPENCLAW_BUNDLED_CHANNELS=telegram,slack` kullanın veya güncelleme senaryosunu daraltmak için `OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS=telegram,acpx` kullanın. Senaryo başına Docker çalıştırmaları varsayılan olarak `OPENCLAW_BUNDLED_CHANNEL_DOCKER_RUN_TIMEOUT=900s` kullanır; çok hedefli güncelleme senaryosu varsayılan olarak `OPENCLAW_BUNDLED_CHANNEL_UPDATE_DOCKER_RUN_TIMEOUT=2400s` kullanır. Hat ayrıca `channels..enabled=false` ve `plugins.entries..enabled=false` değerlerinin doctor/çalışma zamanı-bağımlılığı onarımını bastırdığını doğrular. -- Yineleme sırasında alakasız senaryoları devre dışı bırakarak paketlenmiş Plugin çalışma zamanı bağımlılıklarını daraltın, örneğin: +- Plugin güncelleme değişmedi duman testi: `pnpm test:docker:plugin-update` (betik: `scripts/e2e/plugin-update-unchanged-docker.sh`) +- Yapılandırma yeniden yükleme metadata duman testi: `pnpm test:docker:config-reload` (betik: `scripts/e2e/config-reload-source-docker.sh`) +- Paketlenmiş plugin çalışma zamanı bağımlılıkları: `pnpm test:docker:bundled-channel-deps` varsayılan olarak küçük bir Docker runner imajı derler, OpenClaw’ı ana makinede bir kez derleyip paketler ve ardından bu tarball’ı her Linux kurulum senaryosuna mount eder. İmajı `OPENCLAW_SKIP_DOCKER_BUILD=1` ile yeniden kullanın, yeni bir yerel derlemeden sonra ana makine yeniden derlemesini `OPENCLAW_BUNDLED_CHANNEL_HOST_BUILD=0` ile atlayın veya `OPENCLAW_CURRENT_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile mevcut bir tarball’a işaret edin. Tam Docker toplamı ve yayın-yolu paketlenmiş-kanal parçaları bu tarball’ı bir kez önceden paketler, ardından paketlenmiş kanal kontrollerini Telegram, Discord, Slack, Feishu, memory-lancedb ve ACPX için ayrı güncelleme hatları dahil bağımsız hatlara böler. Yayın parçaları kanal duman testlerini, güncelleme hedeflerini ve kurulum/çalışma zamanı sözleşmelerini `bundled-channels-core`, `bundled-channels-update-a`, `bundled-channels-update-b` ve `bundled-channels-contracts` olarak böler; toplam `bundled-channels` parçası manuel yeniden çalıştırmalar için kullanılabilir kalır. Yayın iş akışı ayrıca sağlayıcı yükleyici parçalarını ve paketlenmiş plugin kurulum/kaldırma parçalarını böler; eski `package-update`, `plugins-runtime` ve `plugins-integrations` parçaları manuel yeniden çalıştırmalar için toplam alias’lar olarak kalır. Paketlenmiş hattı doğrudan çalıştırırken kanal matrisini daraltmak için `OPENCLAW_BUNDLED_CHANNELS=telegram,slack` veya güncelleme senaryosunu daraltmak için `OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS=telegram,acpx` kullanın. Senaryo başına Docker çalıştırmaları varsayılan olarak `OPENCLAW_BUNDLED_CHANNEL_DOCKER_RUN_TIMEOUT=900s` kullanır; çok hedefli güncelleme senaryosu varsayılan olarak `OPENCLAW_BUNDLED_CHANNEL_UPDATE_DOCKER_RUN_TIMEOUT=2400s` kullanır. Hat ayrıca `channels..enabled=false` ve `plugins.entries..enabled=false` değerlerinin doctor/çalışma zamanı bağımlılığı onarımını bastırdığını doğrular. +- İlgisiz senaryoları devre dışı bırakarak yineleme sırasında paketlenmiş plugin çalışma zamanı bağımlılıklarını daraltın, örneğin: `OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=0 pnpm test:docker:bundled-channel-deps`. -Paylaşılan işlevsel görüntüyü elle önceden derlemek ve yeniden kullanmak için: +Paylaşılan işlevsel imajı manuel olarak önceden derleyip yeniden kullanmak için: ```bash OPENCLAW_DOCKER_E2E_IMAGE=openclaw-docker-e2e-functional:local pnpm test:docker:e2e-build OPENCLAW_DOCKER_E2E_IMAGE=openclaw-docker-e2e-functional:local OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:mcp-channels ``` -`OPENCLAW_GATEWAY_NETWORK_E2E_IMAGE` gibi suite'e özgü görüntü geçersiz kılmaları ayarlandığında yine önceliklidir. `OPENCLAW_SKIP_DOCKER_BUILD=1` uzak bir paylaşılan görüntüyü gösterdiğinde, betikler görüntü zaten yerelde değilse onu çeker. QR ve kurucu Docker testleri kendi Dockerfile'larını korur; çünkü paylaşılan derlenmiş-uygulama çalışma zamanı yerine paket/kurulum davranışını doğrularlar. +`OPENCLAW_GATEWAY_NETWORK_E2E_IMAGE` gibi suite’e özgü imaj geçersiz kılmaları ayarlandığında yine önceliklidir. `OPENCLAW_SKIP_DOCKER_BUILD=1` uzak bir paylaşılan imaja işaret ettiğinde, betikler imaj zaten yerel değilse onu çeker. QR ve yükleyici Docker testleri, paylaşılan derlenmiş-uygulama çalışma zamanı yerine paket/kurulum davranışını doğruladıkları için kendi Dockerfile’larını korur. -Canlı-model Docker runner'ları ayrıca geçerli checkout'ı salt okunur bind-mount eder ve -container içinde geçici bir workdir'e stage eder. Bu, tam yerel source/config'inize -karşı Vitest çalıştırmaya devam ederken çalışma zamanı görüntüsünü küçük tutar. -Stage adımı, `.pnpm-store`, `.worktrees`, `__openclaw_vitest__` ve app-local `.build` veya -Gradle çıktı dizinleri gibi büyük yerel-özel cache'leri ve uygulama derleme çıktılarını atlar; -böylece Docker canlı çalıştırmaları makineye özgü artifact'leri kopyalamak için dakikalar harcamaz. -Ayrıca `OPENCLAW_SKIP_CHANNELS=1` ayarlarlar; böylece Gateway canlı prob'ları container içinde -gerçek Telegram/Discord/vb. kanal worker'larını başlatmaz. -`test:docker:live-models` yine de `pnpm test:live` çalıştırır; bu yüzden Docker hattından -Gateway canlı kapsamını daraltmanız veya dışlamanız gerektiğinde `OPENCLAW_LIVE_GATEWAY_*` -değerlerini de geçirin. -`test:docker:openwebui` daha üst düzey bir uyumluluk smoke'udur: OpenAI uyumlu HTTP -endpoint'leri etkinleştirilmiş bir OpenClaw Gateway container'ı başlatır, bu Gateway'e karşı -sabitlenmiş bir Open WebUI container'ı başlatır, Open WebUI üzerinden oturum açar, -`/api/models` yolunun `openclaw/default` sunduğunu doğrular, ardından Open WebUI'nin -`/api/chat/completions` proxy'si üzerinden gerçek bir sohbet isteği gönderir. -İlk çalıştırma belirgin şekilde daha yavaş olabilir; çünkü Docker'ın Open WebUI görüntüsünü -çekmesi ve Open WebUI'nin kendi soğuk-başlangıç kurulumunu tamamlaması gerekebilir. -Bu hat kullanılabilir bir canlı model anahtarı bekler ve `OPENCLAW_PROFILE_FILE` -(varsayılan olarak `~/.profile`) Docker'laştırılmış çalıştırmalarda bunu sağlamanın birincil yoludur. +Canlı model Docker çalıştırıcıları ayrıca geçerli checkout’u salt okunur olarak bind-mount eder ve +konteynerin içinde geçici bir workdir’e aşamalandırır. Bu, Vitest’i tam olarak +yerel source/config’inize karşı çalıştırmaya devam ederken runtime imajını ince +tutar. Aşamalandırma adımı, Docker canlı çalıştırmalarının makineye özgü +artifact’ları kopyalamak için dakikalar harcamaması için `.pnpm-store`, +`.worktrees`, `__openclaw_vitest__` ve app’e yerel `.build` ya da Gradle çıktı +dizinleri gibi büyük, yalnızca yerel cache’leri ve app build çıktılarını atlar. +Ayrıca Gateway canlı probe’larının konteyner içinde gerçek Telegram/Discord/vb. +kanal worker’larını başlatmaması için `OPENCLAW_SKIP_CHANNELS=1` ayarlarlar. +`test:docker:live-models` yine de `pnpm test:live` çalıştırır; bu nedenle o +Docker lane’inde Gateway canlı kapsamını daraltmanız veya hariç tutmanız +gerektiğinde `OPENCLAW_LIVE_GATEWAY_*` değerlerini de aktarın. +`test:docker:openwebui` daha üst düzey bir compatibility smoke’tur: OpenAI uyumlu +HTTP endpoint’leri etkin olan bir OpenClaw Gateway konteyneri başlatır, o +Gateway’e karşı pinlenmiş bir Open WebUI konteyneri başlatır, Open WebUI üzerinden +oturum açar, `/api/models` çıktısının `openclaw/default` sunduğunu doğrular, +ardından Open WebUI’nin `/api/chat/completions` proxy’si üzerinden gerçek bir +chat isteği gönderir. +İlk çalıştırma belirgin şekilde daha yavaş olabilir çünkü Docker’ın Open WebUI +imajını çekmesi ve Open WebUI’nin kendi soğuk başlatma kurulumunu bitirmesi +gerekebilir. +Bu lane kullanılabilir bir canlı model anahtarı bekler ve Dockerize +çalıştırmalarda bunu sağlamanın birincil yolu `OPENCLAW_PROFILE_FILE` +(varsayılan olarak `~/.profile`) kullanmaktır. Başarılı çalıştırmalar `{ "ok": true, "model": "openclaw/default", ... }` gibi küçük bir JSON payload yazdırır. `test:docker:mcp-channels` kasıtlı olarak deterministiktir ve gerçek bir -Telegram, Discord veya iMessage hesabına ihtiyaç duymaz. Tohumlanmış bir Gateway -container'ı başlatır, `openclaw mcp serve` oluşturan ikinci bir container başlatır, ardından -yönlendirilmiş konuşma keşfini, transkript okumalarını, ek metadata'sını, -canlı event queue davranışını, dışa gönderim yönlendirmesini ve gerçek stdio MCP köprüsü üzerinden -Claude tarzı kanal + izin bildirimlerini doğrular. Bildirim denetimi ham stdio MCP frame'lerini -doğrudan inceler; böylece smoke, yalnızca belirli bir client SDK'nın yüzeye çıkardığını değil, -köprünün gerçekten ne yaydığını doğrular. -`test:docker:pi-bundle-mcp-tools` deterministiktir ve canlı model anahtarına ihtiyaç duymaz. -Repo Docker görüntüsünü derler, container içinde gerçek bir stdio MCP prob sunucusu başlatır, -bu sunucuyu gömülü Pi bundle MCP çalışma zamanı üzerinden somutlaştırır, aracı yürütür, -ardından `coding` ve `messaging` değerlerinin `bundle-mcp` araçlarını koruduğunu, -`minimal` ve `tools.deny: ["bundle-mcp"]` değerlerinin ise bunları filtrelediğini doğrular. -`test:docker:cron-mcp-cleanup` deterministiktir ve canlı model anahtarına ihtiyaç duymaz. -Gerçek bir stdio MCP prob sunucusuyla tohumlanmış bir Gateway başlatır, yalıtılmış bir cron turu -ve bir `/subagents spawn` tek seferlik child turu çalıştırır, ardından MCP child sürecinin -her çalıştırmadan sonra çıktığını doğrular. +Telegram, Discord veya iMessage hesabına ihtiyaç duymaz. Seed edilmiş bir Gateway +konteynerini boot eder, `openclaw mcp serve` başlatan ikinci bir konteyner +başlatır, ardından routed conversation discovery, transcript okumaları, attachment metadata’sı, +canlı event queue davranışı, outbound send routing ve gerçek stdio MCP bridge +üzerinden Claude tarzı kanal + permission notification’larını doğrular. Notification kontrolü, +raw stdio MCP frame’lerini doğrudan inceler; böylece smoke, yalnızca belirli bir +client SDK’nin yüzeye çıkardıklarını değil, bridge’in gerçekten ne yaydığını +doğrular. +`test:docker:pi-bundle-mcp-tools` deterministiktir ve canlı model anahtarına +ihtiyaç duymaz. Repo Docker imajını build eder, konteyner içinde gerçek bir stdio +MCP probe server başlatır, bu server’ı gömülü Pi bundle MCP runtime üzerinden +materialize eder, tool’u çalıştırır, ardından `coding` ve `messaging` değerlerinin +`bundle-mcp` tool’larını koruduğunu; `minimal` ve `tools.deny: ["bundle-mcp"]` +değerlerinin ise bunları filtrelediğini doğrular. +`test:docker:cron-mcp-cleanup` deterministiktir ve canlı model anahtarına ihtiyaç +duymaz. Gerçek bir stdio MCP probe server ile seed edilmiş bir Gateway başlatır, +izole bir cron turn ve bir `/subagents spawn` tek seferlik child turn çalıştırır, +ardından MCP child process’inin her çalıştırmadan sonra çıktığını doğrular. -Manuel ACP düz-dil thread smoke (CI değil): +Manuel ACP sade dil thread smoke’u (CI değil): - `bun scripts/dev/discord-acp-plain-language-smoke.ts --channel ...` -- Bu betiği regresyon/hata ayıklama iş akışları için tutun. ACP iş parçacığı yönlendirme doğrulaması için yeniden gerekebilir, bu yüzden silmeyin. +- Bu script’i regression/debug workflow’ları için saklayın. ACP thread routing doğrulaması için tekrar gerekebilir, bu yüzden silmeyin. Yararlı env var’ları: -- `OPENCLAW_CONFIG_DIR=...` (varsayılan: `~/.openclaw`) `/home/node/.openclaw` içine bağlanır -- `OPENCLAW_WORKSPACE_DIR=...` (varsayılan: `~/.openclaw/workspace`) `/home/node/.openclaw/workspace` içine bağlanır -- `OPENCLAW_PROFILE_FILE=...` (varsayılan: `~/.profile`) `/home/node/.profile` içine bağlanır ve testleri çalıştırmadan önce kaynak olarak yüklenir -- `OPENCLAW_DOCKER_PROFILE_ENV_ONLY=1`, geçici yapılandırma/çalışma alanı dizinleri kullanarak ve harici CLI kimlik doğrulama bağlamaları olmadan yalnızca `OPENCLAW_PROFILE_FILE` içinden kaynak olarak yüklenen env var’larını doğrulamak için -- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (varsayılan: `~/.cache/openclaw/docker-cli-tools`) Docker içinde önbelleğe alınmış CLI kurulumları için `/home/node/.npm-global` içine bağlanır -- `$HOME` altındaki harici CLI kimlik doğrulama dizinleri/dosyaları `/host-auth...` altına salt okunur bağlanır, ardından testler başlamadan önce `/home/node/...` içine kopyalanır +- `OPENCLAW_CONFIG_DIR=...` (varsayılan: `~/.openclaw`) `/home/node/.openclaw` konumuna mount edilir +- `OPENCLAW_WORKSPACE_DIR=...` (varsayılan: `~/.openclaw/workspace`) `/home/node/.openclaw/workspace` konumuna mount edilir +- `OPENCLAW_PROFILE_FILE=...` (varsayılan: `~/.profile`) `/home/node/.profile` konumuna mount edilir ve testler çalıştırılmadan önce source edilir +- `OPENCLAW_DOCKER_PROFILE_ENV_ONLY=1`, yalnızca `OPENCLAW_PROFILE_FILE` içinden source edilen env var’larını, geçici config/workspace dizinleri kullanarak ve harici CLI auth mount’ları olmadan doğrulamak için +- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (varsayılan: `~/.cache/openclaw/docker-cli-tools`) Docker içindeki cache’lenmiş CLI kurulumları için `/home/node/.npm-global` konumuna mount edilir +- `$HOME` altındaki harici CLI auth dizinleri/dosyaları `/host-auth...` altında salt okunur olarak mount edilir, ardından testler başlamadan önce `/home/node/...` altına kopyalanır - Varsayılan dizinler: `.minimax` - Varsayılan dosyalar: `~/.codex/auth.json`, `~/.codex/config.toml`, `.claude.json`, `~/.claude/.credentials.json`, `~/.claude/settings.json`, `~/.claude/settings.local.json` - - Daraltılmış sağlayıcı çalıştırmaları yalnızca `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` değerlerinden çıkarılan gerekli dizinleri/dosyaları bağlar - - `OPENCLAW_DOCKER_AUTH_DIRS=all`, `OPENCLAW_DOCKER_AUTH_DIRS=none` veya `OPENCLAW_DOCKER_AUTH_DIRS=.claude,.codex` gibi virgülle ayrılmış bir listeyle elle geçersiz kılın + - Daraltılmış provider çalıştırmaları yalnızca `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` değerlerinden çıkarılan gerekli dizinleri/dosyaları mount eder + - `OPENCLAW_DOCKER_AUTH_DIRS=all`, `OPENCLAW_DOCKER_AUTH_DIRS=none` veya `OPENCLAW_DOCKER_AUTH_DIRS=.claude,.codex` gibi virgülle ayrılmış bir listeyle elle override edin - `OPENCLAW_LIVE_GATEWAY_MODELS=...` / `OPENCLAW_LIVE_MODELS=...`, çalıştırmayı daraltmak için -- `OPENCLAW_LIVE_GATEWAY_PROVIDERS=...` / `OPENCLAW_LIVE_PROVIDERS=...`, kapsayıcı içinde sağlayıcıları filtrelemek için -- `OPENCLAW_SKIP_DOCKER_BUILD=1`, yeniden derleme gerektirmeyen tekrar çalıştırmalarda mevcut bir `openclaw:local-live` imajını yeniden kullanmak için -- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, kimlik bilgilerinin profilden geldiğinden emin olmak için (env’den değil) -- `OPENCLAW_OPENWEBUI_MODEL=...`, Open WebUI smoke için Gateway tarafından sunulan modeli seçmek için -- `OPENCLAW_OPENWEBUI_PROMPT=...`, Open WebUI smoke tarafından kullanılan nonce denetimi istemini geçersiz kılmak için -- `OPENWEBUI_IMAGE=...`, sabitlenmiş Open WebUI imaj etiketini geçersiz kılmak için +- `OPENCLAW_LIVE_GATEWAY_PROVIDERS=...` / `OPENCLAW_LIVE_PROVIDERS=...`, konteyner içinde provider’ları filtrelemek için +- `OPENCLAW_SKIP_DOCKER_BUILD=1`, rebuild gerektirmeyen yeniden çalıştırmalarda mevcut bir `openclaw:local-live` imajını yeniden kullanmak için +- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, credentials’ın env’den değil profile store’dan geldiğinden emin olmak için +- `OPENCLAW_OPENWEBUI_MODEL=...`, Open WebUI smoke’u için Gateway tarafından sunulan modeli seçmek için +- `OPENCLAW_OPENWEBUI_PROMPT=...`, Open WebUI smoke’u tarafından kullanılan nonce-check prompt’unu override etmek için +- `OPENWEBUI_IMAGE=...`, pinlenmiş Open WebUI imaj etiketini override etmek için -## Doküman sağlamlık kontrolü +## Docs sanity -Doküman düzenlemelerinden sonra doküman denetimlerini çalıştırın: `pnpm check:docs`. -Sayfa içi başlık denetimlerine de ihtiyaç duyduğunuzda tam Mintlify anchor doğrulamasını çalıştırın: `pnpm docs:check-links:anchors`. +Doc düzenlemelerinden sonra docs kontrollerini çalıştırın: `pnpm check:docs`. +Sayfa içi heading kontrolleri de gerektiğinde tam Mintlify anchor doğrulamasını çalıştırın: `pnpm docs:check-links:anchors`. -## Çevrim dışı regresyon (CI güvenli) +## Çevrimdışı regression (CI-safe) -Bunlar gerçek sağlayıcılar olmadan çalışan “gerçek pipeline” regresyonlarıdır: +Bunlar gerçek provider’lar olmadan “gerçek pipeline” regression’larıdır: -- Gateway tool calling (sahte OpenAI, gerçek Gateway + aracı döngüsü): `src/gateway/gateway.test.ts` (vaka: "runs a mock OpenAI tool call end-to-end via gateway agent loop") -- Gateway sihirbazı (WS `wizard.start`/`wizard.next`, yapılandırma yazar + kimlik doğrulama zorunlu kılınır): `src/gateway/gateway.test.ts` (vaka: "runs wizard over ws and writes auth token config") +- Gateway tool calling (mock OpenAI, gerçek Gateway + agent loop): `src/gateway/gateway.test.ts` (case: "runs a mock OpenAI tool call end-to-end via gateway agent loop") +- Gateway wizard (WS `wizard.start`/`wizard.next`, config yazar + auth zorunlu kılınır): `src/gateway/gateway.test.ts` (case: "runs wizard over ws and writes auth token config") -## Aracı güvenilirlik değerlendirmeleri (Skills) +## Agent güvenilirlik eval’leri (skills) -Zaten “aracı güvenilirlik değerlendirmeleri” gibi davranan birkaç CI güvenli testimiz var: +Zaten “agent güvenilirlik eval’leri” gibi davranan birkaç CI-safe testimiz var: -- Gerçek Gateway + aracı döngüsü üzerinden sahte tool-calling (`src/gateway/gateway.test.ts`). -- Oturum bağlantılarını ve yapılandırma etkilerini doğrulayan uçtan uca sihirbaz akışları (`src/gateway/gateway.test.ts`). +- Gerçek Gateway + agent loop üzerinden mock tool-calling (`src/gateway/gateway.test.ts`). +- Session wiring ve config etkilerini doğrulayan end-to-end wizard flow’ları (`src/gateway/gateway.test.ts`). -Skills için hâlâ eksik olanlar ([Skills](/tr/tools/skills) sayfasına bakın): +Skills için hâlâ eksik olanlar (bkz. [Skills](/tr/tools/skills)): -- **Karar verme:** Skills istemde listelendiğinde, aracı doğru Skill’i seçiyor mu (veya ilgisiz olanlardan kaçınıyor mu)? -- **Uyumluluk:** aracı kullanımdan önce `SKILL.md` dosyasını okuyor ve gerekli adımları/argümanları izliyor mu? -- **İş akışı sözleşmeleri:** araç sırasını, oturum geçmişi aktarımını ve sandbox sınırlarını doğrulayan çok turlu senaryolar. +- **Karar verme:** prompt’ta skills listelendiğinde agent doğru skill’i seçiyor mu (veya alakasız olanlardan kaçınıyor mu)? +- **Uyumluluk:** agent kullanımdan önce `SKILL.md` dosyasını okuyup gerekli adımları/argümanları izliyor mu? +- **Workflow contract’ları:** tool sırası, session history carryover ve sandbox sınırlarını assert eden multi-turn senaryolar. -Gelecekteki değerlendirmeler önce deterministik kalmalıdır: +Gelecekteki eval’ler önce deterministik kalmalı: -- Araç çağrılarını + sırayı, Skill dosyası okumalarını ve oturum bağlantılarını doğrulamak için sahte sağlayıcılar kullanan bir senaryo çalıştırıcı. -- Skill odaklı küçük bir senaryo paketi (kullanma ve kaçınma, geçitleme, istem enjeksiyonu). -- İsteğe bağlı canlı değerlendirmeler (isteğe bağlı, env ile kapılı) yalnızca CI güvenli paket yerleştirildikten sonra. +- Tool çağrılarını + sıralamayı, skill dosyası okumalarını ve session wiring’i assert etmek için mock provider’lar kullanan bir scenario runner. +- Skill odaklı küçük bir senaryo paketi (kullanma vs kaçınma, gating, prompt injection). +- İsteğe bağlı canlı eval’ler (opt-in, env-gated), yalnızca CI-safe paket hazır olduktan sonra. -## Sözleşme testleri (Plugin ve kanal biçimi) +## Contract testleri (Plugin ve kanal şekli) -Sözleşme testleri, kayıtlı her Plugin’in ve kanalın kendi arayüz -sözleşmesine uyduğunu doğrular. Keşfedilen tüm Plugin’ler üzerinde döner ve bir -biçim ile davranış doğrulaması paketi çalıştırırlar. Varsayılan `pnpm test` -birim hattı bu paylaşılan bağlantı noktası ve smoke dosyalarını bilinçli olarak -atlar; paylaşılan kanal veya sağlayıcı yüzeylerine dokunduğunuzda sözleşme -komutlarını açıkça çalıştırın. +Contract testleri, kayıtlı her Plugin ve kanalın kendi interface contract’ına uyduğunu +doğrular. Keşfedilen tüm Plugin’ler üzerinde iterasyon yapar ve shape ile behavior +assertion’larından oluşan bir suite çalıştırırlar. Varsayılan `pnpm test` unit lane’i +bu paylaşılan seam ve smoke dosyalarını kasıtlı olarak atlar; paylaşılan kanal +veya provider yüzeylerine dokunduğunuzda contract komutlarını açıkça çalıştırın. ### Komutlar -- Tüm sözleşmeler: `pnpm test:contracts` -- Yalnızca kanal sözleşmeleri: `pnpm test:contracts:channels` -- Yalnızca sağlayıcı sözleşmeleri: `pnpm test:contracts:plugins` +- Tüm contract’lar: `pnpm test:contracts` +- Yalnızca kanal contract’ları: `pnpm test:contracts:channels` +- Yalnızca provider contract’ları: `pnpm test:contracts:plugins` -### Kanal sözleşmeleri +### Kanal contract’ları -`src/channels/plugins/contracts/*.contract.test.ts` içinde bulunur: +`src/channels/plugins/contracts/*.contract.test.ts` içinde yer alır: -- **plugin** - Temel Plugin biçimi (id, ad, yetenekler) -- **setup** - Kurulum sihirbazı sözleşmesi -- **session-binding** - Oturum bağlama davranışı -- **outbound-payload** - Mesaj payload yapısı -- **inbound** - Gelen mesaj işleme -- **actions** - Kanal eylem işleyicileri -- **threading** - İş parçacığı kimliği işleme -- **directory** - Dizin/kadro API’si -- **group-policy** - Grup politikası uygulaması +- **plugin** - Temel Plugin şekli (id, name, capabilities) +- **setup** - Setup wizard contract’ı +- **session-binding** - Session binding davranışı +- **outbound-payload** - Message payload yapısı +- **inbound** - Inbound message handling +- **actions** - Kanal action handler’ları +- **threading** - Thread ID handling +- **directory** - Directory/roster API +- **group-policy** - Group policy enforcement -### Sağlayıcı durum sözleşmeleri +### Provider status contract’ları -`src/plugins/contracts/*.contract.test.ts` içinde bulunur. +`src/plugins/contracts/*.contract.test.ts` içinde yer alır. -- **status** - Kanal durum probları -- **registry** - Plugin kayıt defteri biçimi +- **status** - Kanal status probe’ları +- **registry** - Plugin registry şekli -### Sağlayıcı sözleşmeleri +### Provider contract’ları -`src/plugins/contracts/*.contract.test.ts` içinde bulunur: +`src/plugins/contracts/*.contract.test.ts` içinde yer alır: -- **auth** - Kimlik doğrulama akışı sözleşmesi -- **auth-choice** - Kimlik doğrulama seçimi/seçme -- **catalog** - Model katalog API’si -- **discovery** - Plugin keşfi -- **loader** - Plugin yükleme -- **runtime** - Sağlayıcı çalışma zamanı -- **shape** - Plugin biçimi/arayüzü -- **wizard** - Kurulum sihirbazı +- **auth** - Auth flow contract’ı +- **auth-choice** - Auth choice/selection +- **catalog** - Model catalog API +- **discovery** - Plugin discovery +- **loader** - Plugin loading +- **runtime** - Provider runtime +- **shape** - Plugin shape/interface +- **wizard** - Setup wizard -### Ne zaman çalıştırılır +### Ne zaman çalıştırılmalı -- plugin-sdk dışa aktarımları veya alt yolları değiştirildikten sonra -- Bir kanal ya da sağlayıcı Plugin’i eklendikten veya değiştirildikten sonra -- Plugin kaydı veya keşfi yeniden düzenlendikten sonra +- plugin-sdk export’ları veya subpath’leri değiştirildikten sonra +- Bir kanal veya provider Plugin’i eklendikten ya da değiştirildikten sonra +- Plugin registration veya discovery refactor edildikten sonra -Sözleşme testleri CI’da çalışır ve gerçek API anahtarları gerektirmez. +Contract testleri CI’da çalışır ve gerçek API anahtarları gerektirmez. -## Regresyon ekleme (kılavuz) +## Regression ekleme (rehberlik) -Canlıda keşfedilen bir sağlayıcı/model sorununu düzelttiğinizde: +Canlıda keşfedilen bir provider/model sorununu düzelttiğinizde: -- Mümkünse CI güvenli bir regresyon ekleyin (sahte/stub sağlayıcı veya tam istek biçimi dönüşümünü yakalayın) -- Doğası gereği yalnızca canlıysa (hız sınırları, kimlik doğrulama politikaları), canlı testi dar tutun ve env var’larıyla isteğe bağlı yapın -- Hatayı yakalayan en küçük katmanı hedeflemeyi tercih edin: - - sağlayıcı istek dönüştürme/yeniden oynatma hatası → doğrudan modeller testi - - Gateway oturum/geçmiş/araç pipeline hatası → Gateway canlı smoke veya CI güvenli Gateway sahte testi -- SecretRef dolaşma güvenlik rayı: - - `src/secrets/exec-secret-ref-id-parity.test.ts`, kayıt defteri metadata’sından (`listSecretTargetRegistryEntries()`) her SecretRef sınıfı için örneklenmiş bir hedef türetir, ardından dolaşma segmenti exec kimliklerinin reddedildiğini doğrular. - - `src/secrets/target-registry-data.ts` içinde yeni bir `includeInPlan` SecretRef hedef ailesi eklerseniz, o testteki `classifyTargetClass` öğesini güncelleyin. Test, yeni sınıfların sessizce atlanamaması için sınıflandırılmamış hedef kimliklerinde bilinçli olarak başarısız olur. +- Mümkünse CI-safe bir regression ekleyin (mock/stub provider veya tam request-shape transformation’ını yakalayın) +- Sorun doğası gereği yalnızca canlıysa (rate limit’ler, auth policy’leri), canlı testi dar ve env var’ları üzerinden opt-in tutun +- Bug’ı yakalayan en küçük katmanı hedeflemeyi tercih edin: + - provider request conversion/replay bug’ı → doğrudan models testi + - gateway session/history/tool pipeline bug’ı → Gateway live smoke veya CI-safe Gateway mock testi +- SecretRef traversal guardrail: + - `src/secrets/exec-secret-ref-id-parity.test.ts`, registry metadata’sından (`listSecretTargetRegistryEntries()`) SecretRef sınıfı başına örneklenmiş bir hedef türetir, ardından traversal-segment exec id’lerinin reddedildiğini assert eder. + - `src/secrets/target-registry-data.ts` içinde yeni bir `includeInPlan` SecretRef hedef ailesi eklerseniz, o testteki `classifyTargetClass` değerini güncelleyin. Test, sınıflandırılmamış hedef id’lerinde kasıtlı olarak fail eder; böylece yeni sınıflar sessizce atlanamaz. ## İlgili -- [Canlı test](/tr/help/testing-live) +- [Canlı test etme](/tr/help/testing-live) - [CI](/tr/ci) diff --git a/docs/tr/reference/test.md b/docs/tr/reference/test.md index 3ebe7a304..67b1474fc 100644 --- a/docs/tr/reference/test.md +++ b/docs/tr/reference/test.md @@ -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 ` 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