Zum Inhalt springen

Loops und Bubbles

Eine Bubble ist ein Agent mit einer Rolle. Jedes Mal, wenn der Loop sie erreicht, macht die Bubble einen Durchgang: Sie liest, was die vorherige Bubble weitergegeben hat, arbeitet (liest Dateien, schreibt Code, führt Befehle aus, wie es ihre Rolle erlaubt) und endet mit einem Urteil.

Die Rollen:

Rolle Was sie tut Darf Dateien schreiben
Architect Plant die Arbeit und deren Struktur Nur Doku
Planner Unterteilt die Arbeit in Karten Nein
Designer Schreibt DESIGN.md und gibt dem Coder eine visuelle Richtung vor Nur Doku
Coder Schreibt den Code Ja
Reviewer Liest die Arbeit, führt den visuellen Review für Apps mit einer Benutzeroberfläche aus Nein
Tester Schreibt und führt Tests aus Ja
Fixer Repariert, was ein Review oder Test gefunden hat Ja
Documenter Schreibt Dokumentation Nur Doku
Researcher Schlägt Dinge im Web nach Nein
Security Überprüft die Arbeit auf Schwachstellen Nein
Creative, Feasibility Schlagen Ideen vor und bewerten sie, für Boards, die ihre eigene Arbeit generieren Nein
Subloop Führt keinen Agenten aus. Öffnet einen Sub-loop und leitet dorthin weiter (siehe unten) Nein
Wait Führt keinen Agenten aus. Hält einen Loop an, bis etwas passiert, wie das Ende eines anderen Loops oder das Eintreffen einer Karte Nein
Custom Deine eigene Bubble: ihre Eingaben, Ausgaben, ihr Zweck und was sie tun darf Wie von dir festgelegt

Jeder Durchgang endet in einem von vier Ergebnissen:

  • PASS und PARTIAL sind die Einschätzung des Agenten selbst, dass die Arbeit gut oder teilweise gut ist.
  • FAIL ist die Einschätzung des Agenten, dass sie es nicht ist. Ein FAIL kann zu einem Fixer weitergeleitet werden.
  • ERROR bedeutet, dass der Agent nie wirklich lief: Der Anbieter war nicht erreichbar, das Modell konnte nicht antworten, eine Einstellung fehlt. Ein ERROR durch einen Ausfall oder eine fehlende Einstellung wird nie an einen Fixer weitergeleitet. Ein Durchgang, bei dem die Schritte ausgehen, tut das.

Ziehe zwei Bubbles aufeinander und sie bilden einen Loop. Ziehe weitere auf den Ring, um sie hinzuzufügen. Die Reihenfolge auf dem Ring ist die Reihenfolge der Durchgänge, und die Verbindungen werden aus dieser Reihenfolge für dich gezeichnet.

Ein Sub-loop hängt an einer Subloop-Bubble in seinem übergeordneten Loop. Wenn die Bedingung der Bubble zutrifft, wartet der übergeordnete Loop, während der Sub-loop läuft, und macht dann dort weiter, wo er aufgehört hat. Standardmäßig ist das der Fall, wenn die Bubble vor ihm fehlschlägt: Ein fehlgeschlagener Review geht an einen Fixer, und der Loop setzt bei der Subloop-Bubble wieder ein.

Die Einstellung Divert when der Subloop-Bubble wählt die Bedingung aus. Jede wird durch ihren Code angezeigt, mit dieser Zeile darunter:

Divert when Was sie testet
ON_FAIL (der Standard) Der Schritt hat einen Fehler gemeldet
VULNERABILITY_FOUND Der Schritt hat einen Fehler gemeldet, derselbe Test wie ON_FAIL, benannt nach einer Sicherheitsüberprüfung
ON_PASS Der Schritt war erfolgreich
TASKS_EMPTY Nichts mehr in der Warteschlange

Der Schritt ist die Subloop-Bubble selbst, die keinen Agenten ausführt: Sie meldet einen Fehler, solange alles vor ihr im Loop immer noch einen meldet, und ist erfolgreich, sobald jeder Fehler beantwortet wurde.

How often wählt zwischen Every time the condition holds und Once, then stay on the main loop.

Jeder Loop, der Code schreibt, besitzt einen Ordner innerhalb des Projekts, und kein Loop darf sich einen teilen. Die Dateitools eines Loops können das gesamte Projekt lesen. Die Dateitools halten einen Loop stets in seinem Ordner. Seine Befehle werden vom Betriebssystem nur dann dort gehalten, wenn Sandbox agent commands in den Einstellungen aktiv ist. Ein Loop ohne Schreib-Bubble benötigt keinen Ordner. Ein Sub-loop schreibt im Ordner seines Haupt-Loops.

Drücke auf Play auf dem Board, um jeden Loop auszuführen, oder auf einem Loop, um nur diesen auszuführen. Mehrere Loops laufen gleichzeitig, jeder auf seiner eigenen Spur. Loops teilen sich die Arbeit über das Task Book und die Dateien auf der Festplatte, nicht über die Konversation der anderen.

  • Pause lässt den laufenden Durchgang zu Ende gehen; die Schaltfläche zeigt dann Stop, was sofort stoppt und diesen Durchgang verwirft.
  • Play nach einer Pause macht dort weiter, wo der Loop aufgehört hat.
  • Ein Loop nimmt niemals eine Draft-Karte; er startet nur mit Approved-Karten. Draft ist der Ort, an dem du die Arbeit überprüfst, bevor ein Loop damit beginnt.

Jeder Loop hat drei Obergrenzen, die in seinen Einstellungen festgelegt werden:

Obergrenze Standard Stoppt den Loop, wenn
Max loop executions 100 er so viele Durchgänge gemacht hat
Max errors per step 8 eine Bubble so oft hintereinander fehlgeschlagen ist
Total loop error cap 15 der Loop insgesamt so oft fehlgeschlagen ist

Ein Loop stoppt auch, wenn eine Bubble immer wieder dieselbe Änderung erzeugt oder wenn er nichts tun kann (zum Beispiel, wenn sich jede Karte noch in Draft befindet). Ein gestoppter Loop nennt den Grund in einem Hinweis und in seinem Panel auf dem Canvas. Ein ratenlimimitierter Loop tut dies nur in seinem Panel. Behebe die Ursache und drücke Play, wodurch die Zähler des Loops zurückgesetzt werden und er dort weiterläuft, wo er gestoppt wurde.

Ratenlimits und Anbieter-Ausfälle verbrauchen die Fehler-Obergrenzen nicht, es sei denn, der Loop hat Continue on error aktiviert. Ein ratenlimitierter Loop wartet und nimmt seine Arbeit selbst wieder auf, wenn der Anbieter angibt, wie lange gewartet werden soll; ein Ausfall erzeugt einen Hinweis und wartet darauf, dass du Play drückst.