docs(routing): LKGP sticks at provider level — align copy with routerStrategy contract (#11555)

Validated in a combined 4-PR batch worktree off release/v3.8.51 tip. Also removed a leftover changelog placeholder duplicate (0000-lkgp-doc-provider-stickiness.md, byte-identical content to the correctly-numbered 11555- fragment minus the PR link) — pushed to this branch.
- Focused test: router-strategies.test.ts — part of batch's 60/60 node:test run
- typecheck:core, file-size, changelog-integrity, complexity, cognitive-complexity, check:docs-counts-sync — all OK
- Full-repo lint: 228 pre-existing dashboard react-hooks/* findings, unrelated to this diff

Thanks for the docs-accuracy follow-through — aligning the LKGP copy with what routerStrategy.ts actually does (provider-level, not target/model) closes a real gap between prose and behavior.
This commit is contained in:
Dizzle
2026-08-26 00:48:40 +02:00
committed by GitHub
parent 6787fc9aa9
commit ffd8984a59
5 changed files with 41 additions and 12 deletions

View File

@@ -827,7 +827,7 @@ Configure via **Dashboard → Settings → Routing**. The dashboard exposes the
- `p2c` (Power of Two Choices)
- `least-used` and `cost-optimized`
- `auto` — score-driven across all candidates
- `lkgp` (Last Known Good Provider) — sticks to the last successful model per session
- `lkgp` (Last Known Good Provider) — pins to the last successful provider, then falls back to rules
- `context-optimized` — picks the model with the largest free context window
- `context-relay` — chains long-context models for follow-up turns
@@ -1088,15 +1088,15 @@ Access via **Dashboard → Health**. Real-time system health overview with 6 car
OmniRoute ships with a **score-driven auto-router** that picks the best model for each request across every connected provider — no combo to maintain. Just send the request with one of the `auto/*` prefixes and OmniRoute will assemble a virtual combo on the fly, scoring candidates on latency, cost, success rate, context fit, model fitness for the task, recent failures, quota, and circuit-breaker state.
| Prefix | Optimizes for |
| -------------- | ----------------------------------------------------------------------------- |
| `auto` | Balanced default (latency × cost × success rate) |
| `auto/coding` | Coding tasks: prefers Claude, GPT-5, GLM, Kimi, Qwen Coder, DeepSeek coders |
| `auto/cheap` | Lowest $/token, accepts higher latency |
| `auto/fast` | Lowest latency, ignores cost |
| `auto/offline` | Local-only providers (Ollama, vLLM, llama.cpp) — useful for air-gapped setups |
| `auto/smart` | Reasoning quality first (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) |
| `auto/lkgp` | "Last Known Good Provider" — sticky to the most recently successful target |
| Prefix | Optimizes for |
| -------------- | ------------------------------------------------------------------------------------------- |
| `auto` | Balanced default (latency × cost × success rate) |
| `auto/coding` | Coding tasks: prefers Claude, GPT-5, GLM, Kimi, Qwen Coder, DeepSeek coders |
| `auto/cheap` | Lowest $/token, accepts higher latency |
| `auto/fast` | Lowest latency, ignores cost |
| `auto/offline` | Local-only providers (Ollama, vLLM, llama.cpp) — useful for air-gapped setups |
| `auto/smart` | Reasoning quality first (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) |
| `auto/lkgp` | "Last Known Good Provider" — pins to the last successful provider, then falls back to rules |
Example:

View File

@@ -280,7 +280,7 @@ OmniRoute's combo engine supports **19 routing strategies** (declared in `src/sh
| `headroom` | Pick the target with the most remaining quota headroom |
| `strict-random` | Random without deduplication of repeats |
| `auto` | Use Auto Combo scoring (15-factor) — **recommended** |
| `lkgp` | Last-Known-Good Path (sticky route to last successful target) |
| `lkgp` | Last-Known-Good Path (pins to the last successful provider, then falls back to rules) |
| `context-optimized` | Pick target with best fit for current context size |
| `cache-optimized` | Reorder targets by prompt-cache affinity — the connection likeliest to already hold this request's cached prefix is tried first (`open-sse/services/combo/promptCacheAffinity.ts`, #8008) |
| `fusion` 🧬 | Fan out to a panel of models in parallel, then synthesize one answer via a judge (see below) |