Quotas und Kostenkontenführung: die Hold-and-Settle-Engine
Die Zusammenfassung der Deckel: Token, Speicher, echtes Geld - das Ledger ohne zweiten Zaehler, fail-open, und Hold-and-Settle: die Ausgabe gedeckt VOR dem Aufruf. Census: F-QUOTA-1.

Grenzen, die gelten, bevor die Ausgabe passiert
Verbrauchsgrenzen in einer Multi-User-AI-Installation leben meist in einem Dashboard - einem Bericht, den man liest, nachdem die Rechnung existiert. Die Quota-Engine von Simmetric Chat setzt sie früher: in den Anfragepfad, vor dem ersten LLM-Aufruf. Die Engine umfasst drei Arten von Deckeln - Token, Speicher und Kosten (Echtgeld-Arithmetik, in Cents) - und tut es überall mit derselben Form: ein Ledger als Verbrauchstruth, abgeleitete Salden, Schranken vor dem Turn, und ein Versagen, das immer ausdrücklich ist.
Dieser Artikel geht den Entwurf durch: das ledger-getragene „kein zweiter Zähler“-Invariante, die Auflösungskette, die je Nutzers Grenze entscheidet, wie das rollierende Reset funktioniert (die Historie wird nie gelöscht), und die zweiphasige Hold-and-Settle-Reservierung, die eine Kostenquote zur echten Schranke macht statt zum verschobenen Alarm.
Ein Werkzeug der Betriebsleitung (die Community-Funktionsklasse). Fakten: FACT-CENSUS.md F-QUOTA-1.Kein zweiter Zähler
Die eine nicht verhandelbare Invariante: Die Verbrauchswahrheit bleibt im EXISTIERenden Token-Usage-Ledger der Plattform. Salden, Holds und Reset-Anker sind abgeleitete Zustände - nie eine zweite Zähltabelle, die von der Realität abdriften könnte. Die Folgerungen:
- Ein Reset ist ein Ledger-Anker, kein Auslöschen. Ein Reset schreibt eine Anker-Zeile, die das rollierende Fenster begrenzt; die Nutzungs-/Kosten-Historie wird nie gelöscht oder genullt. Die Betriebsleitung kann jederzeit rückwärts auditieren.
- Die Schranken sind dienstbezogen und vor dem Turn - sie laufen, wo die Domänendaten leben (vor dem ersten LLM-Aufruf im Orchestrator, vor dem Ingest in den Upload-Pfaden). Es gibt keine Middleware zum Umgehen: Der Check sitzt im Dienstpfad selbst.
- Die Geldmathematik ist Decimal-zu-Cents. Jede Kostenrechnung geht durch die Dezimalschicht und landet als GANZE Cents - nie Fließkomma, nie Rundungsdrift.
Die Auflösungskette
Die Grenze eines Nutzers löst sich durch eine dreistufige Kette, in dieser Ordnung:
- Die Überschreibung per Nutzer - die Verwaltung setzt die Token-/Speicher-/Kostengrenzen eines benannten Nutzers direkt.
- Das Installations-Preset - die installationsweiten Standard-Schlüssel in der Systemkonfiguration (Token-Deckel, Speicher-GB, Kostendeckel in EUR).
- Unbegrenzt - der
"0"/leere Sentinel = NICHT konfiguriert, und die Engine versagt offen: null Verhaltensänderung für Installationen, die Quoten nie anfassen.
Fail-open ist eine Eigenschaft mit ausdrücklicher Form: Die Quota-Engine ist das Opt-in-Werkzeug der Betriebsleitung, und „nicht konfiguriert“ darf nie still zu „gesperrt“ werden.
Die drei Arten
Token-Quoten rollen über eine im Fenster summierte Nutzung aus dem Ledger, begrenzt vom jüngsten Reset-Anker. Die Auflösung liefert eine Grenze samt Quell-Ebene - die Oberfläche kann pro Nutzer sagen, welche Zeile entschieden hat. Überschreitung = ein benannter Quotenfehler, dessen Payload die Frontend, das Widget und die Konnektor-Handler alle gleichermaßen lesen.
Speicher-Quoten greifen in den Upload-Pfaden, bevor sie zum Collector durchreisen: die Überschreibung per Nutzer, der Installationsdefault, oder unbegrenzt.
Kostenquoten - der Echtgeld-Arm - sind das Hold-and-Settle-Design, unten.
Hold-and-Settle
Ein Token-Ausgabe passiert, wenn die Token passieren; eine Euro-Ausgabe passiert, während der Stream läuft. Die Kostenschranke reserviert daher VOR dem LLM-Aufruf und settle't an der Nutzungsnaht:
- Reserve (vor dem Aufruf) - eine bedingte Aktualisierung, deren Prädikat die Datenbank row-locked auswertet (verbraucht + Schätzung ≤ Grenze): N gleichzeitige Anfragen SERIALISIEREN sich, statt alle durch einen überholten Check zu rennen, plus die Hold-Zeile in derselben Transaktion (die Reservierung ist atomisch mit dem Check).
- Settle (an der Naht) - der Hold schließt ab und erstattet Schätzung minus Ist. Das akzeptierte Fenster ist der Vorflug-Überschuss (Ist > Schätzung) - kein Mid-Stream-Kill aus Kostengründen; die Invariante in Ruhe ist exakt: settled + offene Holds ≤ Grenze.
Dieses Paar gibt der Kostenquote die Eigenschaft, die ein Bericht nie haben kann: Die Grenze greift bevor die Ausgabe sich dem Modell verpflichtet, via eine row-locked Reservierung, die unter Nebenläufigkeit ehrlich bleibt.
Das Pricing: pro Modell, snapshot-frozen, nie still umsonst
Die Pricing-Quelle pro Zeile: ein eingefrorenes Modell-Kosten-Snapshot dort, wo er existiert (eine spätere Tariffahrt schreibt die Historie nie um), sonst die Raten des Installations-Backfalls (die SC-4-Doktrin: ein Modell ohne Preis umgeht nie die Kostenquote - ein nicht-null eingebauter Boden greift mit einem warn-once-Log, sodass nichts durch Auslassung umsonst erscheinen kann). Währungen: das Ledger führt Summen je Währung (USD, EUR, GBP, JPY, CNY, INR in v1 - keine Umrechnung); die Kosten landen am done-Ereignis des Streams.
Die Einrichtung lebt im Bedienerpfad: Settings → Providers → die Pricing-Aktion des Modells (die Input-/Output-Raten pro 1M Token + die Währung), oder Pro-Nutzer-Pricing für own-provider-Schlüssel. N/A heißt „legen Sie eine Rate fest"; $0.00 heißt ausdrücklich umsonst (die lokalen Modelle auf 0 zurückgerechnet).
Der Widget-Principal
Anonyme Widget-Besucher sind keine Nutzer: Der Widget-Verbrauch bindet sich an den Principal der Widget-Organisation - Widget-Verkehr schöpft aus der Quotenkette dieser Organisation, statt Gästem-Identitäten zu erfinden. Konnektor-Verkehr und interne Chats teilen denselben einen Orchestrator, sodass die Pre-Turn-Schranken alle drei Chat-Oberflächen gleichförmig abdecken.
Weiterlesen
Die Anleitung trägt die vollständige Betriebsreferenz - die Schlüssel, die Endpunkte, das Reset-Verhalten, das Pricing-Detail - unter /de/docs/quotas-and-costs:
- Quotas and costs - die Anleitung
- Fakten dieses Beitrags: Zeile
FACT-CENSUS.mdF-QUOTA-1 (die drei Arten, das Ledger ohne zweiten Zähler, die Hold-and-Settle-Engine)
Provenance: Simmetric Chat docs/QUOTAS.md (v0.28.1, Phases 207/216) + docs/MODEL_COSTS.md (Phases 203/209/216), quotaService.ts/costQuotaService.ts - am vom Census fixierten Dokumentenstand (SHA aca5b8ff).


