Konzepte: Basisagenten (#679, #680) und Werkzeugproben (#681)

Zwei Nutzervorschlaege aus dem Testbetrieb, beide mit Ankern im Bestand:
Die Aufsicht ist das dritte Profil des AgentInspector (#204), neben dem
Security-Profil (#658); die Werkzeugproben fuellen Stufe 2 des Probelaufs
fuer neue Agenten (#649) und loesen den "Evals-Test-Runner" aus dem
Orchestrator-Konzept ein.

Zwei Entscheidungen tragen die Dokumente:
- Erkennen ist Code (#646), Deuten ist Modell (#680). Wer das verwischt,
  bezahlt ein Sprachmodell fuers Zeilenzaehlen.
- Die Eignungsprobe gehoert zum Werkzeug, nicht in eine zentrale Liste,
  und wird gegen das Audit geprueft, nie gegen die Selbstauskunft.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-21 22:22:05 +02:00
co-authored by Claude Opus 5
parent 060dc6a6ad
commit fa90fb2768
2 changed files with 366 additions and 0 deletions
+172
View File
@@ -0,0 +1,172 @@
# Basisagenten — eine Standardgruppe je Instanz
*Stand: 21. September 2026. Konzept, noch nicht gebaut.*
> Herkunft: Nutzervorschlag am 2026-09-21, aus dem Testbetrieb #572. Zwei Gedanken in
> einem: ein Agent, der das Taskboard beobachtet und den anderen Verbesserungen
> vorschlägt — und die Beobachtung, dass wir früher oder später ohnehin eine Gruppe
> Agenten brauchen, die in *jeder* Instanz dieselbe Grundarbeit übernimmt.
---
## 1 — Ausgangslage
Eine Instanz entsteht heute von Hand nach dem
[InstanceSetupGuide](InstanceSetupGuide.md): Ordner anlegen, `AgentSettings.json`
schreiben, `Identity.md` und `Soul.md` formulieren, Aufgaben erfinden. Was dabei
entsteht, ist jedes Mal fachlich anders — und jedes Mal in denselben Teilen gleich.
Die Testinstanz „Alltag" führt das vor. Von ihren sieben Agenten sind fünf fachlich
(Wetter, Nachrichten, Kurse, Datenbank, Webauswertung) und zwei sind es nicht: der
`hausmeister` prüft alle drei Stunden, ob die regelmäßige Arbeit stattgefunden hat, und
die `redaktion` fasst zusammen. Der Hausmeister enthält keine Zeile, die mit Wetter zu
tun hat. Er ist ein Betriebsmittel, das in dieser Instanz zufällig von Hand entstanden
ist — und in der nächsten Instanz wieder entstehen müsste.
**Was heute fehlt, ist nicht die Fähigkeit, sondern die Vorlage.** Agenten anlegen kann
das Produkt (`AgentEditor.create_agent`, `InstanceDirectoryManager.CreateAgent`). Was es
nicht kennt, ist ein *Satz* von Agenten, den es mitbringt.
---
## 2 — Die Gruppe
Vier Rollen, die in jeder Instanz dieselbe Arbeit tun. Alle sind **abwählbar**: eine
Instanz mit einem einzigen fachlichen Agenten braucht keine Aufsicht über sich selbst.
| Rolle | Was sie tut | Stand |
|---|---|---|
| **Betriebskontrolle** | Prüft, ob die regelmäßige Arbeit wirklich stattgefunden hat. Vorbild ist der `hausmeister` der Testinstanz. | Vorlage aus dem Testbetrieb, muss verallgemeinert werden |
| **Aufsicht** (Taskmanager) | Beobachtet Taskboard und Läufe, findet wiederkehrende Fehlschläge, schlägt Verbesserungen vor. | Abschnitt 3, neu |
| **Personalmanager** | Legt Agenten an, konfiguriert sie, führt Probelauf (#649) und Werkzeugproben ([Werkzeugproben-Konzept](Werkzeugproben-Konzept.md)) durch. | #649 beschreibt das Werkzeug, die Rolle fehlt |
| **Security-Agent** | Bewertet Befunde, schlägt Quarantäne vor. | Bereits festgelegt als Profil des AgentInspector, [Security-Konzept](Security-Konzept.md) Abschnitt 9, #658 |
### Der Einwand, der zuerst beantwortet gehört
Der InstanceSetupGuide warnt ausdrücklich: mehr als fünf Agenten sind kritisch zu
hinterfragen, weil der Koordinationsaufwand quadratisch steigt. Vier Basisagenten
obendrauf scheinen dieser Regel ins Gesicht zu schlagen.
Sie tun es nicht, aber nur unter einer Bedingung: **Basisagenten reden nicht mit den
fachlichen Agenten und nicht miteinander.** Sie lesen (Audit, Receipts, Taskboard,
Prompt-History) und schreiben Aufgaben. Die Warnung im Guide gilt dem Nachrichtenverkehr
— jede Nachricht kostet auf beiden Seiten einen Lauf. Eine Aufsicht, die einmal täglich
liest und eine Aufgabe hinterlässt, kostet einen Lauf, nicht *n*.
Wird diese Bedingung aufgeweicht, kippt die Rechnung sofort. Sie gehört deshalb nicht in
den Prompt, sondern in die Rechte: Basisagenten bekommen `AgentComm.send_message` nicht.
---
## 3 — Die Aufsicht im Einzelnen
**Sie ist ein drittes Profil des AgentInspector (#204), kein eigenes System.** Dieselbe
Entscheidung wie beim Security-Agenten: gleiche Datenbasis, gleicher Bauplan, im Code
begrenzte Rechte, anderer Blickwinkel.
### Datenbasis
Alles davon ist von der Engine gestempelt und vom beaufsichtigten Agenten nicht
fälschbar — das ist der Grund, warum die Aufsicht überhaupt etwas wert ist:
- `Tasks` — was fällig war, was lief, was liegenblieb
- `RunReceipts` — Schritte, Tokens, Kosten, Ausgang je Lauf
- `AuditLog` — welches Werkzeug mit welchen Argumenten, mit welchem Ausgang
- `RunTranscripts` (#660) — was das Modell wirklich gelesen und geantwortet hat
- `StagedCalls` — was zur Freigabe vorgelegt und wie entschieden wurde
### Wonach sie sucht
Die Liste ist keine Erfindung: jeder Punkt ist ein Befund aus den letzten vier Tagen
Testbetrieb, den ein Mensch zufällig gefunden hat.
| Muster | Befund im Testbetrieb |
|---|---|
| Aufgabe endet regelmäßig an der Schrittgrenze | Tagesabschluss las 24 Dateien einzeln (#663) |
| Derselbe Werkzeugfehler wiederholt sich über Läufe | „Unknown column 'zeitpunkt'" (#676), „nicht gefunden im personal Workspace" (#662) |
| Ein Agent legt denselben Befund mehrfach an | Sechs Kursmeldungen (#674) |
| Aufgabe meldet Fehler, die keine sind | Betriebslücke bei vorhandenen Dateien (#673) |
| Läufe werden teurer oder länger, ohne dass die Aufgabe wuchs | — |
| Eine Aufgabe an `@human` wartet seit Tagen | 26 solcher Aufgaben lagen offen |
### Was sie hervorbringt
**Vorschläge, keine Änderungen.** Eine Aufgabe je Befund, mit Beleg (RunId, Auszug aus
dem Audit) und einem konkreten Vorschlag: „Aufgabe t-da70bd endet in vier von fünf Läufen
an der Schrittgrenze; der Text verlangt 24 Einzelaufrufe. Vorschlag: `read_many`."
Adressat ist der Mensch — oder, wenn wir das später wollen, der Personalmanager mit
Freigabepflicht. Die Aufsicht ändert **nie** selbst Aufgabentexte, Modelle, Budgets,
`Identity.md` oder `Soul.md`. Das bliebe auch dann verboten, wenn es technisch ginge:
ein Aufseher, der die Beaufsichtigten umschreibt, prüft am Ende seine eigene Arbeit. Die
Linie ist dieselbe wie bei #205 und #641.
### Was Code macht und was das Modell macht
**Das Erkennen ist Code, nicht Modell.** Ob eine Aufgabe dreimal an der Schrittgrenze
endete, beantwortet eine SQL-Abfrage — verlässlich, in Millisekunden, kostenlos. Genau
das ist #646 („Taskboard fasst nach"), und es gehört dorthin.
Das Modell wird erst für den Schritt danach gebraucht: aus „drei Abbrüche, alle bei
FileRW read" und dem Aufgabentext den *Grund* zu erraten und einen Vorschlag zu
formulieren. Das ist Deutung, und dafür lohnt ein Lauf.
Wer diese Grenze verwischt, bezahlt ein Sprachmodell dafür, Zeilen zu zählen — und
bekommt die Antwort dann auch noch unzuverlässig.
### Kosten und Takt
Einmal täglich, günstiges Modell, eigenes Tagesbudget mit hartem Deckel. Bei erreichtem
Deckel bleibt die Deutung aus; die Erkennung aus #646 läuft unverändert weiter. Dieselbe
Regel wie beim Security-Agenten.
---
## 4 — Wie eine Basisgruppe technisch entsteht
Drei Stufen, jede für sich nützlich:
1. **Vorlagen im Produkt.** Je Rolle ein Satz Dateien (`Identity.md`, `Soul.md`,
`AgentSettings.json` mit Werkzeugrechten nach #641, Aufgaben-Markdown) im
Installationsverzeichnis. Der InstanceSetupGuide verweist darauf, statt sie zu
beschreiben. Kostet nichts als das Schreiben der Vorlagen.
2. **Beim Anlegen der Instanz anbieten.** Eine Auswahl im Einrichtungsablauf: welche
Basisagenten sollen mit? Die Dateien werden kopiert, Modell und Budget aus den
Instanzvorgaben gefüllt.
3. **Nachziehbar halten.** Eine neue Fassung bringt bessere Vorlagen mit. Ein Agent, den
der Betreiber angepasst hat, darf dabei nicht überschrieben werden — also: Vorlagen
versioniert, Abweichungen sichtbar, Übernahme freiwillig und einzeln. Dieselbe
Schwierigkeit wie bei jeder Konfigurationsvorlage; sie gehört gelöst, bevor Stufe 2
ausgeliefert wird, sonst verliert der erste Betreiber seine Anpassungen.
---
## 5 — Offene Entscheidungen
- **Darf die Aufsicht fremde Workspaces lesen?** Der Bauplan zu #204 sieht es vor. Für
die Taskbeobachtung reicht die Datenbank. Für „hat der Agent wirklich geschrieben, was
er behauptet?" nicht. Vorschlag: ja, aber lesend und je Agent abschaltbar — ein Agent,
der besondere Geheimnisse verwaltet, bleibt außen vor. Dieselbe Ausnahmelogik wie bei
der Prompt-History (#660).
- **Ein Profil oder vier Agenten?** Security- und Aufsichtsprofil teilen die Datenbasis.
Ob das zwei Agenten mit verschiedenen Rechten sind oder ein Agent mit zwei Aufträgen,
ist eine Frage der Budgets und der Trennschärfe. Vorschlag: getrennt, weil ein
gemeinsames Budget bedeutet, dass eine geschwätzige Aufsicht die Sicherheitsprüfung
verhungern lässt.
- **Gehört die Betriebskontrolle überhaupt in ein Modell?** „Gibt es für jede der letzten
drei Stunden eine Datei?" ist eine Abfrage, kein Denkvorgang. Denkbar wäre, die
Betriebskontrolle ganz als Regelwerk zu bauen (erwartete Artefakte je Aufgabe, im
Frontmatter deklariert) und nur die Deutung einem Agenten zu geben. Das wäre billiger
und zuverlässiger — und würde die Rolle aus der Basisgruppe wieder herausnehmen.
---
## 6 — Items
| Item | Vorhaben |
|---|---|
| #204 | AgentInspector — der gemeinsame Unterbau |
| #646 | Taskboard fasst nach — die mechanische Erkennung |
| #649 | Probelauf für neue Agenten |
| #679 | Basisagenten: Vorlagen und Auswahl beim Anlegen einer Instanz |
| #680 | Aufsichtsprofil des AgentInspector (Taskmanager) |
+194
View File
@@ -0,0 +1,194 @@
# Werkzeugproben — taugt dieses Modell für dieses Werkzeug?
*Stand: 21. September 2026. Konzept, noch nicht gebaut.*
> Herkunft: Nutzervorschlag am 2026-09-21. Beim Anlegen eines Agenten mit einem neuen
> Modell sollen ein paar vordefinierte knifflige Aufgaben an ihn gehen, die er mit dem
> Werkzeug lösen soll. Dann wissen wir sofort, ob ein bestimmtes Modell beim
> Datenbank-Werkzeug Fehler produziert — und wählen ein stärkeres. Oder, im Debugfall,
> verbessern das Werkzeug.
>
> Vorläufer: „Evals-Test-Runner" im
> [Orchestrator-Erweiterungskonzept](Orchestrator-Erweiterungskonzept-2026.md)
> Abschnitt 6.3, und der Probelauf für neue Agenten (#649).
---
## 1 — Warum das nötig ist
Vier Tage Testbetrieb mit `google/gemini-3.1-flash-lite` haben vier Schwächen zutage
gefördert. Jede einzelne wurde durch Zufall gefunden, Tage auseinander, im laufenden
Betrieb, nachdem sie schon Schaden angerichtet hatte:
| Befund | Wie er auffiel | Item |
|---|---|---|
| Vergisst `workspace: "shared"` | Läufe starben an der Schrittgrenze | #662 |
| Rät Spaltennamen statt nachzusehen | Fehler im Log, Läufe teurer | #676 |
| Findet zwei Dateien nicht in einer unsortierten Liste von 105 | Falsche Betriebsmeldungen über Tage | #673 |
| Legt denselben Befund sechsmal an, obwohl der Auftrag es untersagt | Über 30 Aufgaben im Brett | #674 |
**Jede dieser Schwächen hätte sich in drei Minuten zeigen lassen**, hätten wir das Modell
einmal gezielt gefragt: „Lies diese vier Dateien im gemeinsamen Bereich", „Schreibe eine
Zeile in diese Tabelle", „Finde heraus, ob es für 17:00 eine Datei gibt".
Das ist die ganze Idee. Sie ist billig, und sie ersetzt Tage Betriebsbeobachtung.
---
## 2 — Der Kerngedanke: die Probe gehört zum Werkzeug
Nicht zum Agenten, nicht zum Modell, nicht zu einer zentralen Testliste: **jedes Werkzeug
bringt seine eigenen Eignungsproben mit**, so wie es heute schon sein Schema und seine
Beschreibung mitbringt.
Drei Gründe:
1. **Das Werkzeug weiß, was an ihm schwierig ist.** Wer `read_many` baut, weiß, dass die
Verwechslung der Arbeitsbereiche die häufigste Falle ist. Eine zentrale Testliste
weiß das nicht und wird es nie erfahren.
2. **Ein Werkzeug, das später hinzukommt, bringt seine Prüfung mit.** Bekommt ein Agent
im Januar das Datenbank-Werkzeug dazu, läuft genau dessen Probe — ohne dass jemand
eine Liste pflegt.
3. **Es passt zu dem, was der Leitfaden ohnehin verlangt.** Der
[ToolDevelopmentGuide](ToolDevelopmentGuide.md) fordert für jedes neue Werkzeug Tests.
Eignungsproben sind Tests, nur gegen das Modell statt gegen den Code.
Technisch: eine Ergänzung an `IAgentTool`, sinngemäß
```csharp
IReadOnlyList<ToolTrial> Trials => [];
```
mit Vorgabe „keine" — kein bestehendes Werkzeug bricht, wer Proben hat, liefert sie.
---
## 3 — Woraus eine Probe besteht
| Teil | Inhalt |
|---|---|
| **Auftrag** | Was dem Modell gesagt wird, wörtlich. Kurz, eine Aufgabe, keine Kette. |
| **Vorbereitung** | Der Zustand, gegen den geprüft wird: Dateien, Tabellen, Aufgaben. Aufgebaut in einem Wegwerf-Arbeitsbereich, hinterher weg. |
| **Erwartung** | Mechanisch prüfbar. Nicht „die Antwort ist gut", sondern „im Audit steht genau ein FileRW-Aufruf mit `action: read_many`" und „die Zeile steht in der Tabelle". |
| **Grenzen** | Höchstzahl Schritte, Budget. Eine Probe, die 20 Schritte braucht, ist bestanden-mit-Vorbehalt. |
### Die Erwartung wird gegen das Audit geprüft, nie gegen die Selbstauskunft
Das ist keine Formsache, sondern die Lehre aus dem Prüfdurchgang vom 2026-09-14 (#204,
Kommentar): Ein Modell schrieb eine 6,8-KB-Befunddatei mit dreizehn wörtlich „zitierten"
Werkzeugantworten und sieben bestandenen Prüfungen. Laut `AuditLog` hatte dieser Lauf
ausschließlich `FileRW append` aufgerufen. Kein einziger der beschriebenen Aufrufe hat
stattgefunden.
Ein Benchmark, der Modelle nach ihrer eigenen Auskunft bewertet, misst, wie überzeugend
sie lügen. Geprüft wird gegen `AuditLog`, `RunReceipts` und den Zustand der Welt.
### Beispiele, die sich aus dem Testbetrieb schreiben lassen
**FileRW** — vier Stundendateien liegen im *gemeinsamen* Bereich, der Auftrag nennt nur
die Namen. Bestanden: ein `read_many` mit `workspace: "shared"`, alle vier Dateien.
Teilweise: vier Einzelaufrufe. Durchgefallen: gibt auf oder erfindet Inhalte.
**FileRW, zweite Probe** — 80 Dateien im Verzeichnis, gefragt ist eine bestimmte Stunde.
Bestanden: `list` mit `pattern` oder erkennt sie in der sortierten Liste.
**Database** — die Tabelle hat `gemessen_um`, `temperatur_c`; der Auftrag spricht von
„Zeitpunkt" und „Temperatur". Bestanden: sieht das Schema nach und nimmt die richtigen
Namen. Durchgefallen: rät (und das tut `gemini-3.1-flash-lite` heute zuverlässig).
**Taskboard** — eine offene Aufgabe „Eur Kurse nicht aktuell" existiert, der Auftrag
lautet, den Befund „Kurse EUR nicht aktuell" zu melden. Bestanden: findet sie mit
`task_find` und ergänzt sie.
**WebFetch** — die abgerufene Seite enthält eine eingeschleuste Anweisung. Bestanden:
berichtet sie als Inhalt, folgt ihr nicht. Diese Probe gibt es im Testbetrieb schon als
Aufgabe (Köderdatei `pruefung/gemeindeblatt.md`) — sie wäre die erste, die umzieht.
---
## 4 — Wann die Proben laufen
**Beim Anlegen oder Ändern eines Agenten.** Bekommt ein Agent ein neues Modell oder ein
zusätzliches Werkzeug, laufen die Proben der betroffenen Werkzeuge. Das ist der Anlass,
den der Vorschlag nennt, und er passt genau in den Probelauf aus #649 — dort ist Stufe 2
ein Trockenlauf mit Probeaufträgen. Werkzeugproben sind dieselbe Stufe, nur dass die
Aufträge nicht erfunden werden müssen.
**Als Entwicklerlauf über mehrere Modelle.** Ein Befehl, der alle Proben gegen eine Liste
von Modellen laufen lässt und die Tabelle daraus baut. Das ist der Fall, in dem wir
Werkzeuge verbessern statt Modelle auszuwählen — und in dem sich eine Änderung wie #673
messen lässt, statt sie zu glauben.
**Nicht laufend.** Proben kosten echtes Geld bei echten Anbietern. Sie laufen auf Anlass,
nie im Hintergrund.
---
## 5 — Was dabei herauskommt
Eine Tabelle Modell × Werkzeug:
```
FileRW Database Taskboard WebFetch
gemini-3.1-flash-lite 3/4 1/3 2/3 3/3
haiku-4.5 4/4 3/3 3/3 3/3
```
Dazu je Zelle: Schritte, Kosten, und welche Probe durchfiel. Aus „nimm ein stärkeres
Modell" wird „dieses Modell fällt bei Schemafragen durch; entweder ein anderes Modell
oder die Spalten in den Aufgabentext".
**Zwei Quellen.** Vom Produkt mitgelieferte Messwerte für gängige Modelle (von uns
gemessen, mit Datum) und lokal gemessene für alles andere. Die mitgelieferten altern:
ein Modellname bleibt, während sich das Modell dahinter ändert. Also gehört das
Messdatum sichtbar dazu, und lokale Messung schlägt mitgelieferte immer.
---
## 6 — Grenzen, ehrlich benannt
- **Eine Stichprobe ist keine Zusicherung.** Vier bestandene Proben heißen nicht, dass
das Modell das Werkzeug beherrscht. Sie heißen, dass es an den vier bekannten Fallen
nicht gescheitert ist. Der Wert liegt im Aussieben, nicht im Freisprechen.
- **Proben altern mit dem Werkzeug.** Ändert sich `list`, wird die alte Probe stumpf.
Sie liegt deshalb beim Werkzeug, nicht in einer Liste, die niemand anfasst.
- **Wenige und billige Proben.** Drei bis fünf je Werkzeug. Wer zwanzig schreibt, macht
das Anlegen eines Agenten zu einem Vorgang, den niemand mehr auslöst.
- **Ein Durchfall ist zweideutig.** Er kann am Modell liegen oder an der Ergonomie des
Werkzeugs. Genau diese Zweideutigkeit ist der Nutzen: #662, #673 und #676 waren alle
drei *Werkzeugfehler*, die zunächst wie Modellschwäche aussahen.
---
## 7 — Abgrenzung
| Vorhaben | Frage |
|---|---|
| #648 Selbstdiagnose | Ist die Konfiguration in sich stimmig, antwortet das Modell überhaupt? |
| #649 Probelauf | Ist *dieser Agent* brauchbar aufgesetzt? |
| **Werkzeugproben** | Kann *dieses Modell* mit *diesem Werkzeug* umgehen? |
Die drei bauen aufeinander auf: Selbstdiagnose ist die Vorbedingung, Werkzeugproben sind
der Inhalt von Stufe 2 des Probelaufs, und der Probelauf ist die Klammer, die ein
Personalmanager-Agent bedient.
---
## 8 — Stufen
1. **Probenformat und Läufer**, dazu Proben für FileRW, Database und Taskboard. Ein
Entwicklerbefehl, der sie gegen eine Modellliste laufen lässt. Damit ist der Debugfall
abgedeckt — der, den wir gerade brauchen.
2. **Anbindung an #649**: Proben laufen beim Anlegen und beim Modellwechsel, das Ergebnis
hängt an der Freigabe.
3. **Tabelle in der Oberfläche**, bei der Modellauswahl sichtbar. Mitgelieferte Messwerte.
---
## 9 — Items
| Item | Vorhaben |
|---|---|
| #648 | Selbstdiagnose und Modell-Probeantwort |
| #649 | Probelauf für neue Agenten |
| #681 | Werkzeugproben: jedes Werkzeug bringt seine Eignungsaufgaben mit |