config: Phase 5 routing + summarize-on-evict example (commit #5)
Phase 5 commit #5 (final) per docs/PHASE5.md §11. Documentation-only; commented-out example showing: - routing.auto (per-request auto-routing toggle) - routing.classes (class → model mapping; reasoning = nil by default per R-N2 cost-safety) - routing.fallback (single-hop retry to cloud on transport fail) - routing.fallback_model (default "cloud" if uncommented) - context.summarize_on_evict + summarizer_model + max_summary_chars (shown INSIDE the context = {...} block above) All defaults OFF — Phase 5 is opt-in across the board. Existing configs without `routing` or `context.summarize_on_evict` behave identically to Phase 4. Phase 5 implementation complete: #13e57824router.classify_model + 31-case corpus #203497b5context summarize_fn callback + summary block in to_messages #340ea0b4repl routing + fallback + summarize_fn wiring + :route/:fallback #4 - (bundled into #3 since meta cmds are trivial additions) #5 (this) config example block Phase 5 verify-partial: - router.classify_model: 31/31 case corpus passes - context summarize-on-evict: mock callback fires correctly (additive + compress paths), summary suppressed under Norris, :reset clears it - repl meta cmds: :route on/off/classes/check + :fallback on/off all work; :route check reports class + "routing currently disabled" suffix when auto is off (N1) Verify-pending: end-to-end with real broker (route a code question, see it land on deep; kill local backend, see fallback fire to cloud). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+45
@@ -146,4 +146,49 @@ return {
|
||||
-- -- (cloud may have variable cost per session).
|
||||
-- summarizer_model = "fast",
|
||||
-- },
|
||||
|
||||
-- Phase 5 (docs/PHASE5.md): multi-model routing + cloud fallback +
|
||||
-- summarize-on-evict. OFF by default — auto-routing can spend money
|
||||
-- silently on the cloud preset; require explicit opt-in.
|
||||
--
|
||||
-- routing = {
|
||||
-- -- Enable auto-routing per request. When true, router.classify_model
|
||||
-- -- inspects each prompt and may switch the model for THAT request
|
||||
-- -- only (the :model selection is preserved across requests).
|
||||
-- -- Default false. Toggle at runtime with :route on / :route off.
|
||||
-- auto = true,
|
||||
--
|
||||
-- -- Class → model mapping. nil = "keep current" (heuristic fires
|
||||
-- -- but no override). Ships with reasoning = nil because mapping
|
||||
-- -- "explain ..." prompts to a paid cloud model would spend money
|
||||
-- -- silently — opt in by uncommenting the reasoning line below.
|
||||
-- classes = {
|
||||
-- code = "deep", -- code-like prompts to local deep
|
||||
-- -- reasoning = "cloud", -- OPT-IN: "explain"/"why"/"how does" → paid
|
||||
-- -- default = nil, -- keep active model
|
||||
-- },
|
||||
--
|
||||
-- -- Single-hop retry on transport failure (HTTP 5xx, 408,
|
||||
-- -- 404 model_not_found, DNS, connection refused, timeouts).
|
||||
-- -- Retries against fallback_model once. Skipped if any text
|
||||
-- -- has already streamed (no partial-output duplication).
|
||||
-- -- Toggle at runtime with :fallback on / :fallback off.
|
||||
-- fallback = false, -- default off (cost-safety)
|
||||
-- fallback_model = "cloud",
|
||||
-- },
|
||||
|
||||
-- ── Phase 5 context summarization on sliding-window eviction.
|
||||
-- Set INSIDE the context = { ... } block above to enable:
|
||||
-- context = {
|
||||
-- max_turns = 40,
|
||||
-- token_budget = 4096,
|
||||
-- summarize_on_evict = true,
|
||||
-- summarizer_model = "fast", -- model name in models{}
|
||||
-- max_summary_chars = 2000,
|
||||
-- },
|
||||
-- When summarize_on_evict is true, evicted turn pairs are fed to
|
||||
-- summarizer_model and the result lives on ctx.summary, appended to
|
||||
-- the system prompt as [earlier conversation summary]. Suppressed
|
||||
-- in Norris mode (R-C4 — planner stays on its goal). If broker
|
||||
-- fails, falls back to Phase 0 silent eviction (no crash).
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user