Blog
Technische Deep Dives

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.

Simmetric Team8 Min. Lesezeit14/10/2026
Quotas und Kostenkontenführung: die Hold-and-Settle-Engine

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:

  1. Die Überschreibung per Nutzer - die Verwaltung setzt die Token-/Speicher-/Kostengrenzen eines benannten Nutzers direkt.
  2. Das Installations-Preset - die installationsweiten Standard-Schlüssel in der Systemkonfiguration (Token-Deckel, Speicher-GB, Kostendeckel in EUR).
  3. 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:

  1. 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).
  2. 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.md F-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).

Ähnliche Artikel