Skripte: wer eines braucht, baut es nicht (#695)
Korrektur der gestrigen Fassung: Dort stand, der zustaendige Agent schreibe und pflege sein Skript selbst. Ein Anzeigen-Agent, der programmiert und beliebigen Code ausfuehrt, hat Rechte, die seine Arbeit nicht braucht. Die Lieferkette: Bedarfsmeldung mit ausgearbeiteter Beschreibung an die eigene Leitung, von dort an die Entwicklung, dort schreiben und testen, Pruefung und Freigabe nach #657, Zuteilung an genau diesen einen Nutzer. Fehler gehen ueber dieselbe Kette zurueck. Technisch folgt daraus, dass scripts.run kein Schalter sein darf, sondern eine Liste benannter Skripte - ein Ja/Nein waere die Hintertuer, die die Trennung gerade schliesst. Und ein zweiter Gewinn, der als Entwurfsziel gelten soll: Der Agent, der fremde Inhalte liest, ist nie der Agent, der ausfuehrbaren Code hervorbringt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -313,27 +313,94 @@ 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 des Agenten über Amazon — und die steht in
|
||||
seinem Auftrag, seinem Gedächtnis und in Skripten, die er selbst schreibt.
|
||||
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, die die Instanz selbst schreibt
|
||||
### Wo Spezifisches hingehört: in Skripte — aber nicht in die Hand dessen, der sie braucht
|
||||
|
||||
Braucht der Marktplatz-Agent eine wiederkehrende, exakt zugeschnittene Operation, schreibt
|
||||
er sich ein Skript und pflegt es. Ändert Amazon etwas, ändert er das Skript — ohne
|
||||
Produktfassung, ohne uns.
|
||||
Braucht der Marktplatz-Agent eine wiederkehrende, exakt zugeschnittene Operation, dann
|
||||
entsteht dafür ein Skript. **Er schreibt es nicht selbst.**
|
||||
|
||||
Das ist bereits geplant, und zwar vollständig ausgearbeitet:
|
||||
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".
|
||||
|
||||
### 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: Agenten schreiben Skripte, 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 |
|
||||
| #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 drei sind nicht nur Sicherheitsvorhaben — sie sind der eigentliche
|
||||
Werkzeugkasten.** Sie 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.
|
||||
**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
|
||||
@@ -489,9 +556,11 @@ von Modellen (#694) und die Schemaauskunft (#676) — letztere ist Vorbedingung
|
||||
Stufe 4, weil eine Eskalation einen belastbaren Negativbefund braucht.
|
||||
|
||||
**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 sich ihre
|
||||
plattformspezifischen Werkzeuge selbst baut — und damit für den Baukasten ebenso
|
||||
tragend wie die Einheiten.
|
||||
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
|
||||
@@ -534,6 +603,7 @@ wächst, wird der Umzug teurer.
|
||||
| #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 |
|
||||
| #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 |
|
||||
|
||||
Reference in New Issue
Block a user