8870eb0451
Resolves issue #12 by partial-accept of the recommendation. What landed: - Single broker URL: http://hossenfelder.fritz.box:8082 for all three presets (fast / deep / cloud). Server-side model-aware routing; no client-side cloud auth (proxy holds the OpenRouter bearer). - Models from hossenfelder's /v1/models inventory: fast -> qwen2.5-coder-1.5b-q4_k_m.gguf (boltzmann local) deep -> mistral-nemo-12b-instruct (boltzmann local) cloud -> anthropic/claude-haiku-4.5 (OpenRouter route) - `cloud` was already pointing at hossenfelder but with https://; flipped to http:// so it matches the proxy's actual scheme. What deferred: - Schema rename `models` -> `brokers` (and the 5-cloud-preset shape suggested in #12) — would touch repl.lua + broker.lua. Not blocking Phase 7. If multi-preset becomes useful in practice, file a separate issue for the rename then. Phase 7 verification (live broker test): - broker.chat(fast, [user="say pong"]) -> "CMD: echo pong" in ~3s - multi-turn arithmetic (7*8=56, *2=112) preserved across turns Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
1.6 KiB
Lua
52 lines
1.6 KiB
Lua
-- config.lua — model registry, routing rules, user preferences.
|
|
-- Loaded with dofile() at startup; returns a plain Lua table.
|
|
-- See docs/PHASE0.md §10 for resolution order and full schema.
|
|
--
|
|
-- Per issue #12: hossenfelder is the canonical single-URL broker. It does
|
|
-- model-aware routing server-side (local models on boltzmann; cloud routes
|
|
-- through OpenRouter using its own bearer auth — no client-side key here).
|
|
-- Discovery: GET http://hossenfelder.fritz.box:8082/v1/models.
|
|
|
|
local HOSSENFELDER = "http://hossenfelder.fritz.box:8082"
|
|
|
|
return {
|
|
default_model = "fast",
|
|
|
|
models = {
|
|
fast = {
|
|
endpoint = HOSSENFELDER,
|
|
model = "qwen2.5-coder-1.5b-q4_k_m.gguf",
|
|
temperature = 0.2,
|
|
},
|
|
deep = {
|
|
endpoint = HOSSENFELDER,
|
|
model = "mistral-nemo-12b-instruct",
|
|
temperature = 0.1,
|
|
},
|
|
cloud = {
|
|
endpoint = HOSSENFELDER,
|
|
model = "anthropic/claude-haiku-4.5",
|
|
temperature = 0.2,
|
|
},
|
|
},
|
|
|
|
shell = {
|
|
known_commands = {
|
|
"ls", "cat", "cd", "grep", "find", "cp", "mv", "rm",
|
|
"mkdir", "rmdir", "git", "make", "cmake", "gcc", "clang",
|
|
"python3", "luajit", "ssh", "scp", "curl", "wget",
|
|
},
|
|
capture_output = true, -- inject exec output into context
|
|
confirm_cmd = true, -- prompt before executing CMD: suggestions
|
|
},
|
|
|
|
context = {
|
|
max_turns = 40,
|
|
token_budget = 4096,
|
|
},
|
|
|
|
history = {
|
|
dir = (os.getenv("HOME") or ".") .. "/.local/share/aish",
|
|
},
|
|
}
|