Thanks: your idea is implemented and ships in the next release. We built it the way we pictured it, so if the result is not what you had in mind, tell us and we will adjust it.
Quota rules: map each source model to its own fallback model
From Rob ZappDone 3 weeks ago
A "Change provider, model or effort" quota rule sends every launch to one target model, whatever model the agent was launched with. I want Claude overflow to go to ChatGPT with a model per source model: Fable → GPT-6 Astra, Opus → GPT-6 Sol, Sonnet → GPT-6 Luna, each with its own effort. Today I must pick one model for all overflow, which over-spends on light agents or under-powers heavy ones.
AgentsRoom diagnostics
- App version: 1.194.0
- OS: darwin 27.2.0 (arm64)
- Agent CLI: claude
- App language: system
Problem to solve
Fallback rules can't match the fallback model to the model being replaced.
Proposed behavior
Let an adjust-launch rule take a mapping table (source model → target provider, model and effort) with a default row.
Who benefits
Anyone who overflows between providers with tiered models.
Acceptance criteria
Each overflow agent gets a model of similar weight.
[Product Manager @ 2026-09-29T08:51:57.731Z]
Cadrage produit (approuvé par le fondateur le 2026-09-29)
PRD complet : context/features/QUOTA_RULES_MODEL_MAPPING.md. L'essentiel :
- UI : dans l'action « Ajuster le lancement », un segment « Même modèle pour tous » (écran actuel) / « Selon le modèle de départ » (table : une ligne par FAMILLE de modèle du fournisseur source, colonnes modèle cible + effort, dernière ligne fixe « Autres modèles » = défaut obligatoire ; une ligne peut être vidée = ne pas détourner ce modèle).
- Pré-remplissage : même
strength(1..4, déjà dansmodelCatalog.json) chez le fournisseur cible, à égalité le plus récent, sinon palier voisin supérieur puis inférieur. Module pur partagédesktop/src/shared/quotaModelMap.ts+ test, réutilisé par desktop, pont mobile et validateur MCP. - Données :
action.modelMap?: { source, targetModel?, targetEffort?, pinned? }[].targetModel/targetEffortexistants = ligne par défaut.modelMapabsent = comportement actuel octet pour octet, zéro migration. - Résolution au spawn (
substituteLaunchPair) : famille du modèle lancé (versionOf) → ligne exacte → sinon défaut ;opus-5.5suit la ligne Opus. - Contrats : mobile (éditeur + payload pont + RPC write), MCP
quota_rules_save/list, admin (ruleAdjustModesurconfigured,adjustMode+mappedRowsurfired, jamais le modèle cible), site (mention « per source model » dans toutes les locales + llms.txt), 20 locales,check-model-catalog-driftéchoue si un modèle n'a pas destrength. - Non-objectifs : pas de changement de modèle en cours de route, pas de table par compte, pas d'édition de
strengthpar l'utilisateur.
Commit final : suffixe « (reported by Robert) ».
[Product Manager @ 2026-09-29T09:18:45.187Z]
Implémenté (non commité, en attente de revue du fondateur)
Le fondateur a demandé de développer directement ; le ticket revient au PM, le fullstack est prévenu.
- Modèle + porte :
desktop/src/models/quotaRules.ts(modelMap,usesModelMap),desktop/src/shared/quotaModelMap.ts+quotaModelMap.test.mjs(6 tests verts),services/quota/quotaLaunchGate.ts(ligne « ne pas détourner » = règle suivante),Terminal.tsx(mappedRow),quotaRuleNotify.ts,quotaRuleShape.ts. - Desktop UI :
QuotaRuleAdjustFields.tsx(segment Même modèle pour tous / Selon le modèle de départ),QuotaRuleModelMapFields.tsx(table),quotaRuleLabels.ts(phraseadjust-launch-map). - Mobile :
models/quotaRules.ts,models/quotaModelMap.ts(miroir),models/types.ts(modelFamilies),QuotaRuleAdjustFields.tsx(extrait),QuotaRuleModelMapFields.tsx,quotaRuleText.ts; desktopquotaRulesBridgePayload.ts+useMobileQuotaRuleEdits.ts(coerce). - MCP :
quotaRulesMcp{Tools,Validate,Handlers}.cjs(action.modelMap). - Admin :
events.ts,quotaRuleAnalyticsData.ts,quotaRuleWrittenData.ts,configs/quotaRules.tsx(byAdjustMode, byMappedRow). - Catalogue :
scripts/check-model-catalog-drift.mjs(strength obligatoire) ; prompt du Fixer de nuit mis à jour. - i18n : 10 clés × 20 locales desktop et mobile, zh-TW régénéré ; checks contresens / untranslated / placeholders / mt-defects / diacritics verts,
check-i18n-keysetcheck-i18n-usagesans erreur surquotaRules. - Docs :
context/features/QUOTA_RULES.md,QUOTA_RULES_MODEL_MAPPING.md,context/kb/quota-rules.md(+ build-kb),site/public/llms.txt, mémoirequota-rules. - Typecheck desktop / mobile / site : aucune erreur dans les fichiers touchés (erreurs préexistantes d'autres chantiers non liées).
Test manuel à faire : règle Claude ≥ 1 % (n'importe quelle jauge) → Codex, mode « Selon le modèle de départ » ; lancer un agent fable, un opus-5.5, un sonnet, un haiku ; attendus : Astra / Sol / Luna / ligne « Autres modèles ».
Commit attendu : feat : Les règles de quota peuvent choisir un modèle de repli par modèle de départ (reported by Robert).