V6 Corepre-alpha

Evidència al dia.
Si no se sap, s'atura.

Un plugin per a Claude Code que impedeix que un agent d'IA doni la feina per acabada amb un test en verd ja obsolet, i que repeteixi o acumuli efectes secundaris dels quals no ha vist mai el resultat. El que pot fer ho decideix un fitxer de policy que escrius tu, mai el prompt.

  • Evidència actual
  • Com a màxim una vegada
  • Policy, no prompt
  • En cas de dubte, bloqueja

stale-green · un verd obsolet i després un push reintentat

demo
  1. claude corregeix l'error de sum.mjs, no cal tornar a executar els tests
  2. testnode --test passa sobre els fitxers a1f3
  3. editl'agent edita sum.mjs; ara els fitxers són 9c07
  4. stop«Fet. Els tests passen.»
  5. bwRetornat: test va passar per última vegada sobre a1f3; des d'aleshores els fitxers han canviat.
  6. testl'agent torna a executar node --test: 1 error, el corregeix, passa sobre b2e8
  7. pushgit push esgota el temps d'espera quan el push ja s'ha completat
  8. pushl'agent reintenta git push
  9. bwDenegat: git-push ja ha tingut èxit en aquest commit.

SENT BACKCore va aturar l'agent dues vegades: una quan anava a acabar amb un resultat aprovat antic, una altra quan anava a fer push de nou. Totes dues vegades se'l va retornar amb el motiu.

Què ha comprovat Core

2 ATURADES · 0 FALSOS «FET»
  1. Policyde .better-workflows/policy.jsonPASS
  2. Evidènciatest sobre els fitxers tal com són araBLOCKED
  3. Repeticióel test passa sobre b2e8PASS
  4. Acciógit-push, primera vegadaPASS
  5. Com a màxim una vegadamateix push, mateix commitBLOCKED

Abreujat a partir de la demo stale-green del repositori; els identificadors de tree són il·lustratius. Executa tu mateix la demo completa en pocs segons, sense Claude.

01PrincipisPRINCIPLES

Tres regles que guanyen utilitat a mesura que els models milloren.

Un agent més capaç escriu més codi per sessió i executa més ordres pel seu compte. Aquestes regles no depenen que l'agent sigui curós; es compleixen digui el que digui.

WITHOUT vs WITHla mateixa sessió

SituacióAgent solAmb Core
Els tests han passat i després ha canviat un fitxer«Els tests passen.»Se'l retorna perquè els torni a executar sobre els fitxers actuals.
npm test | tailEs dona per verd; el codi de sortida és el de tail.No compta mai; Stop explica per què.
Un fitxer d'spec en lloc de tota la suiteEs dona per «els tests passen».Amb exact, només compta l'ordre completa.
El push esgota el temps després de completar-seTorna a fer push.Es rebutja el mateix push al mateix commit.
El prompt diu «pots publicar»Publica.Decideix la policy: allow, ask o deny.

AUTHORITYd'on ve l'autoritat

  1. L1
    policy.json

    L'escriu i la canvia una persona. Core rebutja les edicions directes de l'agent.

    ORIGEN
  2. L2
    Permisos de Claude Code

    Continuen vigents. allow a la policy no concedeix mai més del que concediria Claude Code.

  3. L3
    Hooks de Core

    Apliquen la policy a cada ordre, cada edició i cada aturada.

  4. L4
    El prompt

    Descriu l'objectiu. No té cap autoritat.

    CAP

02Com funcionaHOW IT WORKS

Sis hooks, un registre a .git.

Core s'executa dins dels hooks del mateix Claude Code. Res a engegar, sense servidor ni compte; l'estat viu a .git/better-workflows/ de cada repositori.

HOOKSels hooks

  1. SessionStart: diu a l'agent quines comprovacions han de passar i quins efectes secundaris estan pendents de resoldre, i avisa si la policy no és vàlida o si cal gh però no es pot fer servir.
  2. PreToolUse: permet, pregunta o denega cada efecte secundari, i rebutja les edicions de la policy i del registre.
  3. PostToolUse: registra cada comprovació amb el tree de Git sobre el qual s'ha executat, i cada efecte secundari amb el seu codi de sortida.
  4. Stop: si han canviat fitxers i falta una comprovació obligatòria, ha fallat o està obsoleta, retorna l'agent una vegada amb el motiu; la vegada següent només avisa.
  5. bw status (una ordre, no un hook): et mostra aquest mateix estat.
STOP

Acabar

evidència lligada als fitxers

Un test, lint, typecheck o build només compta si ha passat, si el seu propi codi de sortida ha decidit el resultat de la línia, si cap fitxer no ha canviat mentre s'executava i si els fitxers continuen sent exactament aquells sobre els quals s'ha executat.

Opcional

  • exact: només compta l'ordre completa, i cwd fixa on s'ha d'executar.
  • scope (amb exact): un canvi fora dels directoris indicats no invalida el resultat.
  • ignore (tota la policy): el que escriu una comprovació, com ara la cobertura, no compta com a canvi.
PRETOOLUSE

Efectes secundaris

com a màxim una vegada; el desconegut atura

Els push, la creació i el merge de PR, les releases, la publicació de paquets i els teus propis tipus personalitzats necessiten cadascun allow a la policy. Només el codi de sortida 0 és un resultat conegut.

Comprovacions de només lectura per resoldre un resultat desconegut

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

RULESregles que es mantenen

  • R1

    Una policy no vàlida denega tots els efectes secundaris en lloc de recórrer a valors per defecte.

  • R2

    Un permís caducat torna a ask. Només una persona el pot allargar, editant la policy.

  • R3

    Les ordres que Core no pot llegir, com ara eval o sh -c, es tracten com a opaques i se'n pregunta.

  • R4

    El registre només admet afegir entrades i està encadenat per hash; bw verify detecta entrades editades o eliminades i una última línia escrita a mitges, però no entrades senceres retallades del final.

03HostsHOSTS

Primer, Claude Code.

Core és independent del host; cada host necessita un petit adaptador. Claude Code és el primer i, ara per ara, l'únic compatible.

Compatibilitat per host i sistema operatiu
HostmacOSLinuxWindows
Claude CodePrimer hostCompatible, provat a CICompatible, provat a CINo provat
CodexNomés V5, congelatPrevistPrevistPrevist
Gemini CLINomés V5, congelatPrevistPrevistPrevist
Qwen CodeNomés V5, congelatPrevistPrevistPrevist

La CI executa Core a cada pull request.macOS 15 i Ubuntu 24.04, Node 22.23.3 i 24.21.0.

04Primers passosGET STARTED

Tres ordres i després demana un canvi.

Cal Node.js 22.14 o posterior, Git i Claude Code amb suport de plugins.

  1. 1

    Clona Core

    Un cop per màquina. Si has fet servir V5 aquí, primer mou ~/.better-workflows a ~/.better-workflows-V5 i fes que SBW_STATE_ROOT hi apunti.

  2. 2

    Afegeix el plugin

    Instal·la'l per repositori amb --scope local, perquè no s'escrigui res en fitxers dels quals fas commit.

  3. 3

    Escriu una policy

    bw init escriu .better-workflows/policy.json. Fes-ne commit perquè tothom tingui les mateixes regles.

  4. La guia completa cobreix les teves pròpies comprovacions, efectes secundaris i resultats desconeguts. Guia d'inici

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

Opcional: executa els dos escenaris sense Claude, en pocs segons.

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

Després, prova-ho

Canvia una línia d'aquest repositori i no executis els tests.

Quan Claude Code intenta acabar, se'l retorna i se li diu quina comprovació falta.

05LímitsLIMITS

Què atura i què no pot veure.

Un control només és útil si en coneixes els límits.

Atura

Errors observables

  • Acabar amb una execució de tests obsoleta o fallida, o amb una de parcial quan la comprovació està marcada com a exact
  • Una canonada o || true que amaga un error
  • Un push, merge, release o publicació repetits
  • Efectes secundaris mentre un d'anterior encara és desconegut
  • Que l'agent editi directament la seva policy o el registre

No fa

Fora del seu abast

  • Veure efectes secundaris dins d'un script, tret que la policy anomeni aquest script
  • Jutjar si els teus tests són prou bons
  • Construir un graf de dependències: un scope ha d'anomenar tot allò de què depèn una comprovació
  • Comptar els fitxers ignorats per Git com a part de l'evidència

Et deixa a tu

Decisions que pren una persona

  • Resoldre un efecte secundari el resultat del qual no es pot tornar a llegir
  • Allargar un permís més enllà del seu expiresAt
  • Triar què cobreix un scope
  • Decidir quan una sessió està fent voltes en cercle
Core bloqueja els errors de dalt. No s'ha mesurat si redueix la feina refeta o les decisions errònies en tasques llargues; per això serveix el període actual d'ús propi.
  1. B1El parser de shell no creix: d'una ordre que no pot llegir se'n pregunta abans que s'executi, i un test amagat dins d'eval o sh -c no compta mai com a evidència.
  2. B2Core només porta el compte de com va una sessió. Si està convergint, ho jutja l'agent o ho jutges tu.
  3. B3Els pull requests i les releases es concilien amb gh; sense, continuen sent desconeguts fins que els resolguis.

06EstatSTATUS

On és el projecte.

V6 substitueix el motor de workflows de V5 per un nucli petit. Les dates s'anuncien quan es compleixen.

  1. DONE Congelat

    V5.0 RC1

    tag V5.0.rc1

    Motor de workflows multihost. Congelat a la branca frozen/v5; sense feina nova.

  2. NOW En curs

    V6 Core pre-alpha

    packages/bw-core

    Hooks de Claude Code, scope de l'evidència, ús propi en dos repositoris.

  3. NEXT Després de l'ús propi

    V6 Core alpha

    primera release etiquetada

    Es publicarà quan el període d'ús propi mostri deteccions reals i pocs bloquejos falsos. Després arribaran més hosts com a petits adaptadors.

STATEMENTdeclaració

PRE-ALPHA

Core ja es pot fer servir avui i funciona en els repositoris del mateix mantenidor. El format de la policy encara pot canviar abans de l'alpha.

Tot és gratuït i de codi obert. No hi ha cap nivell de pagament, compte ni telemetria.

LICENSINGllicències

llicències
PartLlicènciaEstat
V6 Core (packages/bw-core)Apache-2.0actiu
Lloc web i la resta del repositoriAGPL-3.0-onlyactiu
Plugin V5AGPL-3.0-onlya frozen/v5congelat

07DocumentacióDOCS

Tot és al repositori.

Les guies estan escrites en anglès i en xinès tradicional. Cada idioma d'aquest lloc té un README breu a GitHub.

08Preguntes freqüentsFAQ

Preguntes habituals, respostes directes.

Alguna altra cosa? Obre una issue a GitHub. GitHub Issues

Alenteix Claude Code?

Els hooks que gestionen una comprovació o un efecte secundari calculen el hash de l'arbre de treball amb Git, cosa que triga mil·lisegons en un repositori normal. Els repositoris molt grans paguen més a cadascuna d'aquestes crides.

Es pot quedar encallat retornant l'agent per sempre?

Retorna l'agent amb el motiu i amb com ha anat la sessió fins ara: execucions, errors seguits, vegades que ja se l'ha retornat. Llavors l'agent pot aturar-se i dir-te clarament quina comprovació continua fallant.

El pot desactivar l'agent?

No directament. Core rebutja les edicions de l'agent a la policy i al registre, i rebutja bw init i resoldre una acció a mà. Desinstal·lar el plugin, o canviar aquests fitxers per camins indirectes, es regeix per les regles de permisos pròpies de Claude Code, així que mantén activades aquestes confirmacions.

Envia res enlloc?

No hi ha servidor ni telemetria. Les seves úniques crides de xarxa són consultes de només lectura amb els teus propis git, gh i npm, per confirmar si un efecte secundari ha passat. El registre es queda a .git/better-workflows/.

I Codex, Gemini CLI o Qwen Code?

Feien servir V5, que està congelat. Core és independent del host, i hi ha adaptadors per a ells previstos després de l'alpha.

Prova-ho en pocs segons

Executar una ordre no demostra res. Els fitxers, sí.

Executa la demo sense Claude, després instal·la'l en un repositori i demana un canvi.