Zum Inhalt springen

KI & Agenten

Rebase liefert vier verschiedene Komponenten für KI-Assistenten, die unterschiedliche Probleme lösen. Es lohnt sich zu wissen, nach welcher davon Sie greifen:

Was es ist Wer es nutzt
MCP server Ein stdio-basierter Model Context Protocol-Server mit 40 Tools für Ihr Schema, Daten, Benutzer, Speicher, Cron und Dev-Server Ein Assistent zur Laufzeit
Agent skills 20 Markdown-Skill-Dateien, die durch rebase skills install in Ihr Repository geschrieben werden Ein Assistent als Referenzmaterial
Instruction files ai-instructions.md plus assistentenspezifische Pointer-Dateien, erstellt durch rebase init Ein Assistent als dauerhaft aktive Regeln
API keys Bereichsbezogene Maschinen-Zugangsdaten, pro Collection und pro Operation Alles, was die HTTP-API aufruft

Die ersten drei dienen dazu, einem Assistenten Wissen und Werkzeuge bereitzustellen. Die vierte ist die einzige, die bestimmt, was er tatsächlich tun darf.

Der entscheidende Teil: Was ein Agent anfassen darf

Abschnitt betitelt „Der entscheidende Teil: Was ein Agent anfassen darf“

Ein Agent mit Werkzeugen für Ihre Datenbank ist ein gewöhnlicher API-Aufrufer, der zufällig seine nächste Anfrage selbst bestimmt. Rebase versucht nicht, ihn durch Anweisungen einzuschränken – ein Prompt ist kein Mechanismus zur Zugriffskontrolle, und ein Agent, der Ihre Zeilen liest, liest Text, den jemand anderes geschrieben haben könnte. Die Einschränkung muss unterhalb des Agenten greifen, in den Zugangsdaten, die er mitführt.

Rebase gibt diesen Zugangsdaten zwei unabhängige Kontrollstufen:

  1. Die API-Schlüssel-Berechtigungsliste. Deklariert pro Collection und pro Operation, wobei delete von write getrennt werden kann – was meistens das ist, was Sie einem Agenten vorenthalten möchten, der ansonsten bearbeiten darf.
  2. Row-Level Security. API-Schlüssel umgehen RLS nicht. Ein Schlüssel verbindet sich wie jeder andere Aufrufer über die Postgres-Rolle rebase_user, sodass Ihre Richtlinien weiterhin bestimmen, welche Zeilen zurückgegeben werden.

Beide müssen eine Anfrage erlauben. Keine ersetzt die andere, und die zweite ist der Grund dafür, dass ein Schlüssel mit "*"-Berechtigungen dennoch eine leere Ergebnismenge zurückgeben kann.

Ein Punkt, der oft übersehen wird: access: "public" einer Collection erweitert welche Zeilen ein Aufrufer sehen darf, nicht wer aufrufen darf. Es ist eine Aussage über die Sichtbarkeit von Zeilen, nicht über die Authentifizierung. Das Gewähren fügt einen Aufrufer nicht zur Berechtigungsliste hinzu, und das Verweigern stoppt ihn nicht.

Die Mechanismen – Erstellen von Schlüsseln, das Berechtigungs-JSON, Rotation, Ablauf, Ratenbegrenzungen – werden in REST API → API Keys behandelt. Überspringen Sie dabei nicht Security Rules (RLS); die zweite Kontrollstufe ist nur so gut wie die Richtlinien, die Sie geschrieben haben.

Rebase bietet einen erstklassigen vector-Eigenschaftstyp auf Postgres und eine .vectorSearch()-Abfragemethode mit cosine-, l2- und inner_product-Distanz. Dies ist bereits an zwei Stellen dokumentiert:

Drei Dinge, die Sie wissen sollten, bevor Sie darauf aufbauend entwickeln: Rebase speichert und durchsucht Embeddings; es berechnet sie nicht – es gibt in Rebase keinen Embedding-Provider, keine Modell-Einstellung und keinen API-Schlüssel, die Generierung der Vektoren liegt also bei Ihnen. pgvector ist eine Voraussetzung. Das Datenbank-Image des Scaffolds bringt die Erweiterung mit, ein per rebase init erstelltes Projekt braucht hier also nichts. Zeigt Rebase auf eine Datenbank, die jemand anderes bereitgestellt hat, benötigen Sie ein Image mit der Erweiterung und eine Rolle, die einmalig CREATE EXTENSION vector; ausführen darf – Rebase installiert keine Erweiterungen für Sie. Und jede Vektorspalte erhält einen HNSW-Index für die Kosinus-Distanz, denn mit Kosinus misst vectorSearch, sofern Sie nicht distance übergeben – ein Index bedient genau einen Operator. Anpassen oder abschalten lässt er sich an der Property: siehe Der Index.

Vektor-Abfragen können zudem nicht abonniert werden; .vectorSearch(...).listen() wird mit VECTOR_SEARCH_NOT_LIVE abgelehnt.

Für die lexikalische Suche – gerankte Volltextsuche über die von Ihnen benannten Felder, einschließlich JSONB- und Array-Inhalten – siehe Search. Es ist ein anderer Mechanismus, und die beiden interagieren nicht miteinander.