V6 Corepre-alpha

Μόνο νέα απόδειξη.
Άγνωστο; Σταματάμε.

Ένα plugin για το Claude Code που εμποδίζει έναν AI agent να ολοκληρώσει με βάση ένα παρωχημένο πράσινο τεστ και να επαναλάβει ή να στοιβάξει παρενέργειες των οποίων το αποτέλεσμα δεν είδε ποτέ. Το τι επιτρέπεται να κάνει το ορίζει ένα αρχείο policy που γράφετε εσείς, ποτέ το prompt.

  • Τρέχουσα τεκμηρίωση
  • Το πολύ μία φορά
  • Policy, όχι prompt
  • Fail-closed

stale-green · ένα παρωχημένο πράσινο, μετά ένα επαναλαμβανόμενο push

demo
  1. claude διόρθωσε το bug στο sum.mjs, δεν χρειάζεται να ξανατρέξεις τα τεστ
  2. testτο node --test περνά στα αρχεία a1f3
  3. editο agent επεξεργάζεται το sum.mjs, τα αρχεία είναι πλέον 9c07
  4. stop«Έτοιμο. Τα τεστ περνούν.»
  5. bwΕπιστράφηκε: το test πέρασε τελευταία φορά στο a1f3· τα αρχεία έχουν αλλάξει από τότε.
  6. testο agent ξανατρέχει το node --test: 1 αποτυχία, τη διορθώνει, περνά στο b2e8
  7. pushτο git push λήγει λόγω χρονικού ορίου αφού το push έχει ήδη φτάσει
  8. pushο agent ξαναδοκιμάζει το git push
  9. bwΑπορρίφθηκε: το git-push έχει ήδη πετύχει σε αυτό το commit.

SENT BACKΤο Core σταμάτησε τον agent δύο φορές: μία πριν ολοκληρώσει με βάση ένα παλιό επιτυχές αποτέλεσμα, και μία πριν κάνει ξανά push. Και τις δύο φορές στάλθηκε πίσω με την αιτία.

Τι έλεγξε το Core

2 ΣΤΑΣΕΙΣ · 0 ΨΕΥΔΗ «ΕΤΟΙΜΟ»
  1. Policyαπό το .better-workflows/policy.jsonPASS
  2. Τεκμήριοτεστ στα αρχεία όπως είναι τώραBLOCKED
  3. Νέα εκτέλεσητο τεστ περνά στο b2e8PASS
  4. Ενέργειαgit-push, πρώτη φοράPASS
  5. Το πολύ μία φοράίδιο push, ίδιο commitBLOCKED

Συντομευμένο από το demo stale-green του αποθετηρίου· τα αναγνωριστικά tree είναι ενδεικτικά. Τρέξτε μόνοι σας το πλήρες demo σε λίγα δευτερόλεπτα, χωρίς Claude.

01ΑρχέςPRINCIPLES

Τρεις κανόνες που γίνονται πιο χρήσιμοι όσο δυναμώνουν τα μοντέλα.

Ένας ισχυρότερος agent γράφει περισσότερο κώδικα ανά συνεδρία και τρέχει περισσότερες εντολές μόνος του. Αυτοί οι κανόνες δεν εξαρτώνται από το αν ο agent είναι προσεκτικός· ισχύουν ό,τι κι αν λέει.

WITHOUT vs WITHη ίδια συνεδρία

ΚατάστασηΜόνος ο agentΜε το Core
Τα τεστ πέρασαν, μετά άλλαξε ένα αρχείο«Τα τεστ περνούν.»Στέλνεται πίσω για να τα ξανατρέξει στα τρέχοντα αρχεία.
npm test | tailΜετρά ως πράσινο· ο κωδικός εξόδου ανήκει στο tail.Δεν μετρά ποτέ· το Stop εξηγεί γιατί.
Ένα αρχείο spec αντί για ολόκληρη τη σουίταΜετρά ως «τα τεστ περνούν».Με exact, μετρά μόνο η πλήρης εντολή.
Λήξη χρόνου στο push αφού έχει ήδη φτάσειΚάνει ξανά push.Το ίδιο push στο ίδιο commit απορρίπτεται.
Το prompt λέει «μπορείς να δημοσιεύσεις»Δημοσιεύει.Αποφασίζει η policy: allow, ask ή deny.

AUTHORITYαπό πού προέρχεται η εξουσιοδότηση

  1. L1
    policy.json

    Γράφεται και αλλάζει από άνθρωπο. Το Core απορρίπτει τις απευθείας επεξεργασίες του από τον agent.

    ΠΗΓΗ
  2. L2
    Δικαιώματα του Claude Code

    Εξακολουθούν να ισχύουν. Το allow στην policy δεν δίνει ποτέ περισσότερα από όσα θα έδινε το Claude Code.

  3. L3
    Hooks του Core

    Επιβάλλουν την policy σε κάθε εντολή, επεξεργασία και τερματισμό.

  4. L4
    Το prompt

    Περιγράφει τον στόχο. Δεν φέρει καμία εξουσιοδότηση.

    ΚΑΜΙΑ

02Πώς λειτουργείHOW IT WORKS

Έξι hooks, ένα μητρώο στο .git.

Το Core τρέχει μέσα στα ίδια τα hooks του Claude Code. Τίποτα για εκκίνηση, χωρίς server, χωρίς λογαριασμό· η κατάσταση βρίσκεται στο .git/better-workflows/ κάθε αποθετηρίου.

HOOKSτα hooks

  1. SessionStart: λέει στον agent ποιοι έλεγχοι πρέπει να περάσουν και ποιες παρενέργειες δεν έχουν διευθετηθεί, και προειδοποιεί αν η policy δεν είναι έγκυρη ή αν χρειάζεται το gh αλλά δεν μπορεί να χρησιμοποιηθεί.
  2. PreToolUse: επιτρέπει, ρωτά ή απορρίπτει κάθε παρενέργεια και αρνείται αλλαγές στην policy και στο μητρώο.
  3. PostToolUse: καταγράφει κάθε έλεγχο μαζί με το Git tree στο οποίο έτρεξε, και κάθε παρενέργεια μαζί με τον κωδικό εξόδου της.
  4. Stop: αν άλλαξαν αρχεία και ένας απαιτούμενος έλεγχος λείπει, έχει αποτύχει ή είναι παρωχημένος, στέλνει τον agent πίσω μία φορά με την αιτία· την επόμενη φορά μόνο προειδοποιεί.
  5. bw status (εντολή, όχι hook): σας δείχνει την ίδια κατάσταση.
STOP

Ολοκλήρωση

τεκμήρια δεμένα με τα αρχεία

Ένα τεστ, lint, typecheck ή build μετρά μόνο αν πέρασε, αν ο δικός του κωδικός εξόδου καθόρισε το αποτέλεσμα της γραμμής, αν κανένα αρχείο δεν άλλαξε όσο έτρεχε και αν τα αρχεία είναι ακόμη ακριβώς αυτά στα οποία έτρεξε.

Προαιρετικά

  • exact: μετρά μόνο η πλήρης εντολή, και το cwd ορίζει πού πρέπει να εκτελεστεί.
  • scope (μαζί με exact): μια αλλαγή εκτός των καταλόγων που ορίζονται αφήνει το αποτέλεσμα φρέσκο.
  • ignore (για όλη την policy): η έξοδος που γράφει ένας έλεγχος, όπως το coverage, δεν μετρά ως αλλαγή.
PRETOOLUSE

Παρενέργειες

το πολύ μία φορά, το άγνωστο σταματά

Τα push, η δημιουργία και το merge PR, τα releases, οι δημοσιεύσεις πακέτων και οι δικοί σας προσαρμοσμένοι τύποι χρειάζονται ο καθένας allow από την policy. Μόνο ο κωδικός εξόδου 0 είναι γνωστό αποτέλεσμα.

Έλεγχοι μόνο ανάγνωσης για τη διευθέτηση ενός άγνωστου αποτελέσματος

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

RULESκανόνες που ισχύουν

  • R1

    Μια μη έγκυρη policy απορρίπτει κάθε παρενέργεια αντί να επιστρέψει σε προεπιλογές.

  • R2

    Ένα δικαίωμα που έληξε επιστρέφει σε ask. Μόνο ένας άνθρωπος το παρατείνει, επεξεργαζόμενος την policy.

  • R3

    Εντολές που το Core δεν μπορεί να διαβάσει, όπως eval ή sh -c, θεωρούνται αδιαφανείς και ζητείται έγκριση γι' αυτές.

  • R4

    Το μητρώο είναι μόνο προσθήκης και αλυσιδωτό με hash· το bw verify εντοπίζει εγγραφές που άλλαξαν ή αφαιρέθηκαν και μια μισογραμμένη τελευταία γραμμή, αλλά όχι ολόκληρες εγγραφές κομμένες από το τέλος.

03HostsHOSTS

Πρώτα το Claude Code.

Το Core είναι ανεξάρτητο από host· κάθε host χρειάζεται έναν μικρό adapter. Το Claude Code είναι ο πρώτος και σήμερα ο μόνος που υποστηρίζεται.

Υποστήριξη ανά host και λειτουργικό σύστημα
HostmacOSLinuxWindows
Claude CodeΠρώτος hostΥποστηρίζεται, δοκιμάζεται στο CIΥποστηρίζεται, δοκιμάζεται στο CIΜη δοκιμασμένο
CodexΜόνο V5, παγωμένοΠρογραμματισμένοΠρογραμματισμένοΠρογραμματισμένο
Gemini CLIΜόνο V5, παγωμένοΠρογραμματισμένοΠρογραμματισμένοΠρογραμματισμένο
Qwen CodeΜόνο V5, παγωμένοΠρογραμματισμένοΠρογραμματισμένοΠρογραμματισμένο

Το CI τρέχει το Core σε κάθε pull request.macOS 15 και Ubuntu 24.04, Node 22.23.3 και 24.21.0.

04ΞεκινήστεGET STARTED

Τρεις εντολές, μετά ζητήστε μια αλλαγή.

Απαιτεί Node.js 22.14 ή νεότερο, Git και Claude Code με υποστήριξη plugins.

  1. 1

    Κλωνοποιήστε το Core

    Μία φορά ανά μηχάνημα. Αν είχατε τρέξει το V5 εδώ, μετακινήστε πρώτα το ~/.better-workflows στο ~/.better-workflows-V5 και στρέψτε το SBW_STATE_ROOT σε αυτό.

  2. 2

    Προσθέστε το plugin

    Εγκαταστήστε το ανά αποθετήριο με --scope local, ώστε να μη γράφεται τίποτα σε αρχεία που κάνετε commit.

  3. 3

    Γράψτε μια policy

    Το bw init γράφει το .better-workflows/policy.json. Κάντε το commit ώστε όλοι να έχουν τους ίδιους κανόνες.

  4. Ο πλήρης οδηγός καλύπτει τους δικούς σας ελέγχους, τις παρενέργειες και τα άγνωστα αποτελέσματα. Οδηγός έναρξης

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

Προαιρετικά: τρέξτε και τα δύο σενάρια χωρίς Claude, σε λίγα δευτερόλεπτα.

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

Μετά δοκιμάστε το

Άλλαξε μία γραμμή σε αυτό το αποθετήριο και μην τρέξεις τα τεστ.

Όταν το Claude Code προσπαθεί να ολοκληρώσει, στέλνεται πίσω και ενημερώνεται ποιος έλεγχος λείπει.

05ΌριαLIMITS

Τι σταματά και τι δεν μπορεί να δει.

Μια πύλη είναι χρήσιμη μόνο αν ξέρετε τα όριά της.

Σταματά

Παρατηρήσιμα λάθη

  • Ολοκλήρωση με βάση παρωχημένη ή αποτυχημένη εκτέλεση τεστ, ή μερική όταν ο έλεγχος είναι σημειωμένος ως exact
  • Ένα pipe ή || true που κρύβει μια αποτυχία
  • Επαναλαμβανόμενο push, merge, release ή δημοσίευση
  • Παρενέργειες ενώ μια προηγούμενη είναι ακόμη άγνωστη
  • Απευθείας επεξεργασία της policy ή του μητρώου του από τον agent

Δεν κάνει

Εκτός οπτικού πεδίου

  • Δεν βλέπει παρενέργειες μέσα σε ένα script, εκτός αν η policy κατονομάζει αυτό το script
  • Δεν κρίνει αν τα τεστ σας είναι αρκετά καλά
  • Δεν χτίζει γράφο εξαρτήσεων: ένα scope πρέπει να κατονομάζει καθετί από το οποίο εξαρτάται ένας έλεγχος
  • Δεν μετρά αρχεία που αγνοεί το Git ως μέρος των τεκμηρίων

Αφήνει σε εσάς

Αποφάσεις ανθρώπου

  • Τη διευθέτηση μιας παρενέργειας της οποίας το αποτέλεσμα δεν μπορεί να ξαναδιαβαστεί
  • Την παράταση ενός δικαιώματος πέρα από το expiresAt του
  • Την επιλογή του τι καλύπτει ένα scope
  • Την απόφαση για το πότε μια συνεδρία κάνει κύκλους
Το Core μπλοκάρει τα παραπάνω λάθη. Δεν έχει μετρηθεί αν μειώνει την επανάληψη εργασίας ή τις λανθασμένες αποφάσεις σε μεγάλες εργασίες· γι' αυτό υπάρχει η τρέχουσα περίοδος εσωτερικής χρήσης.
  1. B1Ο parser του shell δεν μεγαλώνει: για μια εντολή που δεν μπορεί να διαβάσει ζητείται έγκριση πριν εκτελεστεί, και ένα τεστ κρυμμένο μέσα σε eval ή sh -c δεν μετρά ποτέ ως τεκμήριο.
  2. B2Το Core απλώς καταμετρά πώς εξελίσσεται μια συνεδρία. Το αν συγκλίνει το κρίνει ο agent ή εσείς.
  3. B3Τα pull requests και τα releases συμφωνούνται μέσω gh· χωρίς αυτό, παραμένουν άγνωστα μέχρι να τα διευθετήσετε.

06ΚατάστασηSTATUS

Πού βρίσκεται το έργο.

Το V6 αντικαθιστά τη μηχανή workflow του V5 με έναν μικρό πυρήνα. Ημερομηνίες ανακοινώνονται όταν επιτυγχάνονται.

  1. DONE Παγωμένο

    V5.0 RC1

    tag V5.0.rc1

    Μηχανή workflow για πολλούς hosts. Παγωμένη στο branch frozen/v5· καμία νέα εργασία.

  2. NOW Σε εξέλιξη

    V6 Core pre-alpha

    packages/bw-core

    Hooks του Claude Code, scope τεκμηρίων, εσωτερική χρήση σε δύο αποθετήρια.

  3. NEXT Μετά την εσωτερική χρήση

    V6 Core alpha

    πρώτο release με tag

    Θα δημοσιευτεί μόλις η περίοδος εσωτερικής χρήσης δείξει πραγματικά εντοπισμένα λάθη και λίγα ψευδή μπλοκαρίσματα. Περισσότεροι hosts θα ακολουθήσουν ως μικροί adapters.

STATEMENTδήλωση

PRE-ALPHA

Το Core είναι ήδη χρησιμοποιήσιμο και τρέχει στα αποθετήρια του ίδιου του maintainer. Η μορφή της policy μπορεί ακόμη να αλλάξει πριν από την alpha.

Όλα εδώ είναι δωρεάν και ανοιχτού κώδικα. Δεν υπάρχει επί πληρωμή βαθμίδα, λογαριασμός ή τηλεμετρία.

LICENSINGάδειες

άδειες
ΜέροςΆδειαΚατάσταση
V6 Core (packages/bw-core)Apache-2.0ενεργό
Ιστότοπος και το υπόλοιπο αποθετήριοAGPL-3.0-onlyενεργό
Plugin V5AGPL-3.0-onlyστο frozen/v5παγωμένο

07ΤεκμηρίωσηDOCS

Όλα βρίσκονται στο αποθετήριο.

Οι οδηγοί είναι γραμμένοι στα αγγλικά και στα παραδοσιακά κινεζικά. Κάθε γλώσσα αυτού του ιστότοπου έχει ένα σύντομο README στο GitHub.

08Συχνές ερωτήσειςFAQ

Συνήθεις ερωτήσεις, ευθείες απαντήσεις.

Κάτι άλλο; Ανοίξτε ένα issue στο GitHub. GitHub Issues

Επιβραδύνει το Claude Code;

Τα hooks που χειρίζονται έναν έλεγχο ή μια παρενέργεια υπολογίζουν το hash του working tree με το Git, κάτι που διαρκεί χιλιοστά του δευτερολέπτου σε ένα κανονικό αποθετήριο. Τα πολύ μεγάλα αποθετήρια πληρώνουν περισσότερο σε κάθε τέτοια κλήση.

Μπορεί να κολλήσει στέλνοντας τον agent πίσω για πάντα;

Στέλνει τον agent πίσω με την αιτία και με το πώς πήγε η συνεδρία ως τώρα: εκτελέσεις, διαδοχικές αποτυχίες, πόσες φορές έχει ήδη σταλεί πίσω. Ο agent μπορεί τότε να σταματήσει και να σας πει καθαρά ποιος έλεγχος αποτυγχάνει συνεχώς.

Μπορεί ο agent να το απενεργοποιήσει;

Όχι απευθείας. Το Core απορρίπτει τις επεξεργασίες της policy και του μητρώου από τον agent, και απορρίπτει το bw init και τη χειροκίνητη διευθέτηση μιας ενέργειας. Η απεγκατάσταση του plugin, ή η αλλαγή αυτών των αρχείων με έμμεσους τρόπους, διέπεται από τους δικούς κανόνες δικαιωμάτων του Claude Code, οπότε κρατήστε αυτές τις ερωτήσεις επιβεβαίωσης ενεργές.

Στέλνει κάτι οπουδήποτε;

Δεν υπάρχει server ούτε τηλεμετρία. Οι μόνες κλήσεις δικτύου του είναι ερωτήματα μόνο ανάγνωσης με τα δικά σας git, gh και npm, για να επιβεβαιωθεί αν μια παρενέργεια συνέβη. Το μητρώο μένει στο .git/better-workflows/.

Τι γίνεται με τα Codex, Gemini CLI ή Qwen Code;

Έτρεχαν το V5, που έχει παγώσει. Το Core είναι ανεξάρτητο από host, και adapters για αυτά σχεδιάζονται μετά την alpha.

Δοκιμή σε δευτερόλεπτα

Η εκτέλεση μιας εντολής δεν είναι απόδειξη. Τα αρχεία είναι.

Τρέξτε το demo χωρίς Claude, μετά εγκαταστήστε το σε ένα αποθετήριο και ζητήστε μια αλλαγή.