Provenienz und Routing-Tiers
Jede Verb-Antwort trägt einen Provenienz-Block. Was jedes Feld bedeutet, woran du ein Replay ganz ohne Modellaufruf erkennst und was tier dir verrät.
Zuletzt aktualisiert:
Wofür Provenienz da ist
Jede Verb-Antwort — observe, act und extract gleichermaßen — trägt einen provenance-Block. Er beantwortet die Fragen, die du sonst aus Logs und Rechnungen rekonstruieren würdest: Hat dieser Aufruf den Plan-Cache getroffen, wie viele Inferenzaufrufe hat er gemacht, welches Routing-Tier hat ihn bedient, und wo im Browser der Wahrnehmungscode gelaufen ist.
Die Provenienz-Felder
| Name | Typ | Beschreibung |
|---|---|---|
planCacheHit
|
boolean | True, wenn ein zwischengespeicherter Plan abgespielt wurde statt neu zu planen. Ein Replay macht keinen Modellaufruf. |
healApplied
|
boolean | True, wenn der Plan aus dem Cache nicht mehr exakt zur Seite passte und vor dem Replay repariert wurde. |
inferenceCalls
|
integer | Wie viele Modellaufrufe dieser Request gemacht hat. Null bei observe ohne Anweisung und bei sauberen Cache-Replays. |
tier
|
string | null | Welches Routing-Tier die Inferenz bedient hat: performance oder sovereign, null wenn kein Modell aufgerufen wurde. Das Enum ist offen. |
world
|
string | Wo die Wahrnehmung lief. extension heißt: das Bundle in der Browser-Extension der Session; cdp-fallback heißt: stattdessen über CDP injiziert. |
requestId
|
string | Die id für eine Support-Anfrage — oder zum Abgleich mit dem Audit-Log. |
durationMs
|
integer | Wanduhrzeit des Verbs, Ende zu Ende. |
Provenienz auslesen
Der Block sitzt auf jeder Antwort — ihn nach einem observe ohne Anweisung auszugeben zeigt den Fall ganz ohne Inferenz.
Voraussetzungen: api-key
import { Browserberg } from '@browserberg/sdk';
const bb = new Browserberg({
apiKey: process.env.BROWSERBERG_API_KEY!,
baseUrl: 'https://browserberg.com',
});
await using session = await bb.sessions.create({ ttlSeconds: 300 });
await session.act({
steps: [{
encodedId: null, action: 'navigate', role: 'none',
description: 'open example.com', value: 'https://example.com',
}],
});
// An instruction-free observe reads the page without a model call, and the
// provenance block says so: this is how you tell a cached replay from a paid
// inference call without reading your bill.
const observed = await session.observe();
console.log(JSON.stringify(observed.provenance, null, 2));
{
"planCacheHit": false,
"healApplied": false,
"inferenceCalls": 0,
"tier": null,
"world": "cdp-fallback",
"requestId": "req_xxxxxxxx",
"durationMs": 1234
}
Die Ökonomie des Plan-Caches
Ein abgespielter Plan kostet keine Inferenz: planCacheHit: true mit inferenceCalls: 0 ist der Normalzustand einer stabilen Automatisierung. healApplied markiert den Mittelweg — die Seite hat sich verschoben, der Plan aus dem Cache wurde repariert, und die Reparatur kann einen Aufruf gekostet haben, den das saubere Replay nicht gebraucht hätte. Diese drei Felder über eine Woche zu beobachten sagt dir, was deine Automatisierungen wirklich kosten und welche vom Cache leben.