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
@@ -235,12 +235,18 @@ Der `AgentEngine` nutzt dann die `ToolRegistry`, um für jeden Agent nur die erl
| Eigenschaft | Wert |
|---|---|
| Name | `Database` |
| NuGet | `MySqlConnector`, `MongoDB.Driver` |
| Aktionen | `query`, `insert`, `upsert` |
| NuGet | `MySqlConnector`, `Npgsql`, `Microsoft.Data.SqlClient`, `MongoDB.Driver` (SQLite über `Microsoft.Data.Sqlite` aus Core) |
| Aktionen | `query`, `insert`, `upsert`, `describe`, `tables` |
**Config-Felder:**
- `connectionString` – Datenbankverbindung (pro Agent!)
- `type` – `"mysql"` oder `"mongodb"`
- `type` – `"mysql"`, `"postgres"`, `"mssql"`, `"sqlite"` oder `"mongodb"`
**Schemaauskunft (#676):** `describe` nennt alle Spalten einer freigegebenen Tabelle.
`tables` nennt die freigegebenen Tabellen und sagt, ob es sie gibt. Scheitert ein Statement
an einer unbekannten Spalte oder Tabelle, nennt die Antwort, was vorhanden ist. Das gilt
nur für freigegebene Tabellen. Die Abfragen dafür schreibt das Werkzeug selbst, mit dem
Tabellennamen als Parameter. `PRAGMA` bleibt im Agenten-SQL verboten.
- `allowedTables` – Liste erlaubter Tabellen (Whitelist)
**Sicherheit:**