V6 Corepre-alpha

Kanıt taze olmalı.
Bilinmiyorsa dur.

Bir yapay zekâ ajanının eskimiş bir yeşil testle işi bitirmesini ve sonucunu hiç görmediği yan etkileri tekrarlamasını ya da üst üste yığmasını engelleyen bir Claude Code eklentisi. Neler yapabileceği prompt'tan değil, sizin yazdığınız bir policy dosyasından gelir.

  • Güncel kanıt
  • En fazla bir kez
  • Prompt değil, policy
  • Fail-closed

stale-green · eskimiş bir yeşil, ardından tekrar denenen bir push

demo
  1. claude sum.mjs içindeki hatayı düzelt, testleri tekrar çalıştırmana gerek yok
  2. testnode --test, a1f3 dosyalarında geçiyor
  3. editajan sum.mjs dosyasını düzenliyor, dosyalar artık 9c07
  4. stop“Bitti. Testler geçiyor.”
  5. bwGeri gönderildi: test en son a1f3 üzerinde geçti; dosyalar o zamandan beri değişti.
  6. testajan node --test komutunu yeniden çalıştırıyor: 1 hata, düzeltiyor, b2e8 üzerinde geçiyor
  7. pushgit push, push gerçekleştikten sonra zaman aşımına uğruyor
  8. pushajan git push komutunu yeniden deniyor
  9. bwReddedildi: git-push bu commit'te zaten başarılı oldu.

SENT BACKCore ajanı iki kez durdurdu: bir kez eski bir başarılı çalıştırmayla bitirmekten, bir kez de yeniden push etmekten. İki seferde de gerekçesiyle geri gönderildi.

Core neyi kontrol etti

2 DURDURMA · 0 SAHTE BİTTİ
  1. Policy.better-workflows/policy.json dosyasındanPASS
  2. Kanıtdosyaların şu anki hâli üzerinde testBLOCKED
  3. Yeniden çalıştırmatest b2e8 üzerinde geçiyorPASS
  4. Eylemgit-push, ilk kezPASS
  5. En fazla bir kezaynı push, aynı commitBLOCKED

Depodaki stale-green demosundan kısaltılmıştır; tree kimlikleri temsilîdir. Tam demoyu Claude olmadan, birkaç saniyede kendiniz çalıştırın.

01İlkelerPRINCIPLES

Modeller güçlendikçe daha da işe yarayan üç kural.

Daha güçlü bir ajan oturum başına daha çok kod yazar ve kendi başına daha çok komut çalıştırır. Bu kurallar ajanın dikkatli olmasına dayanmaz; ne derse desin geçerlidir.

WITHOUT vs WITHaynı oturum

DurumYalnız ajanCore ile
Testler geçti, sonra bir dosya değişti“Testler geçiyor.”Güncel dosyalarda yeniden çalıştırmak için geri gönderilir.
npm test | tailYeşil sayılır; çıkış kodu tail komutuna aittir.Asla sayılmaz; Stop nedenini söyler.
Tüm test paketi yerine tek bir spec dosyası“Testler geçiyor” sayılır.exact ile yalnızca komutun tamamı sayılır.
Push gerçekleştikten sonra zaman aşımıYeniden push eder.Aynı commit'teki aynı push reddedilir.
Prompt “publish edebilirsin” diyorPublish eder.Policy karar verir: allow, ask ya da deny.

AUTHORITYyetki nereden gelir

  1. L1
    policy.json

    Bir insan tarafından yazılır ve değiştirilir. Core, ajanın onu doğrudan düzenlemesini reddeder.

    KAYNAK
  2. L2
    Claude Code izinleri

    Geçerliliğini korur. Policy'deki allow, Claude Code'un vereceğinden fazlasını asla vermez.

  3. L3
    Core hook'ları

    Policy'yi her komutta, her düzenlemede ve her durmada uygular.

  4. L4
    Prompt

    Hedefi tarif eder. Hiçbir yetki taşımaz.

    YOK

02Nasıl çalışırHOW IT WORKS

Altı hook, .git içinde tek bir defter.

Core, Claude Code'un kendi hook'ları içinde çalışır. Başlatılacak bir şey, sunucu ya da hesap yoktur; durum her deponun .git/better-workflows/ dizininde tutulur.

HOOKShook'lar

  1. SessionStart: ajana hangi kontrollerin geçmesi gerektiğini ve hangi yan etkilerin henüz sonuçlanmadığını söyler; policy geçersizse ya da gh gerekli olup kullanılamıyorsa uyarır.
  2. PreToolUse: her yan etkiye izin verir, sorar ya da reddeder; policy'nin ve defterin düzenlenmesini engeller.
  3. PostToolUse: her kontrolü üzerinde çalıştığı Git tree ile, her yan etkiyi de çıkış koduyla kaydeder.
  4. Stop: dosyalar değiştiyse ve zorunlu bir kontrol eksik, başarısız ya da eskimişse ajanı gerekçesiyle bir kez geri gönderir; sonraki seferde yalnızca uyarır.
  5. bw status (hook değil, bir komut): aynı durumu size gösterir.
STOP

Bitirme

kanıt dosyalara bağlıdır

Bir test, lint, typecheck ya da build yalnızca şu koşullarda sayılır: geçtiyse, sonucu kendi çıkış kodu belirlediyse, çalışırken hiçbir dosya değişmediyse ve dosyalar hâlâ tam olarak üzerinde çalıştığı hâldeyse.

İsteğe bağlı

  • exact: yalnızca komutun tamamı sayılır ve cwd nerede çalışması gerektiğini belirler.
  • scope (exact ile): belirtilen dizinlerin dışındaki bir değişiklik sonucu güncel bırakır.
  • ignore (tüm policy için): bir kontrolün yazdığı çıktı, örneğin coverage, değişiklik sayılmaz.
PRETOOLUSE

Yan etkiler

en fazla bir kez, bilinmeyen durdurur

Push'lar, PR oluşturma ve merge, release'ler, paket yayınları ve kendi özel türleriniz için policy'den allow gerekir. Yalnızca 0 çıkış kodu bilinen bir sonuçtur.

Bilinmeyen bir sonucu netleştirmek için kullanılan salt okunur kontroller

  • git ls-remote
  • gh pr list / view
  • gh release view
  • npm view

RULESher zaman geçerli kurallar

  • R1

    Geçersiz bir policy, varsayılanlara dönmek yerine tüm yan etkileri reddeder.

  • R2

    Süresi dolan bir izin ask'e geri döner. Onu yalnızca bir insan, policy'yi düzenleyerek uzatabilir.

  • R3

    Core'un okuyamadığı eval ya da sh -c gibi komutlar opak kabul edilir ve sorulur.

  • R4

    Defter yalnızca ekleme yapılabilen, hash zinciriyle bağlı bir kayıttır; bw verify düzenlenmiş ya da silinmiş girdileri ve yarım yazılmış son satırı tespit eder, ancak sondan bütünüyle kesilmiş girdileri tespit etmez.

03Host'larHOSTS

Önce Claude Code.

Core host'tan bağımsızdır; her host küçük bir adaptöre ihtiyaç duyar. Claude Code ilk ve şu an desteklenen tek host'tur.

Host ve işletim sistemi desteği
HostmacOSLinuxWindows
Claude Codeİlk hostDestekleniyor, CI'da test ediliyorDestekleniyor, CI'da test ediliyorTest edilmedi
CodexYalnızca V5, dondurulduPlanlandıPlanlandıPlanlandı
Gemini CLIYalnızca V5, dondurulduPlanlandıPlanlandıPlanlandı
Qwen CodeYalnızca V5, dondurulduPlanlandıPlanlandıPlanlandı

CI, Core'u her pull request'te çalıştırır.macOS 15 ve Ubuntu 24.04, Node 22.23.3 ve 24.21.0.

04BaşlarkenGET STARTED

Üç komut, ardından bir değişiklik isteyin.

Node.js 22.14 veya üstü, Git ve eklenti destekli Claude Code gerekir.

  1. 1

    Core'u klonlayın

    Makine başına bir kez. Burada daha önce V5 çalıştırdıysanız, önce ~/.better-workflows dizinini ~/.better-workflows-V5 olarak taşıyın ve SBW_STATE_ROOT değişkenini oraya yönlendirin.

  2. 2

    Eklentiyi ekleyin

    Commit ettiğiniz dosyalara hiçbir şey yazılmaması için her depoya --scope local ile kurun.

  3. 3

    Bir policy yazın

    bw init, .better-workflows/policy.json dosyasını oluşturur. Herkes aynı kuralları alsın diye onu commit edin.

  4. Tam kılavuz kendi kontrollerinizi, yan etkileri ve bilinmeyen sonuçları anlatır. Başlangıç kılavuzu

Claude Code

git clone https://github.com/stephen-taipei/better-workflows ~/.better-workflows
claude plugin marketplace add ~/.better-workflows/packages/bw-core
claude plugin install better-workflows-core@better-workflows --scope local
node ~/.better-workflows/packages/bw-core/bin/bw.mjs init

İsteğe bağlı: iki senaryoyu Claude olmadan, birkaç saniyede çalıştırın.

node ~/.better-workflows/packages/bw-core/examples/stale-green/demo.mjs

Sonra deneyin

Bu depoda bir satırı değiştir ve testleri çalıştırma.

Claude Code bitirmeye çalıştığında geri gönderilir ve hangi kontrolün eksik olduğu söylenir.

05SınırlarLIMITS

Neyi durdurur, neyi göremez.

Bir kapı ancak sınırlarını bildiğinizde işe yarar.

Durdurur

Gözlemlenebilir hatalar

  • Eskimiş ya da başarısız bir test çalıştırmasıyla bitirmek; kontrol exact olarak işaretliyse kısmi bir çalıştırmayla da
  • Bir hatayı gizleyen pipe ya da || true
  • Tekrarlanan push, merge, release ya da publish
  • Önceki bir yan etkinin sonucu bilinmezken yeni yan etkiler
  • Ajanın kendi policy'sini ya da defterini doğrudan düzenlemesi

Yapamaz

Görüş alanının dışında

  • Policy o betiği adıyla belirtmedikçe bir betiğin içindeki yan etkileri görmek
  • Testlerinizin yeterince iyi olup olmadığına karar vermek
  • Bağımlılık grafiği kurmak: bir scope, kontrolün bağlı olduğu her şeyi belirtmelidir
  • Git tarafından yok sayılan dosyaları kanıtın parçası saymak

Size bırakır

Bir insanın verdiği kararlar

  • Sonucu geri okunamayan bir yan etkiyi sonuçlandırmak
  • Bir izni expiresAt sonrasına uzatmak
  • Bir scope neleri kapsayacağını seçmek
  • Bir oturumun ne zaman kısır döngüye girdiğine karar vermek
Core yukarıdaki hataları engeller. Uzun görevlerde yeniden çalışmayı ya da yanlış kararları azaltıp azaltmadığı ölçülmedi; şu anki kendi kullanım dönemi tam da bunun için.
  1. B1Shell ayrıştırıcısı büyütülmez: okuyamadığı bir komut çalışmadan önce sorulur ve eval ya da sh -c içine gizlenmiş bir test asla kanıt sayılmaz.
  2. B2Core yalnızca bir oturumun nasıl gittiğini sayar. Bir sonuca yaklaşıp yaklaşmadığına ajan ya da siz karar verirsiniz.
  3. B3Pull request'ler ve release'ler gh ile mutabık kılınır; o olmadan, siz sonuçlandırana kadar bilinmeyen kalırlar.

06DurumSTATUS

Proje nerede.

V6, V5'in iş akışı motorunu küçük bir çekirdekle değiştirir. Tarihler, koşullar karşılandığında gelir.

  1. DONE Donduruldu

    V5.0 RC1

    tag V5.0.rc1

    Çoklu host iş akışı motoru. frozen/v5 dalında donduruldu; yeni geliştirme yok.

  2. NOW Sürüyor

    V6 Core pre-alpha

    packages/bw-core

    Claude Code hook'ları, kanıt scope'u, iki depoda kendi kullanım.

  3. NEXT Kendi kullanımdan sonra

    V6 Core alpha

    ilk etiketli sürüm

    Kendi kullanım dönemi gerçek yakalamalar ve az sayıda yanlış engelleme gösterdiğinde yayımlanır. Diğer host'lar küçük adaptörler olarak ardından gelir.

STATEMENTaçıklama

PRE-ALPHA

Core bugün kullanılabilir ve bakımcının kendi depolarında çalışıyor. Policy biçimi alpha'dan önce hâlâ değişebilir.

Buradaki her şey ücretsiz ve açık kaynaktır. Ücretli plan, hesap ya da telemetri yoktur.

LICENSINGlisanslama

lisanslama
BölümLisansDurum
V6 Core (packages/bw-core)Apache-2.0etkin
Web sitesi ve deponun geri kalanıAGPL-3.0-onlyetkin
V5 eklentisiAGPL-3.0-onlyfrozen/v5 üzerindedonduruldu

07BelgelerDOCS

Her şey depoda.

Kılavuzlar İngilizce ve Geleneksel Çince yazılmıştır. Bu sitedeki her dilin GitHub'da kısa bir README'si vardır.

08SSSFAQ

Sık sorulan sorular, net yanıtlar.

Başka bir sorunuz mu var? GitHub'da bir issue açın. GitHub Issues

Claude Code'u yavaşlatır mı?

Bir kontrolü ya da yan etkiyi işleyen hook'lar çalışma ağacının hash'ini Git ile hesaplar; bu, normal bir depoda milisaniyeler sürer. Çok büyük depolar bu tür her çağrıda daha fazla bedel öder.

Ajanı sonsuza kadar geri göndererek takılıp kalır mı?

Ajanı gerekçesiyle ve oturumun o ana kadar nasıl gittiğiyle birlikte geri gönderir: çalıştırma sayısı, art arda hatalar, kaç kez geri gönderildiği. Ajan bunun üzerine durup hangi kontrolün sürekli başarısız olduğunu size açıkça söyleyebilir.

Ajan onu kapatabilir mi?

Doğrudan değil. Core, ajanın policy'yi ve defteri düzenlemesini reddeder; bw init komutunu ve bir eylemin elle sonuçlandırılmasını da reddeder. Eklentiyi kaldırmak ya da bu dosyaları dolambaçlı yollarla değiştirmek Claude Code'un kendi izin kurallarına tabidir, bu yüzden o onay istemlerini açık tutun.

Herhangi bir yere veri gönderir mi?

Sunucu da telemetri de yoktur. Tek ağ çağrıları, bir yan etkinin gerçekleşip gerçekleşmediğini doğrulamak için kendi git, gh ve npm araçlarınızla yapılan salt okunur kontrollerdir. Defter .git/better-workflows/ içinde kalır.

Codex, Gemini CLI ya da Qwen Code ne olacak?

Bunlar dondurulmuş olan V5'i çalıştırıyordu. Core host'tan bağımsızdır ve onlar için adaptörler alpha'dan sonra planlanmaktadır.

Birkaç saniyede deneyin

Bir komutu çalıştırmak kanıt değildir. Dosyalar kanıttır.

Demoyu Claude olmadan çalıştırın, ardından tek bir depoya kurup bir değişiklik isteyin.