Files
ClawdDotNet/docs/Organisation-Konzept.md
T
RichardandClaude Opus 5.5 b53396a754 Organisation-Konzept: Einstellungen an der Einheit ohne Uebertrumpfen
Festlegung des Nutzers: Einheiten-Einstellungen sind entweder Sammelwerte, die in
die Agenten geschrieben werden (Vorgabe nur fuer neue Mitglieder, Warnung bei
Ausreissern wie Spezialisten), oder Regeln ohne Gegenstueck am Agenten
(Rechte-Obergrenze, beim Schreiben geprueft; Parallelitaet je Einheit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 11:55:19 +02:00

1401 lines
79 KiB
Markdown

# Organisation — 50 bis 100 Agenten geordnet zusammenarbeiten lassen
*Stand: 24. September 2026 (ergänzt um 7a, 9a, 10a, Einstellungen an der Einheit, Budgetende, Füllarbeit). Konzept, noch nicht gebaut.*
> Herkunft: Richtungsentscheidung des Nutzers am 2026-09-21. Die bisherige Regel im
> [InstanceSetupGuide](InstanceSetupGuide.md) („mehr als 5 Agenten kritisch
> hinterfragen") ist damit zurückgezogen.
>
> **Das Ziel:** ClawdDotNet ist der Harness — das Büro, der Konferenzraum, die Groupware
> der Agenten. 50 bis 100 Agenten arbeiten parallel an einem großen Vorhaben, nie alle
> gleichzeitig, aber alle an derselben Sache.
>
> **Universell, nicht für einen Fall.** Ein Baukasten für eine KI-Firma. Der Onlinehandel
> in diesem Dokument ist ein Beispiel zur Verdeutlichung, kein Bauplan — andere Gebilde
> haben andere Organigramme, und auch die sollen sich abbilden lassen. Was das Produkt
> mitbringt, sind Struktur und Mittel. Was eine bestimmte Firma ausmacht, sind Daten.
---
## 1 — Was an der alten Regel richtig war und was falsch
Richtig: Der Aufwand steigt quadratisch. Falsch: dass er an der Zahl der Agenten hängt.
Er hängt an der Zahl der **Verbindungen**. Zehn Agenten, von denen jeder jeden ansprechen
darf, sind 45 mögliche Kanäle. Hundert Agenten in Teams von sieben, die nur ihre
Nachbarn und ihre Leitung kennen, sind rund 700 — bei zehnmal so vielen Agenten nur
fünfzehnmal so viele Kanäle statt hundertmal.
**Die Entwurfsfrage lautet also nicht „wie viele Agenten?", sondern „wer muss mit wem
reden?"** Ein Agent, der drei Nachbarn und eine Leitung kennt, kostet gleich viel, ob die
Instanz zehn oder hundert Agenten hat.
Der Logistiker spricht nie mit dem Amazon-Anzeigen-Agenten. Muss es doch einmal sein,
trägt seine Abteilungsleitung es in die Leitungsrunde, und von dort geht es an die
Leitung der Gegenseite. Das ist keine Bürokratie, sondern der Grund, warum echte
Organisationen mit tausend Menschen funktionieren und eine Gruppenchat-Gruppe mit
fünfzig nicht.
### Was das Produkt mitbringt und was die Firma ausmacht
Die Trennung entscheidet darüber, ob daraus ein Baukasten wird oder eine
Handelssoftware. Sie ist scharf zu halten:
| Im Produkt | In der Instanz |
|---|---|
| Der **Baum**: Einheiten, Leitung, Mitgliedschaft, Vererbung | *Welche* Abteilungen es gibt und wie sie heißen |
| Die **Mittel**: Delegation, Eskalation, Konflikt, Besprechung, Beschluss | *Wann* eskaliert wird und wer entscheidet |
| Der **Werkzeugkasten** (Abschnitt 7) | Welche Werkzeuge welche Einheit bekommt |
| Die **Grenzen**: Rechte, Budgets, Parallelität, Freigaben | Wie hoch sie stehen |
Im Produkt steht nirgends das Wort „Einkauf". Eine Abteilung ist eine Einheit mit einem
Namen, und ob sie Einkauf, Redaktion, Labor oder Kanzlei heißt, ist eine Zeile in einer
Datei.
**Daraus folgt die Organisationsvorlage (#691):** Eine Struktur — Einheiten, Rollen,
deren Aufgaben, Werkzeuge, Rechte und Budgets — ist eine beschreibbare, importierbare,
weitergebbare Datei. Dieselbe Idee wie bei den Basisagenten
([Basisagenten-Konzept](Basisagenten-Konzept.md)), eine Ebene höher: dort eine Rolle,
hier ein ganzes Haus. Wer eine Vorlage „Onlinehandel" oder „Redaktion" schreibt, hat
damit keinen Code geschrieben.
---
## 2 — Was heute bei 50 Agenten bricht
Nicht Meinung, sondern Code-Stand 0.1.15. Das ist die eigentliche Antwort auf die Frage,
was fehlt: **zwischen „Instanz" und „Agent" gibt es keine Ebene.** Alles, was heute nicht
am einzelnen Agenten hängt, ist instanzweit — und damit ein gemeinsamer Engpass.
| Stelle | Heute | Bei 50 Agenten |
|---|---|---|
| `AgentComm.list_agents` | liefert **alle** anderen Agenten, flach, mit Name, Rolle, Modell, Zustand | 49 Einträge im Prompt jedes Fragenden. Der Logistiker erfährt, dass es einen Amazon-Anzeigen-Agenten gibt — genau das, was er nicht wissen soll |
| `AgentComm.send_message` | **wartet auf die Antwort** des Zielagenten | Eine Leitung, die vier Teams fragt, blockiert durch vier Läufe hindurch. Eine Besprechung ist kein Funktionsaufruf |
| `MaxDelegationDepth = 3` | drei Weitergaben | Vorstand → Abteilung → Team → Agent ist bereits erschöpft |
| Scanner: `Task.WhenAll(claimed…)` | **unbegrenzt parallel** | 50 fällige Aufgaben um Punkt 9 Uhr sind 50 gleichzeitige Modellaufrufe. Ratengrenzen, Kostenspitze — und die Budgetprüfung je Lauf lässt sie alle gleichzeitig passieren |
| Scanner: `TaskQuery { Limit = 500 }` | stille Obergrenze | 100 Agenten mit je fünf Terminaufgaben liegen darüber. Aufgaben fallen lautlos aus dem Takt |
| Arbeitsbereiche | genau zwei: `personal` und `shared` | Buchhaltung und Einkauf teilen sich einen Dorfplatz. Eine Abteilungsablage gibt es nicht |
| `sharedAccessLevel` | eine Stufe für den ganzen gemeinsamen Bereich | „Buchhaltung darf ihre Ablage schreiben, die von Marketing nur lesen" ist nicht ausdrückbar |
| Taskboard | ein Brett für alles; `task_list` kappt bei 8.000 Zeichen | Auf der Testinstanz mit 7 Agenten stehen 159 Aufgaben. Mit 50 Agenten ist die Liste als Übersicht wertlos |
| Budget | zwei Ebenen: Agent und Instanz | „Marketing darf 20 $/Tag" ist nicht ausdrückbar |
| Freigaben | eine Warteschlange, ein Mensch | Der Mensch wird zum Flaschenhals der gesamten Organisation |
Zwei dieser Punkte sind schon heute Fehler, unabhängig von der Größe: die unbegrenzte
Parallelität und die stille Kappung bei 500. Sie gehören sofort behoben (#682).
---
## 3 — Die fehlende Ebene: Einheiten
Eine **Einheit** (Abteilung, Team, Gruppe) ist ein Knoten in einem Baum. Sie hat einen
Namen, eine Leitung, Mitglieder und Untereinheiten. Alles, was heute instanzweit ist,
bekommt sie als Ebene dazwischen:
```
Instanz „Onlinehandel"
├── Einkauf ──────────── Leitung: einkauf-leitung
│ ├── Produktsuche ──── produktscout-1, produktscout-2, trendbeobachter
│ ├── Lieferanten ───── lieferantensuche, konditionen, nachverhandlung
│ └── Qualität ──────── musterpruefung
├── Buchhaltung ───────── Leitung: buchhaltung-leitung
│ ├── Kreditoren ────── rechnungspruefung, zahlungslauf
│ ├── Überwachung ───── zahlungsverkehr, mahnwesen
│ └── Auswertung ────── monatsabschluss, kennzahlen
├── Marketing ─────────── Leitung: marketing-leitung
│ ├── Webshop ───────── shop-texte, shop-preise, shop-bilder
│ ├── Marktplätze ───── amazon-listing, amazon-anzeigen, ebay-listing, …
│ └── Inhalte ───────── social, newsletter
├── Logistik ──────────── Leitung: logistik-leitung
│ ├── Sendungen ─────── sendungsverfolgung, problemfaelle
│ └── Retouren ──────── retourenbearbeitung
└── Betrieb ───────────── (Basisagenten, siehe Basisagenten-Konzept)
```
### Was die Einheit trägt
| Was | Heute | Mit Einheiten |
|---|---|---|
| **Adressbuch** | alle | die eigene Einheit, die eigene Leitung. Eine Leitung sieht zusätzlich die Leitungen der Geschwistereinheiten |
| **Arbeitsbereich** | `personal`, `shared` | `personal` plus **mehrere benannte gemeinsame Bereiche** mit Mitgliederliste — siehe unten |
| **Rechte** | je Agent | vererbt von der Einheit, je Agent verschärfbar. Was die Einheit nicht darf, kann ein Mitglied nicht bekommen |
| **Taskboard** | ein Brett | ein Brett je Einheit; `task_list` zeigt die eigene Einheit, die Leitung sieht die Untereinheiten |
| **Budget** | Agent, Instanz | Grenzen bleiben am Agenten; die Einheit summiert auf und meldet Abweichungen — siehe Abschnitt 8a |
| **Freigaben** | ein Mensch | die Leitung innerhalb ihrer Grenzen, der Mensch für alles darüber (Geld, Außenwirkung) |
| **Parallelität** | unbegrenzt | je Einheit und je Instanz eine Zahl gleichzeitiger Läufe, der Rest wartet |
### Einstellungen an der Einheit: nie zwei Werte, die sich übertrumpfen
*Festgelegt am 2026-09-24 durch den Nutzer, in zwei Schritten.*
Einstellungen lassen sich an der Einheit speichern und bearbeiten. **Aber es gibt nie
zwei Werte für dieselbe Sache, von denen einer den anderen zur Laufzeit übertrumpft.**
Daraus folgen genau zwei Arten von Einheiten-Einstellungen:
**1. Sammelwerte, die in die Agenten geschrieben werden.** Alles, was es auch am Agenten
gibt: Tagesbudget, Modell, Verhalten beim Budgetende (#716). Wer für das Marketing das
Tagesbudget setzt, schreibt den Wert in jeden Agenten darunter. Die Einheit merkt sich den
Wert nur als **Vorgabe für Agenten, die neu hinzukommen**, nie als Grenze, die im
Hintergrund gilt. Danach steht am Agenten, was gilt, und nur dort.
- **Vorschau** vor dem Schreiben: welche Agenten sich wie ändern, Audit-Eintrag je Agent.
- **Warnung bei Ausreißern:** Weicht der bisherige Wert eines Agenten massiv von denen
seiner Kollegen ab, wird er in der Vorschau hervorgehoben und ist standardmäßig
**nicht** angehakt. Gemeint ist der Spezialist, der bewusst viele Tokens verbraucht und
sonst mit dem Wert seiner Kollegen kaputtkonfiguriert würde. Der Mensch entscheidet je
Ausreißer, ob er mit überschrieben wird.
- Die Vorschau bietet zwei Rechenwege: **ein Wert je Agent** („jeder bekommt 10 $") oder
**ein Gesamtbetrag, verteilt** („das Marketing bekommt 100 $"). Beim Verteilen
vorgeschlagen: im Verhältnis der bisherigen Werte, damit ein Spezialist seinen
größeren Anteil behält.
**2. Regeln, die es nur an der Einheit gibt.** Sie haben kein Gegenstück am Agenten und
können deshalb mit nichts konkurrieren:
- **Rechte-Obergrenze.** „Was die Einheit nicht darf, kann ein Mitglied nicht bekommen"
bleibt, weil sie eine Sicherheitsgrenze ist. Sie wird **beim Schreiben** geprüft, nicht
zur Laufzeit darübergelegt: Eine Rechteänderung am Agenten, die über die Obergrenze
hinausginge, wird abgewiesen. Senkt man die Obergrenze, zeigt die Vorschau, welchen
Agenten dadurch Rechte entzogen werden, und schreibt es in sie hinein. Damit gilt auch
hier: Was am Agenten steht, gilt.
- **Parallelität je Einheit** (#685). Ein Agent läuft ohnehin nur einmal gleichzeitig,
die Zahl gehört also nur der Einheit. Bis #685 gebaut ist, gilt sie instanzweit
(`maxParallelTaskRuns`, #682).
**Grenzen der Leitung** (Abschnitt 12) sind ein Sammelwert: Sie stehen am
Leitungsagenten. Beim Wechsel der Leitung zeigt die Vorschau, was mit umzieht.
### Beliebig tief, und beweglich
Eine Einheit enthält Einheiten, und die wieder Einheiten — **ohne feste Grenze**.
Marketing hat Webshop, Marktplätze und Inhalte; Marktplätze hat Amazon, eBay und Otto;
Amazon hat Listing, Anzeigen und Rezensionen. Wie tief ein Haus gebaut wird, entscheidet
das Haus.
Ebenso wichtig: **Eine Einheit oder ein Agent muss sich nachträglich verschieben
lassen.** Ein Projekt wächst; was als ein Marketing-Agent begann, ist nach einem halben
Jahr ein Team von sechs, und dieses Team gehört unter eine Zwischenebene. Wäre der Baum
beim Anlegen festgelegt, müsste man die Instanz neu bauen, um sie wachsen zu lassen.
Das Konzept setzt das ohnehin schon voraus: „Wer einem Agenten mehr Reichweite geben
will, verschiebt ihn im Baum" steht in Abschnitt 1 als der saubere Weg, Rechte zu
ändern. Ohne Umzug wäre das ein leeres Versprechen.
**Was ein Umzug berührt** — und warum er nicht nebenbei passiert:
| Was | Was sich ändert |
|---|---|
| Adressbuch | Neue Nachbarn, neue Leitung. Alte Nachbarn verschwinden aus der Sicht |
| Rechte | Werden von der neuen Einheit geerbt. Eine Verschärfung greift sofort; eine Erweiterung ist eine Rechteänderung und freigabepflichtig |
| Arbeitsbereich | Die Einheitsablage wechselt. Was der Agent dort abgelegt hat, bleibt bei der alten Einheit — es gehört ihr, nicht ihm |
| Taskboard | Offene Aufgaben ziehen mit, Verweise auf sie bleiben gültig |
| Budget | Der Agent zählt ab sofort gegen ein anderes Einheitsbudget |
| Eskalationsweg | Läuft ab sofort über die neue Leitung |
| Laufende Vorgänge | Eine Eskalation, die bei der alten Leitung liegt, bleibt dort — sie kennt den Fall |
Drei Festlegungen dazu:
1. **Bei gestoppter Instanz.** Ein Umzug während laufender Läufe hieße, dass ein Agent
mitten im Lauf andere Rechte bekommt. Der Manager fährt die Instanz herunter, zieht
um, startet neu — dieselbe Vorgehensweise wie heute bei Änderungen an
Aufgabendateien.
2. **Die Betroffenen werden unterrichtet.** Wer verschoben wird, bekommt es gesagt: neue
Einheit, neue Leitung, was sich an seinen Rechten ändert. Die abgebende und die
aufnehmende Leitung ebenso. Ein Agent, der seine Leitung aus einem Prompt erschließen
muss, eskaliert an die falsche Stelle.
3. **Der Umzug steht im Audit.** Wer wen wann wohin verschoben hat, mit Begründung. Eine
Strukturänderung ist eine Rechteänderung, und die gehört nachvollziehbar — Linie von
#205 und #641.
### Arbeitsbereiche: aus einem gemeinsamen werden viele
Heute gibt es genau zwei — `personal` und `shared` —, und `shared` ist ein Dorfplatz, auf
dem jeder alles sieht. Bei fünfzig Agenten ist das untragbar: Ein Marketing-Agent hat auf
der Ablage der Buchhaltung nichts zu suchen.
**Der Ordner `SharedWorkspace` wird deshalb zu `SharedWorkspaces` — einem Behälter für
viele.** Jeder darin ist ein eigener Bereich mit Namen, Eigentümer und Mitgliederliste:
```
SharedWorkspaces/
├── einkauf/ Mitglieder: Einkauf (alle Untereinheiten)
├── einkauf-lieferanten/ Mitglieder: Team Lieferanten
├── buchhaltung/ Mitglieder: Buchhaltung — Marketing sieht das nie
├── leitungsrunde/ Mitglieder: die Abteilungsleitungen
├── artikelstamm/ abteilungsübergreifend: Einkauf schreibt, Marketing liest
└── haus/ alle — für das wenige, das wirklich alle angeht
```
Vier Festlegungen:
1. **Jede Einheit bekommt beim Anlegen ihren eigenen Bereich**, Mitglieder sind ihre
Agenten und ihre Untereinheiten. Das ist der Normalfall, und er kostet keine
Entscheidung.
2. **Abteilungsübergreifende Bereiche sind gewollt und ausdrücklich.** Der Artikelstamm
gehört dem Einkauf und wird vom Marketing gelesen — das ist eine Festlegung mit
benanntem Eigentümer, kein Nebenprodukt. Genau das, was Abschnitt 9 verlangt.
3. **Das Recht steht am Bereich, nicht am Agenten.** Heute trägt jeder Agent ein
`sharedAccessLevel` für den *einen* gemeinsamen Bereich. Künftig hat jeder Bereich
seine Mitglieder mit Stufe (lesen / schreiben / verwalten). Wer nicht auf der Liste
steht, sieht den Bereich nicht — auch nicht, dass es ihn gibt.
4. **Ein Umzug ändert die Mitgliedschaft, nicht den Inhalt.** Zieht ein Agent um, verliert
er den alten Bereich und bekommt den neuen. Was er dort abgelegt hat, bleibt liegen —
es gehört der Einheit.
Für bestehende Instanzen bleibt `workspace: "shared"` gültig und zeigt auf den einen
Bereich, den es dort gibt. Ohne das bräche jede Aufgabe, die heute läuft.
### Die eine Regel, die alles zusammenhält
**Ein Agent kennt nur seine Einheit und seine Leitung.** Alles andere geht über die
Leitung. Das ist keine Höflichkeitsform, sondern das, was die Kosten deckelt: Der
Zuschnitt des Adressbuchs *ist* die Organisationsstruktur.
### Die Ausnahmen — vollständig, damit sie sich nicht vermehren
Jede Ausnahme von dieser Regel ist ein Loch in der Kostenbremse *und* in der Sperre
gegen eingeschleuste Anweisungen. Es gibt genau vier, und sie stehen hier zusammen,
damit niemand eine fünfte nebenbei einführt:
| Ausnahme | Wer sieht was | Warum sie nötig ist |
|---|---|---|
| **Besprechung** (#686) | Teilnehmer sehen die Beiträge der anderen Teilnehmer | Abstimmung ist der Zweck. Begrenzt: nur für die Dauer der Besprechung, nur die Tagesordnung |
| **Konfliktentscheidung** (#689) | Die entscheidende Stelle sieht beide Seiten | Sonst entscheidet sie einseitig |
| **Fehlerablage** (#696) | Der Eigentümer eines Skripts sieht dessen Fehlschläge aus allen Einheiten | Wer ein Werkzeug verantwortet, muss sehen, wie es scheitert. Eng: Fehlerlogs, nicht Arbeitsergebnisse |
| **Aufsicht und Sicherheit** (#680, #658) | Lesen über alle Einheiten | Eine Aufsicht, die nur ihre eigene Einheit sieht, ist keine. Lesend, nie schreibend, je Agent abschaltbar |
Alle vier sind **lesende** Ausnahmen und keine schreibenden. Keine von ihnen gibt einem
Agenten einen neuen Gesprächspartner.
Und weil das Adressbuch aus der Struktur kommt statt aus einer Einstellung, kann man es
nicht versehentlich aufweichen. Wer einem Agenten mehr Reichweite geben will, verschiebt
ihn im Baum — sichtbar und begründbar.
---
## 4 — Die Besprechung als eigenes Mittel
Der Vorschlag nennt den Konferenzraum, und das ist mehr als ein Bild. Heute gibt es zwei
Arten, wie Agenten sich austauschen: `send_message` (synchron, wartet, ein Gegenüber) und
das Taskboard (asynchron, ein Auftrag, ein Bearbeiter). Für „die Teamleitungen stimmen
sich ab" taugt beides nicht.
Eine **Besprechung** ist:
- **ein Termin**, kein Aufruf — sie steht im Taskboard wie jede andere wiederkehrende Sache
- **eine Tagesordnung**, die vorher feststeht, und eine Teilnehmerliste, die vorher feststeht
- **eine Leitung**, die eröffnet, die Runde macht und das Ergebnis schreibt
- **eine Runde je Teilnehmer**, nicht *n* Nachrichten: jeder Teilnehmer wird einmal
aufgerufen, bekommt die Tagesordnung und die bisherigen Beiträge, antwortet einmal
- **ein Protokoll** als Ergebnis — ein Dokument in der Ablage der Einheit, plus Aufgaben
für das, was beschlossen wurde
Damit kostet eine Leitungsrunde mit sechs Teilnehmern sieben Läufe, nicht sechs mal
sechs. Und sie hinterlässt etwas Nachlesbares statt einer Kette von Nachrichten, die
niemand rekonstruieren kann.
Das ist auch der Weg des Beispiels aus dem Vorschlag: Der Logistiker meldet ein Problem
mit Amazon-Sendungen an seine Leitung. Die bringt es in die Leitungsrunde. Die
Marketing-Leitung nimmt es mit und legt in ihrem Brett eine Aufgabe für den
Amazon-Anzeigen-Agenten an. Vier Läufe, kein direkter Kanal, ein Protokoll.
---
## 5 — Eskalation, Konflikt, Beschluss
Der Fall aus dem Vorschlag, Schritt für Schritt:
> Einkäufer A bekommt eine Auftragsbestätigung per Mail und will das Lieferdatum in die
> Bestellung eintragen. Er findet dafür kein Feld. Er meldet es seiner Teamleitung. Die
> findet auch keines, hält es aber für wichtig und gibt es an die DevOps-Leitung. Die
> hält das Feld für überflüssig. **Zwei Abteilungsleitungen sind uneins.** Das muss eine
> Ebene höher — zum Menschen, oder zu einem CEO-Agenten mit starkem Modell, der selten
> läuft, aber wichtige Entscheidungen trifft.
Darin stecken drei verschiedene Dinge, die auch drei verschiedene Mittel brauchen.
### Die Voraussetzung: ein belastbarer Negativbefund
„Ich finde kein Feld dafür" muss eine **Feststellung** sein, keine Vermutung. Sonst
eskaliert die Organisation Einbildungen.
Heute wäre es eine Vermutung. Das Datenbank-Werkzeug kennt genau drei Aktionen —
`query`, `insert`, `upsert`. Es gibt **keine Möglichkeit, nach dem Schema zu fragen**.
Auf MySQL käme ein Agent mit `SHOW COLUMNS` durch den SqlGuard (er zählt als lesend),
aber nichts sagt ihm, dass er das darf; auf SQLite steht `PRAGMA` auf der Verbotsliste,
dort ist Nachsehen gar nicht möglich. Ein Modell, das die Spalte nicht kennt, rät sie —
im Testbetrieb nachweislich und wiederholt (#676).
**Ohne Schemaauskunft gibt es die ganze Geschichte nicht.** Sie ist damit Vorbedingung,
nicht Beiwerk — und mit #676 ohnehin schon gemeldet.
### Eskalation: nach oben, nie zur Seite
Eine **Eskalation** ist: „Ich komme hier nicht weiter, das muss jemand über mir
entscheiden oder veranlassen." Sie geht immer an die eigene Leitung, nie an einen
beliebigen anderen Agenten und nie über Ebenen hinweg.
Der Weg fällt damit aus dem Baum heraus, ohne dass ihn jemand konfigurieren muss — das
ist der Punkt, an dem sich die Struktur auszahlt. Wer eskaliert, kennt nur einen
Empfänger: seinen Vorgesetzten.
Technisch ist eine Eskalation eine Aufgabe an die Leitung, mit dem auslösenden Vorgang
als Anhang: Was wurde versucht, was fehlt, was wäre nötig. Die Leitung hat drei
Antworten: **selbst erledigen**, **entscheiden** („nimm Feld X") oder **weiter nach
oben**.
Die zweite Antwort geht nach unten und ist trotzdem kein Verstoß gegen „nur nach oben"
(siehe unten): Eine Entscheidung schließt den Vorgang, statt ihn weiterzureichen. Was
nicht erlaubt ist, ist ein Vorgang, der ungelöst nach unten zurückwandert — daraus wird
eine Schleife, in der jede Ebene glaubt, eine andere sei zuständig.
### Konflikt: entschieden wird beim niedrigsten gemeinsamen Vorgesetzten
Ein **Konflikt** ist etwas anderes: Zwei Einheiten sind uneins, und keine ist der anderen
weisungsbefugt. Einkauf sagt „das Feld ist nötig", DevOps sagt „ist es nicht".
Die Zuständigkeit fällt wieder aus dem Baum, als eine Regel, die für jedes Organigramm
gilt:
> **Ein Konflikt wird bei der niedrigsten Stelle entschieden, die beiden Seiten
> übergeordnet ist.**
Einkauf-Leitung gegen DevOps-Leitung: Die nächste gemeinsame Stelle ist die Spitze —
also Mensch oder CEO-Agent. Zwei Teams *innerhalb* des Einkaufs: die Einkaufsleitung, und
niemand darüber wird behelligt. Dieselbe Regel, zwei sehr verschiedene Wege, keine
Konfiguration.
Ein Konflikt ist ein eigener Vorgang mit beiden Standpunkten, nicht eine Aufgabe, die
zwischen zwei Abteilungen hin- und herwandert. Wer ihn eröffnet, sagt, worüber gestritten
wird; beide Seiten bekommen einmal das Wort; die zuständige Stelle entscheidet.
**Und er klettert nicht, er wird zugestellt.** Hier gilt „nie über Ebenen hinweg"
ausdrücklich *nicht*: Die zuständige Stelle ergibt sich rechnerisch aus dem Baum, also
geht der Vorgang direkt dorthin. Müsste er sich Ebene für Ebene hocharbeiten, zahlte man
bei einem tiefen Haus vier Läufe an Leitungen, die gar nicht entscheiden können.
Die dazwischenliegenden Ebenen werden **vermerkt, nicht befragt**: In ihrer Übersicht
steht, dass unterhalb von ihnen ein Konflikt entschieden wird. Das kostet keinen Lauf und
nimmt ihnen trotzdem nicht die Sicht auf ihren eigenen Bereich.
### Beschluss: eine Entscheidung, die nicht hält, wird wieder gestellt
Das ist die Stelle, an der so ein Aufbau normalerweise scheitert. Ist die Entscheidung
nur eine Antwort in einem Vorgang, dann kommt dieselbe Frage nächste Woche vom nächsten
Einkäufer — und wird erneut durch vier Ebenen getragen.
Ein **Beschluss** ist deshalb ein eigener, dauerhafter Datensatz: Frage, Entscheidung,
Begründung, wer entschieden hat, wann, mit welcher Reichweite. Er ist für alles unterhalb
der entscheidenden Stelle bindend, und er ist auffindbar, bevor eskaliert wird.
Genau dieselbe Bewegung wie zweimal heute: die Dauerfreigabe aus #641 („das musst du
nicht jedes Mal fragen") und die Dublettenbremse aus #674 („diesen Befund gibt es
schon"). Eine Organisation, die sich nicht erinnert, was sie entschieden hat, bezahlt
jede Entscheidung mehrfach.
### Stille Post vermeiden: weitergegeben wird ein Verweis, keine Nacherzählung
Eine Meldung, die vier Ebenen durchläuft, wird viermal neu formuliert — von Modellen,
die kürzen, glätten und das für wichtig halten, was sie für wichtig halten. Am Ende
entscheidet die Spitze über eine Nacherzählung der Nacherzählung.
Das ist kein Nebenrisiko. Es ist die Art, wie ein solcher Aufbau leise falsch wird: Alle
Beteiligten arbeiten korrekt, und die Entscheidung stützt sich trotzdem auf etwas, das
niemand so gesagt hat.
> **Die Regel: Jede Weitergabe hängt an, sie ersetzt nicht.** Der Vorgang trägt den
> Verweis auf den Ursprung — RunId, Aufgabe, Fehlerablage, Dokument. Jede Ebene fügt ihre
> Einschätzung hinzu und lässt das Darunterliegende stehen. Wer entscheidet, kann bis zum
> Original zurückgehen, ohne jemanden zu fragen.
Das ist dieselbe Festlegung wie beim Aufgabenrumpf, der nur ergänzt und nie überschrieben
wird (#677) — hier für den Weg statt für das Dokument.
**Das Praktische daran ist die Trennung von Verweis und Inhalt.** Würde jede Ebene den
vollen Text anhängen, wächst der Vorgang mit jeder Stufe und kostet in jedem Folgelauf
mehr. Also: Der **Verweis** wandert mit, der **Inhalt** bleibt liegen und wird geholt, wer
ihn braucht. Eine Zusammenfassung darf danebenstehen — nie anstelle.
Wo das konkret gilt (#697):
| Weg | Was mitwandert |
|---|---|
| Eskalation (#689) | RunId, Aufgabe, Fehlerablage; jede Ebene ergänzt, keine ersetzt |
| Besprechung (#686) | Das Protokoll verweist auf die Beiträge, statt sie wegzukürzen |
| Delegation | Eine Aufgabe, die aus einer anderen entsteht, zeigt auf ihren Ursprung |
| Aufsicht (#680) | Der Vorschlag trägt den Beleg aus dem Audit |
| Stichprobe (#693) | Geprüft wird gegen das Gestempelte, nicht gegen den Bericht |
| Skriptfehler (#696) | Die Fehlerablage, nicht der abgetippte Fehlertext |
### Damit es endet
Ohne Regeln läuft so etwas heiß. Vier, die nicht verhandelbar sind:
1. **Nur nach oben.** Ein Vorgang kann nicht zurück nach unten wandern, außer als
Entscheidung. Sonst kreist er.
2. **Jede Stufe kostet.** Eine Eskalation über vier Ebenen sind mindestens vier Läufe,
plus ein starkes Modell an der Spitze. Eskalationen gehören gezählt und gedeckelt —
und eine Einheit, die alles nach oben reicht, ist selbst ein Befund für die Aufsicht
(#680).
3. **Erst nachsehen.** Vor dem Eskalieren: Gibt es zu dieser Frage schon einen Beschluss?
Gibt es den Vorgang schon (#674)?
4. **Die Spitze ist endlich.** Was der Mensch nicht entscheidet, bleibt offen — sichtbar
offen, nicht stillschweigend versandet.
## 6 — Die Entscheidungsinstanz an der Spitze
Der CEO-Agent aus dem Vorschlag ist eine gute Idee mit einer Bedingung: Er ist eine
**Rolle**, keine Person, und die Rolle muss auch ein Mensch ausfüllen können. Sonst ist
der Baukasten auf ein Firmenbild festgelegt.
Die Spitze des Baums ist eine Entscheidungsinstanz, und sie lässt sich besetzen mit:
- **einem Menschen** — Vorgänge landen in der Freigabe-Ansicht und warten
- **einem Agenten** — starkes Modell (etwa Fable 5), läuft selten, entscheidet und
begründet
- **beidem, mit Frist** — der Mensch zuerst; antwortet er binnen einer einstellbaren
Zeit nicht, entscheidet der Agent und legt die Entscheidung vor. Für einen Betrieb, der
nachts weiterlaufen soll, ist das der interessante Fall.
### Was ein entscheidender Agent darf und was nicht
Ein Modell, das entscheidet, ist etwas anderes als ein Modell, das arbeitet. Deshalb:
- Er entscheidet **Fragen**, er führt sie nicht aus. Aus einem Beschluss wird eine
Aufgabe für die zuständige Einheit — er selbst rührt keine Datenbank an.
- Er hat **kein Werkzeug mit Außenwirkung**. Keine Mail, kein Geld, keine Veröffentlichung.
- Er **ändert die Struktur nicht**. Agenten anlegen, verschieben, Rechte oder Grenzen
heraufsetzen bleibt beim Menschen — Linie von #205, #641 und #687.
- Er **begründet jede Entscheidung**, und die Begründung steht im Beschluss. Eine
Entscheidung ohne Begründung ist für alle darunter nicht anwendbar und für den
Menschen nicht überprüfbar.
Und eine Grenze, die man leicht übersieht: **Ein CEO-Agent macht die Organisation nicht
richtiger, nur schneller.** Er entscheidet Fragen, deren Datengrundlage aus derselben
Instanz kommt. Was er beschließt, sollte der Mensch stichprobenartig nachlesen — die
Beschlusssammlung ist dafür genau der richtige Ort.
## 7 — Der Werkzeugkasten
Der Vorschlag nennt es zu Recht in einem Atemzug mit der Struktur: Ein Haus voller
Agenten ohne Werkzeuge ist eine Konferenz ohne Tagesordnung.
**Was es gibt** (Stand 0.1.15): FileRW, Database, Mail, WebFetch, WebMonitor, DirectAPI,
FTP, Taskboard, Memory, AgentComm, AgentEditor, AgentSpawn, SocialMediaManager, Telegram,
RocketChat.
Für den Beispielfall trägt das schon weit: Die Auftragsbestätigung kommt per **Mail**, die
Bestellung steht in der **Datenbank**, der Marktplatz hängt an **DirectAPI**.
### Keine Plattformen anbinden — auch nicht als MCP
Die Versuchung ist, fünfzig Einzelanbindungen zu bauen: Amazon, eBay, Shopify, DHL,
DATEV. Das ist die Falle. Jede veraltet, und keine trifft die Firma, die als Nächstes
kommt.
Ein MCP-Server je Plattform ist dieselbe Falle mit einem anderen Etikett. Er verlagert
die Pflege nur nach außen: Man ist weiterhin darauf angewiesen, dass jemand genau diese
Anbindung schreibt und aktuell hält.
**Das Produkt gibt dem Agenten Fähigkeiten, keine Anschlüsse.** Eine API aufrufen. Eine
Webseite abrufen. Eine Datenbank befragen. Eine Mail lesen. Was daraus eine
Amazon-Anbindung macht, ist die Kenntnis über Amazon — im Auftrag, im Gedächtnis und in
Skripten, die die Instanz selbst hervorbringt.
### Wo Spezifisches hingehört: in Skripte — aber nicht in die Hand dessen, der sie braucht
Braucht der Marktplatz-Agent eine wiederkehrende, exakt zugeschnittene Operation, dann
entsteht dafür ein Skript. **Er schreibt es nicht selbst.**
Ein Anzeigen-Agent, der programmiert und beliebigen Code ausführt, hat Rechte, die seine
Arbeit nicht braucht — und das ist keine Kleinigkeit, sondern die Umkehrung des
Grundsatzes, dass jeder Agent genau die Rechte bekommt, die er zum Arbeiten benötigt.
**Schreiben und Benutzen sind zwei verschiedene Rechte.** Die Lieferkette:
```
Anzeigen-Agent „Ein Skript, das die Kampagnenberichte
│ Bedarfsmeldung zusammenfasst, würde mir X ersparen.
↓ Eingaben: …, Ausgabe: …, Fehlerfälle: …"
Marketing-Leitung prüft: wirklich nötig? wirklich wiederkehrend?
│ weiterleiten
↓
Entwicklungs-Leitung priorisiert, beauftragt
│
↓
Entwickler-Agent schreibt, testet — DIESER darf schreiben
│
↓
Prüfung und Freigabe (#657) Vorprüfung, Security-Einschätzung, Mensch
│
↓
Anzeigen-Agent bekommt Zugang zu GENAU DIESEM Skript
│ Fehlermeldung über die Befehlskette zurück
↓
Entwickler-Agent bessert nach → neue Prüfung, neue Freigabe
```
Der Anzeigen-Agent darf dabei mehr als nur „wäre schön": eine ausgearbeitete
Beschreibung — Eingaben, erwartete Ausgabe, Fehlerfälle, wie oft gebraucht. Er kennt den
Bedarf am besten. Er bekommt nur nicht die Werkzeuge, ihn selbst zu decken.
### Was daraus technisch folgt
Das ist mehr als eine Hausordnung, es ändert die Rechteform:
- **`scripts.write` ist nicht dasselbe wie `scripts.run`.** Ersteres hat genau eine
Einheit, die Entwicklung. Letzteres ist **kein Schalter, sondern eine Liste**: Dieser
Agent darf diese benannten Skripte ausführen, sonst keine. Ein „darf Skripte ausführen"
als Ja/Nein wäre die Hintertür, die wir gerade geschlossen haben.
- **Jedes Skript hat einen Eigentümer und einen Nutzerkreis.** Das Manifest aus #657
nennt beide. Wer es benutzen darf, steht dort — nicht im Prompt des Nutzers.
- **Der Nutzer prüft seine Werkzeuge nicht selbst.** Bessert die Entwicklung nach, gilt
die neue Fassung nach ihrer Freigabe für alle Nutzer. Sonst müsste der Anzeigen-Agent
Code beurteilen, den er nicht schreiben darf.
- **Ein Fehlschlag ist eine Meldung, keine Sackgasse.** Scheitert das Skript, meldet der
Agent es über die Befehlskette — derselbe Weg wie jede Eskalation (#689), nur mit
„Fähigkeit fehlerhaft" statt „Fähigkeit fehlt".
### Die Fehlerablage: der Entwickler liest das Original
Meldet der Anzeigen-Agent einen Skriptfehler über die Befehlskette, kommt beim Entwickler
an, was zwei Modelle davon übrig gelassen haben — „es hat nicht funktioniert" statt
`KeyError: 'campaign_id'` in Zeile 47. Damit ist die Kette nicht nur langsam, sondern
unbrauchbar.
**Der Fehler wird deshalb nicht weitergereicht, sondern abgelegt.** Jedes Skript hat einen
festen Ort dafür:
```
scripts/<skript-id>/
├── manifest.json Zweck, Eigentümer, Nutzerkreis, Ein-/Ausgaben, Netzziele
├── skript.py die freigegebene Fassung (hashgebunden, #657)
└── fehler/
├── 2026-09-22T07-14-03_run-a3de83bb.log
└── 2026-09-22T09-02-51_run-11de5c7a.log
```
Drei Festlegungen machen den Unterschied:
1. **Der Läufer schreibt, nicht der Agent.** Exit-Code, stderr, Aufrufparameter, Dauer,
RunId und AgentId legt der Sandbox-Runner (#654) ab — automatisch, bei jedem
Fehlschlag. Damit ist nichts abgetippt, nichts gekürzt, nichts vergessen. Dieselbe
Zusicherung wie beim Audit-Log: *von der Engine gestempelt, nie vom Agenten behauptet.*
2. **Der Zugang folgt dem Skript, nicht der Abteilung.** Wer das Skript besitzt, liest
seine Fehler — unabhängig davon, in welcher Einheit sie entstanden sind. Ein
Entwickler kommt so an alle Fehlschläge aller Nutzer, ohne in deren Arbeitsbereiche
zu dürfen. Das ist ein Rechtebereich, der am Gegenstand hängt statt am Baum, und die
Ausnahme ist begründet: Der Eigentümer muss sehen, wie sein Werkzeug scheitert.
3. **Die Meldung trägt den Verweis.** Was durch die Befehlskette geht, ist „Skript
`amazon-kampagnenbericht`, drei Fehlschläge seit gestern, siehe Ablage" — plus die
Einschätzung des Agenten, was ihm dadurch fehlt. Die Leitung entscheidet über die
Dringlichkeit, nicht über den Fehlertext.
**Ein Nebeneffekt, der mehr wert ist als die Meldung selbst:** Drei Fehlschläge desselben
Skripts an einem Tag sind ein Muster, das niemand melden muss — es steht in der Ablage
und lässt sich abfragen. Dasselbe Verhältnis wie bei #646 und #680: Erkennen ist Code,
Deuten ist Modell.
### Der zweite Gewinn dieser Trennung
Sie ist nicht nur sauberes Rechtemanagement. Sie ist die schärfste Grenze, die man gegen
eingeschleuste Anweisungen ziehen kann: **Der Agent, der fremde Inhalte liest, ist nie der
Agent, der ausführbaren Code hervorbringt.**
Der Anzeigen-Agent liest Amazon-Seiten, Berichte, Mails — lauter Text, den jemand anderes
verfasst hat. Dürfte er daraus Code schreiben und ausführen, gäbe es einen durchgehenden
Weg von einer manipulierten Webseite bis zur Codeausführung. Mit der Lieferkette liegen
dazwischen: eine Leitung, eine Entwicklungsabteilung, eine deterministische Vorprüfung,
eine Sicherheitseinschätzung und ein Mensch.
Das schließt eine Frage nicht aus, die beim Bau zu klären ist: Eine Bedarfsmeldung, die
aus einem Lauf mit Fremdinhalt stammt, trägt dessen Herkunft weiter — sie kann die
Beschreibung eines Skripts enthalten, die jemand anderes dem Agenten untergeschoben hat.
Sie gehört deshalb als belastet gekennzeichnet beim Entwickler an (#651, #659), und der
Entwickler behandelt sie als Wunsch, nicht als Vorlage.
Die Bausteine dafür sind geplant:
| Item | Was |
|---|---|
| #654 | Sandbox-Runner (bwrap): jede Codeausführung außerhalb des Hauptprozesses |
| #196 | Shell-Tool mit echter Sandbox |
| #657 | Skriptprüfung: ausgeführt wird nur die freigegebene Fassung — gebunden an den Hash von Skript, Manifest und Interpreter; jede Änderung, auch ein Bugfix, braucht eine neue Prüfung |
| #695 | Die Lieferkette: Bedarfsmeldung, Entwicklung, Zuteilung an benannte Nutzer, Fehlermeldung zurück |
**Diese vier sind nicht nur Sicherheitsvorhaben — sie sind der eigentliche
Werkzeugkasten.** Die ersten drei stehen heute unter SEC, weil sie dort aus der
Sicherheitsseite gedacht wurden. Aus der Baukastenseite betrachtet sind sie die Antwort
auf „wie bedient eine Instanz Amazon?", und ihr Rang sollte das widerspiegeln.
Die Reihenfolge bleibt dabei zwingend: **erst die Sandbox, dann das Schreiben.** Ein Agent,
der Code schreiben und ausführen darf, ohne dass die Ausführung eingesperrt ist, ist kein
Werkzeug, sondern ein Loch. Das ist keine Bürokratie, sondern der Unterschied zwischen
beidem.
### Was darüber hinaus fehlt
1. **Zugangsdaten je Einheit.** Heute hängen sie am Agenten. Ein Einkauf mit sechs Agenten
braucht sie einmal, nicht sechsmal — und die Buchhaltung darf den Marktplatz-Schlüssel
nicht sehen. Gehört an die Einheit (#683), mit demselben Vererbungsgedanken wie die
Rechte.
2. **Das Lesen dessen, was wirklich hereinkommt.** Eine Auftragsbestätigung ist ein
PDF-Anhang, eine Preisliste eine Tabelle. Text aus Anhängen zu holen ist die
unspektakulärste und am häufigsten gebrauchte fehlende Fähigkeit. Ein PDF vom
Lieferanten ist dabei so wenig vertrauenswürdig wie eine Webseite (#193).
3. **Der MCP-Client (#197) bleibt nützlich** — aber als *eine* Fähigkeit unter anderen,
für Dienste, die ohnehin als Server bereitstehen. Nicht als Anbindungsstrategie.
Und quer dazu: Jedes Werkzeug bringt seine Eignungsproben mit
([Werkzeugproben-Konzept](Werkzeugproben-Konzept.md), #681). Bei fünfzehn Werkzeugen ist
das angenehm; bei fünfzig ist es die einzige Art, den Überblick zu behalten, welches
Modell womit umgehen kann.
---
## 7a — Fremde Laufzeiten
*Ergänzt am 2026-09-24, angeregt durch Paperclip. Items #712, #713.*
Der vorige Abschnitt legt fest, dass nur die Entwicklungsabteilung Code hervorbringt.
Daraus folgt eine Frage, die bisher offen war: **Womit programmiert sie?** Ein
nachgebautes Schreib-und-Ausführ-Werkzeug von uns wird nie so gut wie Claude Code, das
auf nichts anderes ausgelegt ist. Und mit einem Abo kann es billiger sein als Tokens über
OpenRouter.
Also bekommt jeder Agent eine **Laufzeit**:
| Laufzeit | Was läuft | Wofür |
|---|---|---|
| `native` | unsere Engine mit OpenRouter, wie heute | Voreinstellung, alles außer Programmieren |
| `claude-code` | Claude Code im Kopflos-Modus | die Entwicklungsabteilung |
| `codex` | OpenAI Codex CLI | dasselbe, anderer Anbieter |
| `command` | ein Befehl, dessen Ausgabe das Ergebnis ist | Sonderfälle |
| `http` | ein Aufruf an einen fremden Dienst | Agenten, die woanders laufen |
**Was die Instanz behält:** Organisation, Taskboard, Budget, Audit, Freigaben. **Was die
fremde Laufzeit übernimmt:** die Arbeit innerhalb eines einzelnen Laufs. Paperclip trennt
das vollständig: *„control plane, not execution plane"*. Wir tun das nicht, und das ist
Absicht. Unsere Sicherheit liegt in der Ausführung (StagingGate, Werkzeugrechte,
UntrustedContent). Eine fremde Laufzeit ist deshalb die Ausnahme für einen bestimmten
Zweck, nicht das Modell für alles.
### Eine fremde Laufzeit gilt als weniger vertrauenswürdig
Was innerhalb von Claude Code geschieht, sieht keine unserer Prüfstellen. Daraus folgen
vier Regeln:
1. **Eigener Arbeitsplatz.** Ein Worktree oder eine Sandbox (#654), nie der
Arbeitsbereich der Instanz selbst.
2. **Freigabelisten statt Rechte-Umgehung.** `--allowedTools` und `--max-turns`, nie
`--dangerously-skip-permissions`. Bei Paperclip ist die Umgehung die Voreinstellung;
bei uns ist sie ausgeschlossen.
3. **Das Ergebnis ist ein Vorschlag.** Ein Diff oder ein fertiges Skript zur Abnahme, nie
ein direkter Einsatz. Ob es eingesetzt wird, entscheidet die Lieferkette aus
Abschnitt 7 (#695). Dass es Claude Code geschrieben hat, erspart keine Prüfung.
4. **Nach außen nur über uns.** Mit Taskboard, Leitung und Ablage spricht die fremde
Laufzeit über einen **MCP-Server, den die Instanz je Lauf bereitstellt** (#713). Jeder
Aufruf dort durchläuft dieselbe Kette wie ein nativer Werkzeugaufruf. Der Server
bietet nur an, was der Agent laut Konfiguration hat, und ist damit kein zweiter Weg
an den Rechten vorbei. Das Token gilt einen Lauf lang und wird nie in der
Befehlszeile übergeben.
### Kosten, die nichts kosten
Mit einem Abo kostet ein Lauf 0 $ und verbraucht trotzdem etwas: Kontingent. Die
Token-Zahlen aus `--output-format stream-json` gehen deshalb wie jeder andere Lauf in
RunUsage. In der Kostenanalyse (Abschnitt 8a) erscheinen sie als Kontingentverbrauch, nicht
als „kostenlos". Sonst wird genau die Abteilung unsichtbar, die am meisten Tokens
verbraucht.
### Zwei Vorbehalte vor dem Bau
- **Das Kontingent teilt der Mensch mit sich selbst.** Ein Pro-Plan, auf dem die
Entwicklungsabteilung läuft, ist derselbe, mit dem der Mensch arbeitet. Entweder ein
eigener Account oder eine Vorfahrtsregel, die die Abteilung anhält, bevor der Mensch
an die Grenze stößt.
- **Die Nutzungsbedingungen sind nicht geprüft.** Ob der automatisierte Dauerbetrieb
eines Verbraucher-Abos durch ein Agentensystem gedeckt ist, ist offen. Deshalb werden
beide Anmeldewege gebaut, Abo und API-Schlüssel, und die Entscheidung bleibt eine
Frage der Konfiguration statt eine des Umbaus.
---
## 8 — Kontrolle: eine Leitung delegiert nicht nur
Modelle machen Fehler. Das ist keine Randbedingung, sondern die Arbeitsgrundlage — vier
Tage Testbetrieb haben es viermal vorgeführt (#662, #673, #674, #676). Eine Organisation,
die das nicht einplant, verteilt Fehler nur schneller.
**Delegieren ohne Nachsehen ist deshalb keine Leitung.** Zur Rolle gehört die Stichprobe:
Arbeitet der Agent sauber? Nicht bei jedem Lauf — stichprobenartig, und dichter bei einem
neuen Agenten, einem neuen Modell oder nach einem Fehlschlag.
### Was eine Stichprobe ist
Nicht: den Agenten fragen, ob alles gut lief. Genau das ist als Kontrollinstrument wertlos
— ein Agent, der seine Aufgabe verfehlt, berichtet das nicht zuverlässig, und im
Prüfdurchgang vom 14.09. hat ein Modell dreizehn Werkzeugantworten frei erfunden.
Sondern: Ergebnis gegen Auftrag halten, und beides gegen das, was die Engine gestempelt
hat — `AuditLog`, `RunReceipts`, `RunTranscripts` (#660). Genau die Datenbasis des
AgentInspector (#204). Eine Leitung, die prüft, ist ein **viertes Profil** desselben
Unterbaus, mit dem Blick auf die eigene Einheit statt auf die ganze Instanz.
### Was aus einem Befund folgt
Hier kommt die Personalseite ins Spiel, und sie braucht abgestufte Mittel statt eines
Schalters:
| Befund | Mittel |
|---|---|
| Aufgabe unklar formuliert | Auftragstext schärfen — häufigster Fall, siehe #663 |
| Modell überfordert | Eignungsprobe (#681), dann anderes Modell |
| Rechte zu weit oder zu eng | Werkzeugrechte anpassen (#641) |
| Wiederholte Fehlschläge trotz allem | Agent stilllegen, Aufgaben umhängen |
| Verdacht auf Manipulation von außen | Security-Agent (#658), Quarantäne |
Die ersten vier sind **Personalentscheidungen** und gehören zum Personalmanager
([Basisagenten-Konzept](Basisagenten-Konzept.md)). Der letzte gehört zur Sicherheit, und
die Trennung ist wichtig: Ein Agent, der schlecht arbeitet, ist ein Personalfall. Ein
Agent, der vielleicht ferngesteuert wird, ist keiner — da hilft kein besseres Modell.
**Keines dieser Mittel darf die Leitung allein ziehen.** Ein Modell, das ein anderes
Modell stilllegt oder umkonfiguriert, verändert die Organisation ohne menschliche
Beteiligung. Die Leitung *schlägt vor* und begründet; ausgeführt wird nach Freigabe —
Linie von #205, #641, #687.
### Die Abstimmung: mehrere Blickwinkel statt einer Freigabe
Die Freigabe durch die Leitung (#687) ist eine Entscheidung aus einer Sicht. Für manches
ist das zu wenig — nicht weil eine Meinung fehlt, sondern weil **mehrere unabhängige
Prüfungen fehlen**:
> Der Einkäufer will Ware für 150 € bestellen.
> **Buchhaltung** prüft, ob wir uns das leisten können.
> **Logistik** prüft, ob wir noch genug davon am Lager haben.
> **Marketing** prüft, ob es überhaupt ins Sortiment passt.
> Jeder hat eine Stimme. 3 von 4 dafür → bestellt. 1 von 4 → nicht. 2 von 4 → eskaliert,
> mit den Begründungen.
Das ist keine Demokratie im politischen Sinn, und der Unterschied ist wichtig für den
Bau: **Es werden nicht Meinungen gezählt, sondern unabhängige Prüfungen erzwungen.** Jede
Stimme kommt aus einer anderen Datenquelle — Kontostand, Lagerbestand, Sortiment. Das ist
der eigentliche Gewinn, nicht die Mehrheit.
Daraus folgt die wichtigste Regel:
> **Es wird blind abgestimmt.** Kein Stimmberechtigter sieht die Stimme eines anderen,
> bevor er die eigene abgibt. Sonst stimmt ein günstiges Modell dem zu, was es gerade
> gelesen hat, und aus vier Prüfungen wird eine Prüfung mit drei Echos.
Damit ist die Abstimmung das genaue Gegenteil der Besprechung (#686): Dort sieht jeder
Teilnehmer die bisherigen Beiträge, weil Abstimmung im Wortsinn der Zweck ist. Hier sieht
niemand sie, weil Unabhängigkeit der Zweck ist. Beide Mittel gehören nebeneinander, und
sie dürfen nicht verwechselt werden.
**Die weiteren Festlegungen:**
- **Jede Stimme trägt Begründung und Beleg.** Nicht „nein", sondern „nein — Lagerbestand
340 Stück, Abfrage vom 22.09. 08:14". Ohne Beleg ist eine Stimme eine Meinung
(#697).
- **Wer beantragt, stimmt nicht mit.** Dieselbe Linie wie bei der Leitung, die ihre
eigenen Aufrufe nicht freigibt (#687).
- **Eine fehlende Stimme ist kein Ja.** Scheitert ein Lauf oder antwortet ein
Stimmberechtigter nicht in der Frist, fehlt die Stimme. Kommt das Quorum nicht
zustande, wird eskaliert — nichts wird stillschweigend durchgewinkt.
- **Die Schwellen gehören zur Regel, nicht ins Modell.** Wie viele Stimmen, wer, ab
welchem Betrag, was bei Gleichstand — das steht in der Freigaberegel der Einheit und
ist einstellbar.
- **Abstimmen kostet.** Vier Stimmberechtigte sind vier Läufe zusätzlich zum
eigentlichen Vorgang. Abstimmungen gehören deshalb an Schwellen gebunden — die 150 €
aus dem Beispiel sind vermutlich zu wenig dafür, und genau das soll die Auswertung
zeigen.
- **Alles wird erfasst:** Antrag, jede Stimme mit Begründung und Beleg, Ergebnis, Kosten.
Erst damit lässt sich hinterher fragen, ob die Abstimmung etwas verhindert hat oder nur
Geld gekostet hat.
Und eine Eigenschaft, die man leicht für eine Lücke hält: Eine Abstimmung gibt keinem
Agenten einen neuen Gesprächspartner. Die Stimmberechtigten reden nicht miteinander — sie
sehen den Antrag und antworten. Deshalb steht sie **nicht** in der Ausnahmeliste aus
Abschnitt 3.
### Die Doctrine: wie eine Leitung steuert, ohne jeden Auftrag anzufassen
Ein Agent wird heute von zwei Texten geprägt: `Identity.md` sagt, **wer** er ist,
`Soul.md`, **wie** er arbeitet. Beides ändert nur ein Mensch (#205).
Einer Leitung fehlt damit ein Mittel. Sie kann Aufträge verteilen und Ergebnisse prüfen —
aber nicht sagen: „In dieser Abteilung gilt ab sofort, dass jeder Lieferantenkontakt in
der Datenbank landet, bevor er weitergegeben wird." Dafür müsste sie jeden Aufgabentext
einzeln ändern.
**Die Leitung legt deshalb eine `Doctrine.md` in den Ordner ihrer unterstellten Agenten.**
Ein dritter Text neben Identity und Soul: nicht wer und nicht wie, sondern **was in dieser
Einheit gerade gilt**.
Vier Festlegungen:
1. **Nur eine Ebene tief.** Die Doctrine einer Abteilungsleitung erreicht die Agenten
*ihrer* Einheit — sie stößt nicht automatisch in die Untereinheiten durch. Ein Team
unter ihr hat seine eigene Leitung, und die schreibt ihre eigene. Wäre es anders,
summierten sich bei fünf Ebenen fünf Doktrinen in jedem Prompt, und niemand wüsste
mehr, welche Regel woher kommt.
2. **Selten und sichtbar.** Eine Doctrine, die wöchentlich wechselt, ist keine Doktrin,
sondern Mikromanagement mit Tokenkosten. Erzwingen lässt sich das nicht — beobachten
schon: Jede Änderung steht im Audit mit Vergleich zur Vorfassung, und häufige
Änderungen sind ein Befund für die Aufsicht (#680).
3. **Kurz und gedeckelt.** Sie geht in *jeden* Lauf *jedes* unterstellten Agenten. Fünf
Agenten mal vierzig Läufe am Tag mal tausend Token sind 200.000 Token täglich für
einen Text, den niemand mehr liest. Eine Höchstlänge gehört dazu.
4. **Eine belastete Leitung schreibt nicht frei.** Hat der Lauf, in dem die Leitung die
Doctrine ändert, fremde Inhalte gelesen — eine Mail, eine Webseite, einen
Lieferantenbericht —, dann ist die Änderung freigabepflichtig (#651, #659). Sonst wäre
die Doctrine der bequemste Weg, einer ganzen Abteilung von außen etwas unterzuschieben:
ein Text, der ungefragt in jedem Prompt steht.
Ansonsten darf die Leitung sie ändern, ohne zu fragen. Das ist der Unterschied zu
Identity und Soul, und er ist gewollt: Eine Leitung, die für jede Anweisung an ihre
eigene Abteilung einen Menschen braucht, ist keine Leitung.
### A/B: welches Modell macht es besser oder billiger?
Die Eignungsprobe (#681) beantwortet „kann dieses Modell dieses Werkzeug bedienen?" —
einmal, vor der Inbetriebnahme. Die Frage der Leitung ist eine andere: **Arbeitet der
Amazon-Marketing-Agent mit Gemini Flash 3.8 zuverlässig, oder macht Sonnet oder ein
GPT-Modell es besser — oder billiger?**
Das lässt sich im laufenden Betrieb beantworten, weil die Datenbasis schon da ist (#694):
dieselbe Rolle, dieselben Aufträge, zwei Modelle über einen Zeitraum. Verglichen werden
Ausgang, Schritte, Kosten, Fehlschläge, Nacharbeit.
Drei Dinge machen den Unterschied zwischen einer Messung und einem Gefühl:
- **Vergleichbare Aufträge.** Wiederkehrende Aufgaben eignen sich, einmalige nicht.
- **Ein Erfolgsmaß, das nicht die Selbstauskunft ist.** „ERGEBNIS: ok" sagt nichts.
Messbar sind: Lauf abgeschlossen, Werkzeugfehler je Lauf, Nacharbeit nötig, Eskalation
ausgelöst, Kosten.
- **Genug Läufe.** Zwei Läufe sind kein Vergleich. Bei wiederkehrenden Aufgaben ist das
kein Problem — eine Woche reicht.
Das Ergebnis ist wieder eine Empfehlung, keine Umstellung: Der Personalmanager legt sie
vor, entschieden wird mit Freigabe.
## 8a — Kosten und Prompts: das wichtigste Instrument
Je größer das Haus, desto weniger sieht man von innen. **Was eine Organisation aus fünfzig
oder hundert Agenten noch steuerbar macht, ist die genaue Erfassung dessen, was sie
kostet und was sie einander sagt.** Ein solches Haus wird früher oder später einige
hundert Dollar im Monat verbrauchen — und die Frage ist nie „können wir uns das
leisten?", sondern „wo davon ist Verschwendung?".
Die Datenbasis steht bereits: `RunReceipts` (Schritte, Tokens, Kosten je Lauf),
`RunUsage`, `AuditLog` und die Prompt-History aus #660. Was fehlt, ist die Ebene der
Einheit darin — heute lässt sich nur je Agent auswerten.
### Grenzen bleiben am Agenten, die Einheit rechnet auf
Festgelegt am 2026-09-22: **Token- und Kostengrenzen bleiben da, wo sie heute sind — am
einzelnen Agenten.** Auf Einheitsebene wird gerechnet, nicht gedeckelt:
- **Tatsächliche Kosten** je Einheit, aufsummiert über ihre Agenten und Untereinheiten
- **Theoretisches Maximum** je Einheit, als Summe der Agentengrenzen darunter
- beides je Tag, Woche, Monat — und im Vergleich zum Vormonat
Das ist die sparsamste Lösung, und sie hat einen Vorteil, der erst beim Umziehen auffällt:
**Ein Umzug ändert keine einzige Grenze.** Wäre das Budget der Einheit eine Zuteilung,
müsste bei jeder Umorganisation neu gerechnet werden — bei einer Instanz, die mit ihrem
Projekt wächst, also dauernd.
### Die Meldung ist wichtiger als die Grenze
Eine Grenze sagt nur, wann Schluss ist. Was man wirklich wissen will, ist, wann sich etwas
**ändert**:
> Die Agenten der Marketingabteilung dürften zusammen 100 $ am Tag ausgeben. Seit Wochen
> brauchen sie 30 $. Heute sind es 80 $.
Da ist nichts überschritten — und trotzdem ist genau das der Moment, in dem man hinsehen
muss. Also:
- **Abweichung vom eigenen Verlauf.** Ein gleitender Mittelwert je Einheit über die
letzten Wochen; wird er deutlich überschritten, geht eine Meldung raus. Das findet
Schleifen, entgleiste Aufgaben und teure Modellwechsel, bevor sie einen Monat lang
laufen.
- **Annäherung an die Grenze.** Wenn die Summe der Agentengrenzen einer Einheit zu einem
hohen Anteil ausgeschöpft wird, ebenfalls eine Meldung — bevor Agenten reihum in ihr
Limit laufen.
- **Gesamtbetrag erreicht.** Schwellen je Monat, die nichts abschalten, sondern melden.
Erkennen ist auch hier Code, nicht Modell: Ein Mittelwert und ein Schwellwert sind eine
Abfrage. Ob die Abweichung ein Problem ist, deutet die Aufsicht (#680).
### Was liegen bleibt, wenn das Budget endet
*Ergänzt am 2026-09-24 auf Hinweis des Nutzers. Item #716.*
Um 22:30 ist das Tagesbudget aufgebraucht, und für den Rest des Tages stehen noch 100
Läufe an. Lässt man sie verfallen, fehlt Arbeit. Holt man sie nach, fressen sie das
Budget des nächsten Tages.
**Heute gibt es dafür schon ein Verhalten. Nur hat es niemand entschieden.** Der Ausfall
wird vermerkt (seit #608 als RunReceipt mit `BudgetExceeded`), aber nicht an der Aufgabe
und nicht zusammengefasst. Einmalige Aufgaben werden alle 30 Minuten erneut versucht und
laufen nach Mitternacht still zu Lasten des neuen Tages. Wiederkehrende verfallen still,
weil ihr Termin schon beim Beanspruchen verbraucht ist. Beides kann richtig sein, aber
nicht, ohne dass es jemand festlegt. Die Tagesgrenze ist die lokale Mitternacht.
Der Vorschlag ist eine Einstellung je Agent, was mit einem Lauf geschieht, der am Budget
scheitert:
| Regel | Was geschieht | Voreinstellung für |
|---|---|---|
| `expire` | verfällt, wird an der Aufgabe vermerkt | wiederkehrende Aufgaben: Der nächste Termin kommt ohnehin, ein verpasster Stundenbericht ist vom nächsten überholt |
| `catch_up_once` | alle verfallenen Termine werden zu **einem** Nachholauf zusammengefasst | — (sinnvoll für den Tagesbericht, dessen nächster Termin erst in 24 Stunden käme) |
| `carry_over` | wird mitgenommen | einmalige Aufgaben: echte Arbeit, die nicht verschwinden darf |
Dazu gilt: **Der neue Tag hat Vorfahrt.** Nachholläufe kommen nach den regulär fälligen,
unterhalb jeder Priorität, und dürfen höchstens einen Anteil des neuen Tagesbudgets
verbrauchen (Vorgabe etwa 25 %). Ohne diese Regel schiebt ein einziger überzogener Tag
seinen Ausfall Tag für Tag vor sich her, statt ihn aufzulösen. Eine einmalige Aufgabe, die
nach einigen Tagen immer noch nicht drankam, geht an den Menschen: Was nie läuft, darf
nicht unbemerkt liegen bleiben.
**Vermerkt wird zweimal:** an der Aufgabe („ausgefallen: Budget erschöpft, 22:30" bzw.
„nachgeholt am …") und in einer Tageszusammenfassung („Budget Marketing um 22:30
erschöpft, 100 Läufe ausgefallen, 12 zum Nachholen vorgemerkt"). Die Zusammenfassung
geht in die Abweichungsmeldung oben und ins Lagebild (Abschnitt 10a).
**Besser als jede Nachholregel ist Vorbeugen.** Die Kostenprognose aus #608 weiß schon
heute, ob das Budget für die geplanten Aufgaben reicht. Sie sollte vormittags melden,
dass bei diesem Verbrauch um 22:30 Schluss ist. Dann kann der Mensch rechtzeitig
nachlegen oder entscheiden, was entfällt.
Zur selben Baustelle gehört die **Budgetreservierung**, der offene Rest aus #682: Noch
prüft jeder Lauf das Budget einzeln vor dem Start, und bis zu `maxParallelTaskRuns` Läufe
können es gemeinsam überschreiten. Erst mit einer Reservierung vor dem Lauf ist der
Ausfall vorhersagbar statt eine Frage, welcher Lauf zuerst zugreift.
### Füllarbeit und Großaufgaben
*Ergänzt am 2026-09-24 auf Vorschlag des Nutzers. Item #717.*
Der vorige Abschnitt regelt, was liegen bleibt, wenn das Budget nicht reicht. Die
Kehrseite: An den meisten Tagen bleibt Budget übrig, und das verfällt.
**Füllarbeit** ist Arbeit, die umfangreich, aber nicht eilig ist. Ob sie heute, morgen
oder übermorgen läuft, ist gleich. Sie bekommt statt eines Termins eine **Frist
„spätestens bis"** und läuft, wenn Platz ist. Rechenzentren machen das seit Jahrzehnten
so und nennen es *Backfilling*. Ob Platz ist, entscheidet der Code:
- Keine regulär fällige Aufgabe des Agenten wartet.
- Das Restbudget des Tages, abzüglich der Prognose für die noch geplanten Läufe (#608) und
eines Sicherheitsaufschlags, reicht für die Schätzung der Füllarbeit.
- Bevorzugt spät am Tag, weil die Prognose dann am wenigsten Unsicherheit hat.
Rückt die Frist näher und es fand sich nie Platz, wird der Mensch gefragt: Budget
erhöhen oder Frist verschieben. Eine Füllarbeit überschreitet ihre Frist nie still.
**Großaufgaben** sind Aufgaben, deren Schätzung einen großen Teil des Tagesbudgets
übersteigt (Vorgabe etwa 50 %). Sie werden nicht einfach angefangen. Der Agent schlägt
einen von zwei Wegen vor:
1. **Teilen.** Unteraufgaben, jede ein eigener Lauf, verbunden über die Elternaufgabe
(Zielkette, Abschnitt 9a). Die Teile können dann Füllarbeit sein.
2. **Sonderbudget.** Ein Betrag für genau diese Aufgabe samt Unteraufgaben, vom Menschen
freigegeben. Es ist ein eigener Topf: Es hebt die Tagesgrenze des Agenten nicht an und
ist in der Kostenanalyse gesondert sichtbar. Damit ist es die einzige Ausnahme von
„Budgets bleiben am Agenten", gebunden an eine Aufgabe und nie still.
**Ehrlich schätzen.** Kosten lassen sich vorab nicht genau wissen, und Modelle schätzen
ihren eigenen Aufwand schlecht. Wo es Verlauf gibt, schätzt der Code aus dem Verlauf.
Sonst schätzt der Agent, und die Zahl ist als Schätzung gekennzeichnet. Nach dem ersten
Teillauf ersetzt der gemessene Wert die Schätzung.
### Was die Auswertung dafür braucht
- **Die Einheit als Dimension** in Filtern und Zeitverlauf der Verbrauchsansicht (#660) —
„was kostet mich das Marketing?" muss eine Frage sein, keine Rechenaufgabe.
- **Verdichtete Werte.** Tagessummen je Agent und Einheit, damit eine Sechsmonatsansicht
nicht Millionen Laufzeilen liest (#700).
- **Ein Archiv statt eines Kehrbesens (#700).** Siehe unten — die Datenmenge ist ein
Problem der Abfragen, nicht der Festplatte.
### Aufbewahren statt löschen
**Gelöscht wird so wenig wie möglich.** Der Grund ist nicht Sammelwut, sondern der
einzige echte Vorteil, den eine Organisation aus Agenten gegenüber einer aus Menschen
hat: In einem Büro voller Menschen geht jeden Tag verloren, warum etwas so entschieden
wurde. Hier nicht. Fünf Jahre nach einem gescheiterten Vorhaben lässt sich nachlesen,
wie es dazu kam — welche Aufgabe wie formuliert war, was der Agent wirklich gelesen hat,
wer was freigab, welche Stimme welchen Beleg hatte.
Das ist bezahlbar, und zwar deutlich: Bei hundert Agenten fallen etwa 9 MB am Tag an,
also rund 3,3 GB im Jahr. Das ist keine Größe, für die man Wissen wegwirft.
**Was trotzdem zu tun ist, ist etwas anderes als Löschen:**
1. **Heiß und kalt trennen.** Die Arbeitsdatenbank hält, was der Betrieb braucht; ältere
Läufe wandern in ein Archiv — eigene Dateien je Zeitraum, abfragbar, aber nicht im
Weg. Was die Abfragen langsam macht, sind Millionen Zeilen in der heißen Tabelle,
nicht Gigabyte auf der Platte.
2. **Verdichtete Werte bleiben immer.** Tagessummen je Agent und Einheit sind winzig und
beantworten die meisten Fragen, ohne das Archiv anzufassen.
3. **Geheimnisse gar nicht erst hineinschreiben.** Aufbewahren heißt nicht, Zugangsdaten
aufzubewahren. Die Maskierung beim Schreiben (#660, allgemein #192) ist die Antwort —
nicht späteres Löschen, das ohnehin zu spät käme.
4. **Die Ausnahmen bleiben.** Ein Agent, der besondere Geheimnisse verwaltet, wird gar
nicht aufgezeichnet (`never` aus #660). Das ist eine Entscheidung je Agent und bleibt
es.
**Zwei Dinge, die der Betreiber entscheiden muss, nicht das Produkt:** In den Aufzeichnungen
stehen bei einem Handelsbetrieb auch Kundendaten, und für personenbezogene Daten gibt es
Aufbewahrungs- *und* Löschpflichten. Das Produkt muss beides können — unbegrenzt
aufbewahren und gezielt löschen, was gelöscht werden muss. Die Vorgabe „so wenig löschen
wie möglich" ist die Voreinstellung, nicht die einzige Möglichkeit.
**Folge für die Prompt-History:** Die Voreinstellung von 14 Tagen (#660, festgelegt am
2026-09-19) widerspricht dieser Linie. Sie gehört auf „unbegrenzt" umgestellt; die
Möglichkeit, je Agent kürzer oder gar nicht aufzuzeichnen, bleibt unverändert.
---
## 9 — Was eine Organisation braucht und ein Agentenhaufen nicht
Der Punkt, der beim Bauen am leichtesten übersehen wird: **Eine Organisation lebt von
gemeinsamem, dauerhaftem Wissen, das in keinem Kopf steckt.**
Im Beispiel: der Lieferantenstamm, der Artikelstamm, die offenen Bestellungen, die
Retourengründe. Wenn drei Einkaufsagenten je ihre eigene Vorstellung der Lieferantenliste
im Gedächtnis tragen, hat die Instanz drei Wahrheiten und keine davon stimmt. Das ist
kein Modellproblem und kein Prompt-Problem — es ist die Frage, was Datenbank ist und was
Kontext.
Daraus drei Festlegungen:
1. **Stammdaten gehören in die Datenbank**, nicht in das Gedächtnis von Agenten. Das
Gedächtnis ist für Erfahrungen („dieser Lieferant antwortet nie vor Dienstag"), nicht
für Fakten („Lieferant X, Mindestbestellmenge 50").
2. **Dokumente gehören in die Ablage der Einheit**, mit einem Eigentümer. Ein Bericht,
den zwei Agenten gleichzeitig schreiben, ist ein verlorener Bericht.
3. **Was mehrere Einheiten brauchen, ist eine bewusste Entscheidung** — ein
ausdrücklich geteilter Bereich mit benanntem Eigentümer, nicht das Standardverhalten.
---
## 9a — Von Paperclip gelernt
*Ergänzt am 2026-09-24 nach Durchsicht des Paperclip-Quellcodes. Items #714, #715.*
[Paperclip](https://github.com/paperclipai/paperclip) ist das Projekt, das diesem Konzept
am nächsten kommt: Firma, Organigramm, Budgets, der Mensch als „Board" mit Vetorecht.
Einiges davon lohnt sich zu übernehmen, anderes bewusst nicht.
### Übernommen: die Zielkette (#714)
Jede Aufgabe hat eine **Elternaufgabe**, ganz oben steht das Ziel der Einheit. Damit kann
jeder Agent beantworten, *warum* er etwas tut. Die Kette geht als kurzer Absatz in den
Lauf mit. Das ist etwas anderes als `blocked_by`: Die Elternaufgabe ist der Zweck
(„wofür"), der Blocker die Voraussetzung („wann"). Heute kennt `TaskItem` nur den Blocker.
Daraus folgt eine zweite Fähigkeit, Paperclips *Task Watchdog*: **Kommt ein ganzer
Teilbaum zur Ruhe**, alle Blätter erledigt, abgebrochen, blockiert oder in Prüfung, und
es gibt keinen Weg mehr, auf dem er weiterläuft, dann prüft jemand, ob der Stillstand
berechtigt ist. Denn Agenten hören aus falschen Gründen auf: „erledigt" ohne Beleg, eine
Prüfung ohne Prüfer, ein falsch gelesener Blocker. Ohne Prüfung liegt der Baum einfach
still, und niemand merkt es. Die Aufteilung ist dieselbe wie überall: Ob der Baum ruht,
erkennt eine Abfrage (#646). Ob das in Ordnung ist, deutet die Aufsicht (#680) oder die
Leitung. Der Prüfer gibt zurück, er bessert nicht selbst nach.
### Übernommen: Rückmeldung nach Vertrauensstufe (#715)
Das ist der wertvollste Gedanke aus Paperclip, und er schließt eine Lücke, die dieses
Konzept bisher hatte. Ein Agent, der Rezensionen, Mails oder Webseiten liest, hat fremden
Text im Kontext. UntrustedContent (K2) rahmt diesen Text beim Lesen. Schreibt der Agent
seiner Leitung aber einen Kommentar in eigenen Worten, trägt er den fremden Text eine
Ebene höher, in einen Kontext mit mehr Rechten, und dort ist er nicht mehr gerahmt.
**Prompt-Injection über die Hierarchie.**
Nach oben gibt es deshalb genau drei Wege:
1. **Das Erledigt-Signal.** Immer an. Die Leitung wird geweckt und liest das Ergebnis im
Vorgang selbst.
2. **Ein Kommentar genau eine Ebene nach oben.** Nur ein Kommentar, keine Status- oder
Feldänderung, nie an die übernächste Ebene oder an Geschwister. **Nur für die
Standardstufe.**
3. **Für Agenten, die fremde Inhalte lesen: kein Freitext nach oben.** Stattdessen
verfasst der Code eine Systemmeldung „blockiert" oder „abgebrochen". Sie löst keine
weitere Meldung aus und geht je Zustand nur einmal hinaus.
**Woher die Stufe kommt:** aus den Werkzeugen, nicht aus einer Einstellung. Wer WebFetch,
Mail, Rocket.Chat oder ein Skript mit Außenkontakt hat, liest fremde Inhalte. Das weiß
der Code aus der Konfiguration, eine Selbstauskunft des Agenten ist dafür nicht nötig.
Eine Einstellung darf die Stufe nur verschärfen, nie lockern.
Für Querverbindungen gilt das **„Courier Pattern"**: Wer seitlich etwas braucht, schreibt
nicht in fremde Vorgänge, sondern legt beim Ziel eine vollständige, in sich geschlossene
Aufgabe an. Das ist die Adressbuchregel aus Abschnitt 3 und die Stille-Post-Regel aus
Abschnitt 5, nur zu Ende gedacht: Der Empfänger darf die Vorgänge des Absenders womöglich
gar nicht lesen, also muss alles Nötige in der Aufgabe selbst stehen.
**Reihenfolge:** vor der Freigabe durch die Leitung (#687). Eine Leitung, die Freigaben
erteilt, darf keinen Kontext haben, in den ein Untergebener fremden Text schreiben kann.
### Übernommen, im Kleinen
- **Budget in zwei Stufen.** Die harte Grenze gibt es schon (`BudgetGuard`, Tagesbudget
je Agent und Instanz). Dazu kommt eine Warnung bei 80 % an die Leitung, damit das
Anhalten keine Überraschung ist. Gehört zu #699.
- **Gestaffelte Anzeige.** Oben die lesbare Zusammenfassung, darunter die Schritte, ganz
unten das Rohprotokoll. Gilt für die Teamübersicht (Abschnitt 10a) und die
Laufansichten aus #660.
### Bewusst nicht übernommen
- **Rechte-Umgehung als Voreinstellung.** Der Claude-Code-Adapter startet mit
`dangerouslySkipPermissions = true`, und Skills sind „open by default". Das ist das
Gegenteil unserer Linie, jedem Agenten nur die Rechte zu geben, die er braucht.
- **Die ganze Firma sieht alle Arbeit.** Bei Paperclip ist das ausdrücklich gewollt.
Hier trennen die gemeinsamen Bereiche je Einheit bewusst (Abschnitt 3).
- **Die reine Steuerungsebene.** Siehe Abschnitt 7a.
- **Als Warnsignal: die Komplexität.** Allein die Regeln zur Ausführung umfassen dort
über 1.400 Zeilen, bei knapp 5.000 offenen Issues und im Wesentlichen einem einzigen
Hauptentwickler. Das mahnt, nur zu übernehmen, was eine Lücke schließt.
---
## 10 — Was sich am Menschen ändert
Bei fünf Agenten ist der Mensch der Koordinator. Bei fünfzig kann er es nicht sein, und
der Versuch macht ihn zum Flaschenhals.
- **Freigaben wandern in die Struktur.** Die Abteilungsleitung gibt frei, was innerhalb
ihrer Grenzen liegt. Der Mensch gibt frei, was Geld bewegt, nach außen wirkt oder die
Struktur selbst ändert. Das ist die natürliche Fortsetzung von #641 (Rechte in der
Werkzeugkonfiguration) — nur mit der Einheit als zusätzlicher Ebene.
- **Berichtet wird verdichtet.** Nicht fünfzig Laufergebnisse, sondern vier
Abteilungsberichte und eine Lage.
- **Die Aufsicht (#680) wird von einer Annehmlichkeit zur Notwendigkeit.** Bei fünf
Agenten kann ein Mensch die Läufe lesen. Bei fünfzig muss etwas anderes ihm sagen, wo
er hinsehen soll.
---
## 10a — Das Lagebild
*Ergänzt am 2026-09-24 auf Vorschlag des Nutzers. Item #711, baut auf #688 auf.*
Die **Teamübersicht**: eine grafische Ansicht wie über ein Büro. Nodes für Agenten, Kanten
für ihre Beziehungen. Auf einen Blick sieht man, wer gerade arbeitet, wer mit wem in den
letzten Sekunden gesprochen hat und wo es klemmt. Ein Klick führt zum Agenten.
Bei fünf Agenten ist das eine Annehmlichkeit. Bei fünfzig ist es die einzige Art, ein
Problem zu bemerken, bevor die Rechnung kommt oder ein Ergebnis fehlt. Abschnitt 10 sagt,
bei fünfzig Agenten müsse etwas anderes dem Menschen sagen, wo er hinsehen soll. Das
Lagebild ist dieses Etwas, zum Hinsehen, neben der Aufsicht (#680) zum Nachlesen.
### Drei Festlegungen
1. **Die Anordnung kommt aus der Struktur, nicht aus der Hand.** In n8n oder Node-RED ist
der Graph das Programm, dort zieht man Nodes, und das soll so sein. Hier zeigt der
Graph eine Wahrheit, die woanders liegt: Einheiten, Leitung, Adressbuch. Sind die
Nodes frei platzierbar und verbindbar, zeigt das Bild bald etwas anderes als die
Organisation. Verschieben per Drag & Drop kommt später als Bedienung für den Umzug
(Abschnitt 3), mit gestoppter Instanz, Bestätigung und Audit-Eintrag, nicht als
Zeichenwerkzeug.
2. **Einheiten sind aufklappbare Container, Probleme wandern nach oben.** Hundert Nodes
mit wechselnden Kanten sind ein Knäuel. Standardansicht sind die Abteilungen mit einer
Zusammenfassung: „4 arbeiten · 1 Problem · 2 Freigaben offen". Eine Markierung am
Container heißt „irgendwo darin", und man klappt auf, bis man den Agenten findet.
Kanten zwischen Einheiten werden gebündelt, mit Zähler.
3. **„Problem" stellt der Code fest, nicht das Modell.** Die Zustände:
| Zustand | Woher |
|---|---|
| arbeitet | aktiver Lauf |
| wartet auf Freigabe | offene StagedCalls |
| wartet auf Kollegen | laufende Delegation |
| Problem | letzter Lauf gescheitert, LoopGuard-Abbruch, Eskalation über Frist, Budget erschöpft |
| hängt | Lauf deutlich länger als bei diesem Agenten üblich |
| pausiert / aus | Konfiguration |
Immer Farbe **und** Symbol.
### Der Klick führt in die Seitenleiste, nicht direkt in den Chat
Die meisten Probleme löst man nicht im Gespräch: Oft wartet eine Freigabe, oder ein
Werkzeug ist dreimal gescheitert. Die Seitenleiste zeigt den laufenden Lauf, den letzten
Fehler im Wortlaut, offene Aufgaben und Freigaben (dort bestätigbar), die Kosten von heute
gegen den Durchschnitt und den Knopf „Chat öffnen". Das ist ein Klick mehr, dafür ist
der richtige Handgriff meist schon da.
### Technik
- **Datenquelle** ist der vorhandene Ereignisstrom (`MergedEventStream`). Neu sind
Ereignistypen mit Absender und Empfänger: Delegation, Task-Zuweisung, später Besprechung
und Eskalation, jeweils mit eigener Linienart. Das Verblassen nach einigen Sekunden
geschieht im Browser.
- **Bibliothek:** Cytoscape.js mit ELK-Layout. Es kann verschachtelte Container und
hierarchisches Layout und bleibt bei Hunderten Nodes flüssig, ohne React. Als Datei im
`wwwroot`, nicht über ein CDN.
- **Nur in der WebUI.** Ein zweiter Graph-Renderer in Avalonia wäre doppelte Arbeit, die
auseinanderläuft. Der Desktop bettet die Ansicht ein oder verlinkt sie.
- Englisch, Texte über Sprachpakete (#661).
### Stufen
- **Stufe 0**, ohne Einheiten: die vorhandenen Agenten mit Delegationskanten und
Zuständen. Das nützt sofort, auf der Test-VM mit sieben Agenten.
- **Stufe 1**, mit #683: Container und nach oben gereichte Probleme. Ab hier fällt das
Lagebild mit dem Organigramm aus #688 zusammen; es gibt nicht zwei Ansichten der
Organisation.
- **Später: die Zeitleiste.** „Wie sah das Büro um 3:12 Uhr aus?" Das kostet wenig, weil
nichts gelöscht wird (Abschnitt 8a): Das AuditLog wird nur neu abgespielt. Für die Frage,
wie ein Projekt gescheitert ist, ist das vielleicht das wertvollste Werkzeug überhaupt.
### Wie andere es machen
Paperclip hat ein statisches Organigramm mit einem Statuspunkt je Agent und daneben eine
Liste der laufenden Läufe, aber keine Ansicht der Kommunikation. LangGraph Studio zeigt den
laufenden Node eines *Ablaufgraphen*, also eines Programms, nicht einer Organisation.
AutoGen Studio, Flowise und Langflow sind Baukästen („Nodes ziehen = Programm"), gut zum
Bauen, schwach als Lagebild. ChatDev und AI Town zeigen das Büro wörtlich als
Pixelgrafik: charmant, aber mit wenig Information. Die Verbindung aus aufklappbarer
Organisation, Live-Zuständen und nach oben gereichten Problemen mit Direktzugriff hat
keines davon.
---
## 11 — Reihenfolge
Nichts davon muss auf einmal entstehen. Die Reihenfolge ist so gewählt, dass jede Stufe
für sich schon nützt und keine die nächste blockiert.
| Stufe | Inhalt | Nutzen für sich |
|---|---|---|
| **0** | Parallelität deckeln, stille Kappung bei 500 beseitigen (#682) | Fehler, unabhängig von der Größe |
| **0a** | Lagebild ohne Einheiten (#711, Stufe 0) | Der Mensch sieht auf der Test-VM sofort, wer arbeitet und wo es klemmt |
| **1** | Einheiten als Struktur: Baum, Zugehörigkeit, vererbte Rechte, Adressbuch nach Einheit | Der Schnitt, der alles Weitere trägt |
| **2** | Ablage und Brett je Einheit | Buchhaltung und Einkauf treten sich nicht mehr auf die Füße |
| **3** | Budget und Parallelität je Einheit | Eine ausufernde Abteilung legt nicht die Instanz lahm |
| **4** | Ursprungsverweis in jedem Vorgang (#697); Zielkette (#714); Rückmeldung nach Vertrauensstufe (#715) | Entscheidungen stützen sich auf das Original, jede Aufgabe kennt ihren Zweck, und fremder Text steigt nicht in der Hierarchie auf |
| **5** | Eskalation, Konflikt und Beschluss (#689) | Eine Frage, die niemand beantworten kann, versandet nicht mehr |
| **6** | Besprechung als Mittel, mit Protokoll | Leitungen können sich abstimmen, ohne *n²* Nachrichten |
| **7** | Entscheidungsinstanz an der Spitze (#690) | Der Betrieb läuft weiter, wenn der Mensch schläft |
| **8** | Freigabe durch die Leitung innerhalb von Grenzen | Der Mensch hört auf, Flaschenhals zu sein |
| **9** | Kontrollpflicht der Leitung, abgestufte personelle Mittel (#693); Doctrine (#698) | Fehler findet die Leitung, nicht erst der Mensch — und sie kann steuern |
| **9a** | Kosten je Einheit, Abweichungsmeldung (#699), Archiv (#700) | Ineffizienz wird sichtbar, bevor sie einen Monat lang läuft |
| **9b** | Abstimmung als dritte Freigabeform (#702) | Vier Blickwinkel statt einer Unterschrift, wo es sich lohnt |
| **10** | Oberfläche: Organigramm und Lagebild in einem (#688, #711 Stufe 1) | Bei fünfzig Agenten ist eine flache Liste keine Übersicht |
| **11** | Organisationsvorlagen (#691) | Ein Haus lässt sich weitergeben statt nachbauen |
Quer dazu, unabhängig von der Reihenfolge: der Werkzeugkasten (#692), der A/B-Vergleich
von Modellen (#694), die fremden Laufzeiten samt MCP-Server (#712, #713; nach der Sandbox #654) und die Schemaauskunft (#676) — letztere ist Vorbedingung für
Stufe 5, weil eine Eskalation einen belastbaren Negativbefund braucht.
**Zum Umzug (Abschnitt 3):** Er gehört zu Stufe 1. Eine Struktur, die sich nach dem
Anlegen nicht mehr ändern lässt, ist keine Struktur, sondern eine Festlegung — und die
Reihenfolge oben verlöre ihren Sinn, wenn man das Haus nicht umbauen könnte, während man
es bewohnt.
**Nicht in dieser Liste, aber davor:** Die Sandbox (#654) und die Skriptprüfung (#657).
Sie stehen unter SEC, sind aber die Grundlage dafür, dass eine Instanz ihre
plattformspezifischen Werkzeuge selbst hervorbringt — und damit für den Baukasten
ebenso tragend wie die Einheiten. Die Lieferkette darüber (#695) gehört in den
ORG-Block, weil sie eine Organisationsfrage ist: Wer ein Werkzeug braucht, baut es
nicht.
Stufe 1 ist die einzige, die wirklich weh tut, weil sie Konfiguration, Werkzeuge,
Arbeitsbereiche und Oberfläche gleichzeitig berührt. Sie zuerst zu bauen ist trotzdem
richtig: jede spätere Stufe hängt daran, und jede Woche, die eine Instanz ohne Einheiten
wächst, wird der Umzug teurer.
---
## 12 — Offene Entscheidungen
- **Ist eine Einheit ein Agent?** Eine Leitung könnte ein gewöhnlicher Agent mit
besonderen Rechten sein — oder die Einheit hat eine Leitungsrolle, die auch unbesetzt
bleiben kann (dann übernimmt die übergeordnete Leitung). Vorschlag: das zweite. Eine
Einheit ohne Leitung muss möglich sein, sonst kostet jede Gliederung sofort einen Agenten.
- **Wie tief?** `MaxDelegationDepth = 3` muss steigen, aber nicht auf unendlich — eine
Kette ohne Grenze ist wieder ein Zyklus in Zeitlupe. Vorschlag: Tiefe des Baums plus
eins, aus der Struktur berechnet statt als Zahl eingestellt.
- **Gehören Einheiten in die Instanzkonfiguration oder in die Datenbank?** Die
Zugehörigkeit ändert sich selten, aber sie ändert Rechte — also gehört sie dorthin, wo
Änderungen im Audit stehen. Vorschlag: Datenbank, mit Abbild in der Konfiguration.
- **Darf ein Agent in zwei Einheiten sein?** In echten Organisationen ja (Matrix). Das
macht das Adressbuch und die Rechtevererbung deutlich schwieriger. Vorschlag: zunächst
nein, und beobachten, ob es fehlt.
Vier weitere, die vor dem Bau der jeweiligen Stufe entschieden gehören — beim
Gegenlesen am 2026-09-22 als zu grob aufgefallen:
- ~~**Ist ein Einheitsbudget ein Deckel oder eine Zuteilung?**~~ **Entschieden am
2026-09-22: weder noch.** Harte Grenzen bleiben am Agenten. Die Einheit rechnet auf und
zeigt an — siehe Abschnitt 8a. Damit entfällt die ganze Zuteilungsrechnerei, und ein
Umzug ändert keine einzige Grenze. Die Parallelität bleibt davon unberührt: Sie ist
keine Kostenfrage, sondern eine Frage der Ratengrenzen, und wird je Instanz gedeckelt
(#682).
- **Was ist eine „Grenze" der Leitung?** Das Konzept sagt „die Leitung gibt frei, was
innerhalb ihrer Grenzen liegt", ohne zu sagen, woraus eine Grenze besteht. Vorschlag:
Betrag je Vorgang, Betrag je Tag, erlaubte Werkzeugklassen, Außenwirkung ja/nein — und
alles davon an der Einheit, nicht an der Person der Leitung (Stufe 8). *Überholt am
2026-09-24: Grenzen sind ein Sammelwert und stehen am Leitungsagenten (Abschnitt 3,
„Einstellungen an der Einheit").*
- **Wie wird ein Beschluss wirksam?** „Bindend für alles unterhalb" ist ein Wort ohne
Maschinerie, solange niemand nachsieht. Vorschlag: Das Eskalationswerkzeug sucht von
sich aus, bevor es einen Vorgang anlegt — genau wie `task_find` vor `task_create`
(#674). Ein Beschluss, den man aktiv lesen müsste, wird nicht gelesen (Stufe 5).
- **Auf welchem Account läuft eine fremde Laufzeit?** (Abschnitt 7a, vor #712.) Ein
Pro-Plan teilt sein Kontingent mit dem Menschen, und ob der automatisierte
Dauerbetrieb eines Verbraucher-Abos von den Nutzungsbedingungen gedeckt ist, ist
ungeprüft. Vorschlag: beide Anmeldewege bauen, als Voreinstellung den API-Schlüssel
nehmen und das Abo erst nach Prüfung der Bedingungen freigeben.
- ~~**Was passiert, wenn die Eskalationsgrenze erreicht ist?**~~ **Entschieden am
2026-09-22, und schärfer als vorgeschlagen: Eine Eskalation, die nicht gelöst werden
kann, darf es nicht geben.** Finden die Agenten binnen einer einstellbaren Frist keine
Lösung, wird der Mensch gerufen. Er entscheidet — oder fordert an, was ihm fehlt, etwa
eine Stellungnahme jeder Streitpartei. „Bleibt sichtbar liegen" war zu schwach: Ein
Vorgang, den niemand anfasst, ist auch dann verloren, wenn er sichtbar ist (Stufe 5).
Und eine Kleinigkeit mit Folgen: **Das Wort „Struktur" meint in Abschnitt 6 die
Organisation** (Einheiten, Rechte, Grenzen) — nicht ein Datenbankschema. Eine
Entscheidungsinstanz darf durchaus beschließen, dass ein Feld angelegt wird; sie legt es
nur nicht selbst an.
---
## 13 — Items
| Item | Vorhaben |
|---|---|
| #682 | Läufe deckeln: Parallelität begrenzen, Kappung bei 500 beseitigen |
| #683 | Einheiten: Baum, Zugehörigkeit, vererbte Rechte, Adressbuch nach Einheit |
| #684 | Ablage und Taskboard je Einheit |
| #685 | Budget und Parallelität je Einheit |
| #686 | Besprechung: Termin, Tagesordnung, Runde, Protokoll |
| #689 | Eskalation, Konflikt und Beschluss als eigene Vorgänge |
| #690 | Entscheidungsinstanz an der Spitze: Mensch, Agent oder beides mit Frist |
| #691 | Organisationsvorlagen: eine Struktur als importierbare Datei |
| #692 | Werkzeugkasten: generischer Weg nach außen statt Einzelanbindungen |
| #693 | Kontrollpflicht der Leitung: Stichproben gegen das Audit, abgestufte Mittel |
| #694 | A/B-Vergleich von Modellen im laufenden Betrieb |
| #676 | Schemaauskunft der Datenbank — Vorbedingung für den Negativbefund |
| #695 | Skripte: Schreiben und Benutzen sind zwei Rechte, mit Lieferkette |
| #696 | Fehlerablage je Skript — der Läufer schreibt, der Eigentümer liest |
| #697 | Stille Post vermeiden: Weitergaben hängen an und tragen den Verweis |
| #698 | Doctrine.md — die Leitung steuert ihre Einheit, eine Ebene tief |
| #699 | Kosten je Einheit aufrechnen und Abweichungen melden |
| #700 | Archiv statt Kehrbesen: heiß und kalt trennen, verdichtete Tageswerte |
| #702 | Abstimmung: unabhängige Prüfungen, blind, mit Beleg je Stimme |
| #654, #196, #657 | Sandbox, Shell, Skriptprüfung — der eigentliche Werkzeugkasten |
| #687 | Freigabe durch die Leitung innerhalb von Grenzen |
| #688 | Organigramm in Oberfläche und WebUI |
| #716 | Was liegen bleibt, wenn das Budget endet (Ausfall, Nachholen, Reservierung) |
| #717 | Füllarbeit und Großaufgaben: ungenutztes Budget füllen, teilen oder Sonderbudget |
| #711 | Lagebild (Teamübersicht): wer arbeitet, wer spricht mit wem, wo klemmt es |
| #712 | Fremde Laufzeiten: Claude Code, Codex, Befehl, HTTP |
| #713 | ClawdDotNet als MCP-Server für fremde Laufzeiten |
| #714 | Zielkette und Prüfung ruhender Aufgabenbäume |
| #715 | Rückmeldung nach Vertrauensstufe, Courier Pattern |