Ausbaustufen verfeinert
This commit is contained in:
parent
cf35c3f5db
commit
c4753c5fdb
1 changed files with 92 additions and 2 deletions
|
|
@ -753,6 +753,95 @@ eine eigene Key-Art ohne Projektbindung. Beides zusammen entscheiden, nicht
|
||||||
|
|
||||||
**Aufwand:** hoch.
|
**Aufwand:** hoch.
|
||||||
|
|
||||||
|
### 4.9 Zugriff über ein Projekt hinaus — aufgeschoben
|
||||||
|
|
||||||
|
Zwei verwandte Wünsche, besprochen am 2026-09-25 und bewusst aufgeschoben:
|
||||||
|
|
||||||
|
- **Öffentliches Projekt:** Ein Projekt, das jeder gültige Key lesen darf,
|
||||||
|
auch aus anderen Workspaces. Etwa für firmenweite Richtlinien.
|
||||||
|
- **Workspace-Zugang:** Ein Key für alle Projekte eines Workspace, mit einem
|
||||||
|
MCP-Server statt einem je Projekt. Für Teams, die projektübergreifend
|
||||||
|
arbeiten und Wissen aus mehreren Projekten brauchen.
|
||||||
|
|
||||||
|
**Stand heute:** Ein Key gehört zu genau einem Projekt, und jedes Projekt hat
|
||||||
|
einen eigenen MCP-Server, dessen Werkzeuge fest an dieses Projekt gebunden
|
||||||
|
sind. Wer mehrere Projekte braucht, trägt mehrere Server ein, je einen Key pro
|
||||||
|
Projekt. Das Routing Key → Workspace in der Kontroll-Datenbank (4.4) kennt
|
||||||
|
dagegen schon keine Projektbindung.
|
||||||
|
|
||||||
|
**Geht schon heute, ohne Code:** Für ein „öffentliches“ Projekt bekommt jedes
|
||||||
|
Team einen `read`-Key und trägt das Projekt als zweiten Server ein. Das kostet
|
||||||
|
Verwaltung, aber keine Entwicklung, und das Protokoll zeigt je Team, wer liest.
|
||||||
|
|
||||||
|
#### Öffentliches Projekt
|
||||||
|
|
||||||
|
| | Idee | Aufwand |
|
||||||
|
|---|---|---|
|
||||||
|
| **A** (empfohlen) | Eigener Endpunkt `/mcp/public/<projekt>`, jeder gültige Key darf lesen (`recall`, `get`, `list`, `related`), schreiben nur mit Keys des Projekts. Schalter nur für den Plattform-Admin. | 2½–3½ Tage |
|
||||||
|
| **B** | `recall` sucht automatisch zusätzlich im öffentlichen Projekt | 4–6 Tage, ändert den MCP-Vertrag |
|
||||||
|
| Lesen in der Oberfläche | Menschen aus anderen Projekten sehen es im Browser | +2–3 Tage |
|
||||||
|
|
||||||
|
Von Schreibrecht für alle wird abgeraten: Das Schreibbudget (3.8) gälte für
|
||||||
|
die ganze Firma zusammen, und niemand fühlte sich für die Qualität zuständig.
|
||||||
|
|
||||||
|
#### Workspace-Zugang
|
||||||
|
|
||||||
|
**Nötige Änderungen:** Workspace-Keys ohne Projektbindung (`api_keys.project_id`
|
||||||
|
ist heute `NOT NULL`, bei SQLite heißt das Tabelle neu aufbauen),
|
||||||
|
`Session.CanAccessProject` erweitern, Verwaltung unter `/admin/workspaces`, und
|
||||||
|
auf der MCP-Seite eine von zwei Stufen:
|
||||||
|
|
||||||
|
| | Idee | Aufwand gesamt |
|
||||||
|
|---|---|---|
|
||||||
|
| **Stufe 1** | Projekt wählbar über den Pfad (`/mcp/<projekt>`), ein Key für alle. Löst den Zugriff, der Agent muss aber weiter wissen, wo er sucht. | 4½–6 Tage |
|
||||||
|
| **Stufe 2** | Ein Server je Workspace, `recall` über alle Projekte, jeder Treffer nennt sein Projekt, `get`/`related`/`remember` bekommen einen Parameter `project`. | 7½–10 Tage |
|
||||||
|
|
||||||
|
**Risiken:**
|
||||||
|
|
||||||
|
- *Sicherheit:* Ein verlorener Workspace-Key öffnet alle Projekte statt einem.
|
||||||
|
Die Grenze zwischen Workspaces bleibt strukturell dicht (eigene Datei je
|
||||||
|
Workspace). Innerhalb eines Workspace wird die Projektgrenze aber zu einer
|
||||||
|
Bedingung in der Abfrage statt einer Closure. Das größte Risiko ist, dass
|
||||||
|
Projekt-Keys versehentlich über denselben Codepfad laufen und mehr sehen als
|
||||||
|
heute. Deshalb Projekt-Keys unverändert auf dem heutigen Weg lassen und den
|
||||||
|
Workspace-Server getrennt aufbauen.
|
||||||
|
- *Last:* Ein workspace-weites `recall` lädt beim ersten Aufruf die
|
||||||
|
Suchindizes *aller* Projekte in den Speicher (~65 MB und ~170 ms je 10.000
|
||||||
|
Einträge, siehe 1.1). Heute nur die, die jemand benutzt. SQLite wird nicht
|
||||||
|
stärker belastet, alle Projekte eines Workspace liegen schon in einer Datei.
|
||||||
|
- *Schreibbudget:* Es zählt je Projekt. Ein durchdrehender Agent mit
|
||||||
|
Workspace-Key könnte in *jedem* Projekt bis zur Grenze schreiben. Dagegen
|
||||||
|
hilft nur ein zusätzliches Budget je Key oder Workspace, oder kein
|
||||||
|
Schreibrecht für Workspace-Keys.
|
||||||
|
- *Qualität:* Agenten schreiben ins falsche Projekt (deshalb keine
|
||||||
|
Standardangabe für `project` bei `remember`), vermischen Wissen verschiedener
|
||||||
|
Projekte, legen Dubletten über Projektgrenzen an. Außerdem sind BM25-Werte
|
||||||
|
getrennter Indizes nicht direkt vergleichbar, das Mischen der Treffer
|
||||||
|
braucht eigene Logik.
|
||||||
|
- *Wartung:* zwei Anschlussarten statt einer. Mit Keycloak (4.3) wird aus dem
|
||||||
|
Workspace-*Key* ein Workspace-*Recht* einer Person, der Rechte-Teil wird dann
|
||||||
|
umgebaut.
|
||||||
|
|
||||||
|
**Warum aufgeschoben:** Keycloak ist absehbar, aber nicht sofort. Mit wenigen
|
||||||
|
Projekten je Team (etwa zwei) ist ein Server je Projekt stabil und die
|
||||||
|
Schwäche nur Komfort. Die Risiken oben wiegen das noch nicht auf.
|
||||||
|
|
||||||
|
**Auslöser:**
|
||||||
|
|
||||||
|
- Teams arbeiten regelmäßig mit vier bis fünf oder mehr Projekten zugleich
|
||||||
|
(Werkzeuge vervielfachen sich im Kontext des Agenten)
|
||||||
|
- Die Verteilung von `read`-Keys für gemeinsam genutzte Projekte wird zur
|
||||||
|
spürbaren Last
|
||||||
|
- Die Entscheidung zu 4.3 und 4.8 steht an. Dann zusammen entscheiden, nicht
|
||||||
|
vorher Workspace-Keys bauen und später umbauen.
|
||||||
|
|
||||||
|
**Wenn es so weit ist, vorsichtig beginnen:** Workspace-Keys nur `read`,
|
||||||
|
projektübergreifend `recall`/`get`/`list`/`related`, schreiben weiter über
|
||||||
|
die Projekt-Server, vorher Speicher und Kaltstart mit echten Projektgrößen
|
||||||
|
messen. Innerhalb eines Workspace erledigt ein solcher `read`-Key nebenbei
|
||||||
|
auch das öffentliche Projekt. Übrig bliebe nur „öffentlich über
|
||||||
|
Workspaces hinweg“ (Variante A oben).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Teil 5 — Oberfläche
|
## Teil 5 — Oberfläche
|
||||||
|
|
@ -974,5 +1063,6 @@ Zusätzlich vorgezogen und erledigt 2026-09-25: **Verwandte Einträge** (3.7),
|
||||||
Alles darüber hinaus erst, wenn der Betrieb zeigt, dass es gebraucht wird.
|
Alles darüber hinaus erst, wenn der Betrieb zeigt, dass es gebraucht wird.
|
||||||
|
|
||||||
**Was ausdrücklich nicht auf dieser Liste steht:** FTS5, getrennte Datenbanken,
|
**Was ausdrücklich nicht auf dieser Liste steht:** FTS5, getrennte Datenbanken,
|
||||||
semantische Suche. Alle drei sind gute Ideen für den Fall, dass ihre Auslöser
|
semantische Suche, Zugriff über ein Projekt hinaus (4.9). Alle vier sind gute
|
||||||
eintreten — und drei gute Wege, Zeit in Probleme zu stecken, die es noch nicht gibt.
|
Ideen für den Fall, dass ihre Auslöser eintreten — und vier gute Wege, Zeit in
|
||||||
|
Probleme zu stecken, die es noch nicht gibt.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue