Schemaauskunft im Datenbank-Werkzeug: "kein Feld" wird eine Feststellung (#676)

- Aktionen describe (alle Spalten einer freigegebenen Tabelle, mit dem Satz, dass nicht
  Genanntes nicht existiert) und tables (freigegebene Tabellen, vorhanden oder fehlend)
- "Unknown column" / "no such table" usw. werden mit dem Vorhandenen beantwortet -
  MySQL, Postgres, SQL Server, SQLite; nur fuer freigegebene Tabellen
- SQLite als Datenbanktyp; die Abfragen schreibt das Werkzeug selbst, PRAGMA bleibt im
  Agenten-SQL verboten
- MongoDB: describe nennt die Felder aus den Dokumenten
- describe/tables sind Lesezugriffe (Freigabeschluessel select), Vorpruefung der Tabelle

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-25 10:13:56 +02:00
co-authored by Claude Opus 5.5
parent 17d90cf952
commit a02b1996dd
5 changed files with 461 additions and 20 deletions
+9 -3
View File
@@ -347,6 +347,10 @@ 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.
*Stand 2026-09-25:* umgesetzt. Die Aktionen `describe` und `tables` gibt es jetzt, und
Fehler bei unbekannten Spalten oder Tabellen nennen das Vorhandene. Das Werkzeug kann
außerdem SQLite. Siehe die Umsetzung am Ende dieses Abschnitts.
### Eskalation: nach oben, nie zur Seite
Eine **Eskalation** ist: „Ich komme hier nicht weiter, das muss jemand über mir
@@ -514,9 +518,11 @@ Ohne Regeln läuft so etwas heiß. Vier, die nicht verhandelbar sind:
- **Nebenbei behoben:** Der Scanner hat einen Status, den der Lauf selbst gesetzt hatte
(blockiert, abgebrochen), am Laufende mit „erledigt“ überschrieben. Damit liefen sowohl
das Eskalieren als auch der Meldeweg aus #715 ins Leere.
- **Offen:** #676 (Schemaauskunft der Datenbank) ist die Vorbedingung dafür, dass „ich finde
kein Feld“ eine Feststellung ist und keine Vermutung. Der Mechanismus steht, der
Anwendungsfall braucht noch #676.
- **Vorbedingung erfüllt (#676):** Das Datenbank-Werkzeug beantwortet die Frage nach dem
Schema selbst. `describe` nennt alle Spalten einer Tabelle und sagt ausdrücklich, dass
ein nicht genanntes Feld nicht existiert. „Unbekannte Spalte“ und „unbekannte Tabelle“
werden mit dem Vorhandenen beantwortet. Damit ist „ich finde kein Feld dafür“ eine
Feststellung.
## 6 — Die Entscheidungsinstanz an der Spitze