V6 Corepre-alpha

Bukti mesti terkini.
Tidak pasti? Berhenti.

Plugin Claude Code yang menghalang ejen AI daripada menamatkan kerja berdasarkan ujian hijau yang sudah lapuk, dan daripada mengulang atau menindih kesan sampingan yang hasilnya tidak pernah dilihatnya. Apa yang boleh dilakukannya datang daripada fail policy yang anda tulis, tidak sekali-kali daripada prompt.

  • Bukti terkini
  • Paling banyak sekali
  • Policy, bukan prompt
  • Fail-closed

stale-green · hijau yang lapuk, kemudian push yang dicuba semula

demo
  1. claude betulkan pepijat dalam sum.mjs, tak perlu jalankan semula ujian
  2. testnode --test lulus pada fail a1f3
  3. editejen menyunting sum.mjs, fail kini 9c07
  4. stop“Siap. Ujian lulus.”
  5. bwDihantar balik: test kali terakhir lulus pada a1f3; fail telah berubah sejak itu.
  6. testejen menjalankan semula node --test: 1 kegagalan, membetulkannya, lulus pada b2e8
  7. pushgit push tamat masa selepas push sudah sampai
  8. pushejen mencuba semula git push
  9. bwDitolak: git-push sudah berjaya pada commit ini.

SENT BACKCore menghentikan ejen dua kali: sekali daripada menamatkan kerja berdasarkan keputusan lulus yang lama, sekali daripada push sekali lagi. Kedua-dua kali ia dihantar balik bersama sebabnya.

Apa yang disemak Core

2 HENTIAN · 0 SIAP PALSU
  1. Policydaripada .better-workflows/policy.jsonPASS
  2. Buktiujian pada fail seperti keadaannya sekarangBLOCKED
  3. Jalan semulaujian lulus pada b2e8PASS
  4. Tindakangit-push, kali pertamaPASS
  5. Paling banyak sekalipush sama, commit samaBLOCKED

Diringkaskan daripada demo stale-green dalam repositori; id tree hanyalah contoh. Jalankan demo penuh sendiri dalam beberapa saat, tanpa Claude.

01PrinsipPRINCIPLES

Tiga peraturan yang makin berguna apabila model makin kuat.

Ejen yang lebih kuat menulis lebih banyak kod setiap sesi dan menjalankan lebih banyak arahan sendiri. Peraturan ini tidak bergantung pada ejen yang berhati-hati; ia tetap terpakai walau apa pun yang dikatakannya.

WITHOUT vs WITHsesi yang sama

SituasiEjen sahajaDengan Core
Ujian lulus, kemudian satu fail berubah“Ujian lulus.”Dihantar balik untuk menjalankan semula pada fail semasa.
npm test | tailDikira hijau; kod keluar itu milik tail.Tidak pernah dikira; Stop memberitahu sebabnya.
Satu fail spec dan bukan keseluruhan suiteDikira sebagai “ujian lulus”.Dengan exact, hanya arahan penuh dikira.
Push tamat masa selepas sampaiPush sekali lagi.Push yang sama pada commit yang sama ditolak.
Prompt kata “anda boleh publish”Terus publish.Policy yang menentukan: allow, ask atau deny.

AUTHORITYdari mana kuasa datang

  1. L1
    policy.json

    Ditulis dan diubah oleh manusia. Core menolak suntingan langsung ejen padanya.

    SUMBER
  2. L2
    Kebenaran Claude Code

    Masih terpakai. allow dalam policy tidak pernah memberi lebih daripada yang akan diberi oleh Claude Code.

  3. L3
    Hooks Core

    Menguatkuasakan policy pada setiap arahan, suntingan dan hentian.

  4. L4
    Prompt

    Menerangkan matlamat. Tidak membawa sebarang kuasa.

    TIADA

02Cara ia berfungsiHOW IT WORKS

Enam hooks, satu lejar dalam .git.

Core berjalan di dalam hooks Claude Code sendiri. Tiada apa-apa untuk dimulakan, tiada pelayan, tiada akaun; keadaan disimpan dalam .git/better-workflows/ setiap repositori.

HOOKShooks

  1. SessionStart: memberitahu ejen semakan mana yang mesti lulus dan kesan sampingan mana yang belum diselesaikan, serta memberi amaran jika policy tidak sah atau gh diperlukan tetapi tidak dapat digunakan.
  2. PreToolUse: membenarkan, bertanya atau menolak setiap kesan sampingan, dan menolak suntingan pada policy dan lejar.
  3. PostToolUse: merekod setiap semakan bersama tree Git tempat ia dijalankan, dan setiap kesan sampingan bersama kod keluarnya.
  4. Stop: jika fail berubah dan semakan wajib tiada, gagal atau lapuk, menghantar ejen balik sekali bersama sebabnya; pada kali berikutnya ia hanya memberi amaran.
  5. bw status (arahan, bukan hook): menunjukkan keadaan yang sama kepada anda.
STOP

Menamatkan kerja

bukti terikat pada fail

Ujian, lint, typecheck atau build hanya dikira jika ia lulus, kod keluarnya sendiri yang menentukan keputusan, tiada fail berubah semasa ia berjalan, dan fail masih tepat seperti semasa ia dijalankan.

Pilihan

  • exact: hanya arahan penuh dikira, dan cwd menetapkan tempat ia mesti dijalankan.
  • scope (dengan exact): perubahan di luar direktori yang dinamakan mengekalkan keputusan sebagai terkini.
  • ignore (seluruh policy): output yang ditulis oleh semakan, seperti coverage, tidak dikira sebagai perubahan.
PRETOOLUSE

Kesan sampingan

paling banyak sekali, tidak diketahui: berhenti

Push, penciptaan dan merge PR, release, penerbitan pakej dan jenis tersuai anda sendiri masing-masing memerlukan allow daripada policy. Hanya kod keluar 0 ialah hasil yang diketahui.

Semakan baca sahaja untuk menyelesaikan hasil yang tidak diketahui

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

RULESperaturan yang kekal

  • R1

    Policy yang tidak sah menolak setiap kesan sampingan dan tidak kembali kepada nilai lalai.

  • R2

    Kebenaran yang tamat tempoh kembali kepada ask. Hanya manusia boleh melanjutkannya, dengan menyunting policy.

  • R3

    Arahan yang tidak dapat dibaca oleh Core, seperti eval atau sh -c, dianggap legap dan pengesahan akan diminta.

  • R4

    Lejar bersifat append-only dan dirantai dengan hash; bw verify mengesan entri yang disunting atau dibuang dan baris terakhir yang separuh ditulis, tetapi bukan entri penuh yang dipotong dari hujung.

03HosHOSTS

Claude Code dahulu.

Core neutral terhadap hos; setiap hos memerlukan penyesuai kecil. Claude Code ialah yang pertama dan satu-satunya yang disokong hari ini.

Sokongan hos dan sistem pengendalian
HosmacOSLinuxWindows
Claude CodeHos pertamaDisokong, diuji dalam CIDisokong, diuji dalam CIBelum diuji
CodexV5 sahaja, dibekukanDirancangDirancangDirancang
Gemini CLIV5 sahaja, dibekukanDirancangDirancangDirancang
Qwen CodeV5 sahaja, dibekukanDirancangDirancangDirancang

CI menjalankan Core pada setiap pull request.macOS 15 dan Ubuntu 24.04, Node 22.23.3 dan 24.21.0.

04BermulaGET STARTED

Tiga arahan, kemudian minta satu perubahan.

Memerlukan Node.js 22.14 atau lebih baharu, Git, dan Claude Code dengan sokongan plugin.

  1. 1

    Klon Core

    Sekali bagi setiap mesin. Jika anda pernah menjalankan V5 di sini, alihkan ~/.better-workflows ke ~/.better-workflows-V5 dahulu dan halakan SBW_STATE_ROOT kepadanya.

  2. 2

    Tambah plugin

    Pasang bagi setiap repositori dengan --scope local, supaya tiada apa-apa ditulis ke dalam fail yang anda commit.

  3. 3

    Tulis policy

    bw init menulis .better-workflows/policy.json. Commit fail itu supaya semua orang mendapat peraturan yang sama.

  4. Panduan penuh merangkumi semakan dan kesan sampingan anda sendiri, serta hasil yang tidak diketahui. Panduan permulaan

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

Pilihan: jalankan kedua-dua senario tanpa Claude, dalam beberapa saat.

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

Kemudian cuba

Ubah satu baris dalam repositori ini, dan jangan jalankan ujian.

Apabila Claude Code cuba menamatkan kerja, ia dihantar balik dan diberitahu semakan mana yang tiada.

05HadLIMITS

Apa yang dihalangnya, dan apa yang tidak dapat dilihatnya.

Get hanya berguna jika anda tahu sempadannya.

Menghalang

Kesilapan yang boleh diperhatikan

  • Menamatkan kerja berdasarkan larian ujian yang lapuk atau gagal, atau larian separa apabila semakan ditandakan exact
  • Pipe atau || true yang menyembunyikan kegagalan
  • Push, merge, release atau publish yang berulang
  • Kesan sampingan semasa kesan sebelumnya belum diketahui
  • Ejen menyunting policy atau lejarnya secara langsung

Tidak

Di luar pandangannya

  • Melihat kesan sampingan di dalam skrip, kecuali policy menamakan skrip itu
  • Menilai sama ada ujian anda cukup baik
  • Membina graf kebergantungan: scope mesti menamakan semua yang menjadi kebergantungan semakan
  • Mengira fail yang diabaikan Git sebagai sebahagian daripada bukti

Diserahkan kepada anda

Keputusan yang dibuat oleh manusia

  • Menyelesaikan kesan sampingan yang hasilnya tidak dapat dibaca semula
  • Melanjutkan kebenaran melepasi expiresAt
  • Memilih apa yang diliputi oleh scope
  • Memutuskan bila sesi berpusing-pusing di tempat yang sama
Core menyekat kesilapan di atas. Belum diukur sama ada ia mengurangkan kerja semula atau keputusan yang salah dalam tugas panjang; itulah tujuan tempoh penggunaan sendiri sekarang.
  1. B1Penghurai shell tidak dikembangkan: arahan yang tidak dapat dibacanya ditanya sebelum ia dijalankan, dan ujian yang disembunyikan dalam eval atau sh -c tidak pernah dikira sebagai bukti.
  2. B2Core hanya mengira perjalanan sesi. Sama ada ia menumpu ke arah penyelesaian, ejen atau anda yang menilai.
  3. B3Pull request dan release disesuaikan menggunakan gh; tanpanya, ia kekal tidak diketahui sehingga anda menyelesaikannya.

06StatusSTATUS

Di mana projek ini sekarang.

V6 menggantikan enjin aliran kerja V5 dengan teras yang kecil. Tarikh ditetapkan apabila syarat dipenuhi.

  1. DONE Dibekukan

    V5.0 RC1

    tag V5.0.rc1

    Enjin aliran kerja berbilang hos. Dibekukan pada cabang frozen/v5; tiada kerja baharu.

  2. NOW Sedang berjalan

    V6 Core pre-alpha

    packages/bw-core

    Hooks Claude Code, scope bukti, penggunaan sendiri pada dua repositori.

  3. NEXT Selepas penggunaan sendiri

    V6 Core alpha

    release bertag pertama

    Diterbitkan apabila tempoh penggunaan sendiri menunjukkan tangkapan sebenar dan sedikit sekatan palsu. Lebih banyak hos menyusul sebagai penyesuai kecil.

STATEMENTkenyataan

PRE-ALPHA

Core boleh digunakan hari ini dan berjalan pada repositori penyelenggara sendiri. Format policynya mungkin masih berubah sebelum alpha.

Semua di sini percuma dan sumber terbuka. Tiada pelan berbayar, akaun atau telemetri.

LICENSINGpelesenan

pelesenan
BahagianLesenKeadaan
V6 Core (packages/bw-core)Apache-2.0aktif
Laman web dan bahagian lain repositoriAGPL-3.0-onlyaktif
Plugin V5AGPL-3.0-onlypada frozen/v5dibekukan

07DokumentasiDOCS

Semuanya ada dalam repositori.

Panduan ditulis dalam bahasa Inggeris dan Cina Tradisional. Setiap bahasa di laman ini mempunyai README ringkas di GitHub.

08Soalan lazimFAQ

Soalan lazim, jawapan terus.

Ada soalan lain? Buka issue di GitHub. GitHub Issues

Adakah ia melambatkan Claude Code?

Hook yang mengendalikan semakan atau kesan sampingan mengira hash pokok kerja dengan Git, yang mengambil masa beberapa milisaat dalam repositori biasa. Repositori yang sangat besar menanggung kos lebih pada setiap panggilan sedemikian.

Bolehkah ia tersekat dan menghantar ejen balik tanpa henti?

Ia menghantar ejen balik bersama sebabnya dan perjalanan sesi setakat ini: larian, kegagalan berturut-turut, berapa kali sudah dihantar balik. Ejen kemudian boleh berhenti dan memberitahu anda dengan jelas semakan mana yang terus gagal.

Bolehkah ejen mematikannya?

Tidak secara langsung. Core menolak suntingan ejen pada policy dan lejar, dan menolak bw init serta penyelesaian tindakan secara manual. Menyahpasang plugin, atau mengubah fail tersebut melalui cara tidak langsung, tertakluk pada peraturan kebenaran Claude Code sendiri, jadi pastikan gesaan tersebut kekal aktif.

Adakah ia menghantar apa-apa ke mana-mana?

Tiada pelayan dan tiada telemetri. Satu-satunya panggilan rangkaian ialah semakan baca sahaja dengan git, gh dan npm anda sendiri, untuk mengesahkan sama ada sesuatu kesan sampingan telah berlaku. Lejar kekal dalam .git/better-workflows/.

Bagaimana dengan Codex, Gemini CLI atau Qwen Code?

Ia menjalankan V5, yang dibekukan. Core neutral terhadap hos, dan penyesuai untuknya dirancang selepas alpha.

Cuba dalam beberapa saat

Menjalankan arahan bukan bukti. Fail itulah buktinya.

Jalankan demo tanpa Claude, kemudian pasang pada satu repositori dan minta satu perubahan.