Router: Namensraum auto/ mit acht Profilen auf drei Achsen (42i/intern#1252)
Der Preisfinder waehlte bisher ueber EINE Zahl. Ein Modell kann generalistisch gut aussehen und agentisch durchfallen -- gemini-3.8-flash hat Coding 76,3 und Agentic 41,2 und traegt den Werkzeug-Rundlauf nicht. - openrouter-auswahl: billigsterUeberSchwelle reicht minCoding/minAgentic an klasseFiltern durch (nahm es bereits entgegen, wurde nur nie gefuettert) - config: art "schwelle" hat jetzt index, coding und agentic, jede optional; "fest" kennt ausweich - resolver: Beschreibung nennt die geforderten Achsen - server: ein festes Ziel weicht bei Upstream-Ausfall EINMAL auf den konfigurierten Alias aus. Ohne das haengt mit dem lokalen Knoten jede Titelzeile jedes Agenten, weil auto/mass ueberall als small_model haengt. - acht Profile, Rollen darauf umgehaengt, 42i/marvin-2609:* bleiben als Namen Aufgeloest (ohne Last-Probe, alle Ziele laufen bereits ueber bestehende Aliasse): coding:junior und leader:junior -> glm-5.3-flash, coding:senior -> grok-4.6:high, leader:senior -> glm-5.3:max (15,66 statt 26 gewichtet -- die Regel findet etwas Billigeres als die Schaetzung im Ticket), mass:fast -> ling. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+8
-2
@@ -149,8 +149,14 @@ export async function aufloesen(c: Config, bisher: State, opts?: { dryRun?: bool
|
||||
const { referenz, auswahl } = await guenstigereAlternative(def.referenz, d.alle, d.key, melden, d.gesperrt, o);
|
||||
ziel = auswahl === null ? zuordnungAus(referenz, def.referenz, alt?.seit ?? neu.aktualisiert, true) : zuordnungAus(auswahl.candidate, def.referenz, alt?.seit ?? neu.aktualisiert, false);
|
||||
} else {
|
||||
const beschreibung = `Index>=${def.index}, Kontext>=${def.minContext}`;
|
||||
const { auswahl } = await billigsterUeberSchwelle(def.index, def.minContext, d.alle, d.key, melden, d.gesperrt, o);
|
||||
const teile = [
|
||||
def.index !== undefined ? `Index>=${def.index}` : null,
|
||||
def.coding !== undefined ? `Coding>=${def.coding}` : null,
|
||||
def.agentic !== undefined ? `Agentic>=${def.agentic}` : null,
|
||||
`Kontext>=${def.minContext}`,
|
||||
].filter((t): t is string => t !== null);
|
||||
const beschreibung = teile.join(", ");
|
||||
const { auswahl } = await billigsterUeberSchwelle(def.index ?? 0, def.minContext, d.alle, d.key, melden, d.gesperrt, { ...o, minCoding: def.coding, minAgentic: def.agentic });
|
||||
if (auswahl === null) throw new Error(`kein Modell erfuellt ${beschreibung}`);
|
||||
ziel = zuordnungAus(auswahl.candidate, beschreibung, alt?.seit ?? neu.aktualisiert, false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user