fix+feat: offene Punkte abgeschlossen
Kontext in Connect-Snippet: - ConnectPanel: max_tokens nutzt jetzt den echten konfigurierten Kontext des Modells (m.meta.ctx) statt hartkodiertem 32768 -> Zed sieht 128k Phase D - 'Immer aktiv halten' Toggle: - models.py: UpdateReq bekommt optionales ttl-Feld - update_model: setzt TTL wenn angegeben (ctx und ttl unabhaengig) - ModelsPanel: Checkbox 'Immer aktiv halten' im Konfig-Modal (TTL=99999 = nie entladen, TTL=300 = Standard 5min) MoE tps-Schaetzung: - hw_math.py: extract_active_params_b() erkennt A3B-Suffix - estimate_speed(): moe_active_ratio-Parameter, sqrt-Boost fuer MoE - evaluate_fit(): name-Parameter (optional) fuer automatische MoE-Erkennung - cookbook.py: alle evaluate_fit-Aufrufe mit name= versehen Cleanup: - static/js/panels/*.js + static/js/main.js geloescht (Dead Code) - wird-Datei (versehentlich committet) geloescht - CLAUDE.md: KISS-Statement auf Vite+Svelte-Stand aktualisiert Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,8 @@
|
||||
const ms = ids.length ? allModels.filter((m: any) => ids.includes(m.name)) : (allModels.length ? allModels : [{ name: 'coder', meta: {} }])
|
||||
const entries = ms.map((m: any) => {
|
||||
const img = (m.meta?.caps || []).some((c: string) => /Bild|Vision/i.test(c))
|
||||
return ` { "name": "${m.name}", "display_name": "${m.name}", "max_tokens": 32768${img ? `, "capabilities": { "tools": true, "images": true }` : ''} }`
|
||||
const ctx = m.meta?.ctx || 131072 // nutze konfigurierten Kontext des Modells (Standard: 128k)
|
||||
return ` { "name": "${m.name}", "display_name": "${m.name}", "max_tokens": ${ctx}${img ? `, "capabilities": { "tools": true, "images": true }` : ''} }`
|
||||
}).join(',\n')
|
||||
return `"language_models": {\n "openai_compatible": {\n "bosgame": {\n "api_url": "${url}",\n "available_models": [\n${entries}\n ]\n }\n }\n}`
|
||||
}
|
||||
|
||||
@@ -35,20 +35,25 @@
|
||||
chatLoading = false; refresh()
|
||||
}
|
||||
|
||||
const DEFAULT_TTL = 300
|
||||
|
||||
// ---- Config Modal ----
|
||||
let cfgOpen = $state(false)
|
||||
let cfgModel = $state<any>(null)
|
||||
let cfgCtx = $state(8192)
|
||||
let cfgAlwaysActive = $state(false)
|
||||
|
||||
function openConfig(name: string) {
|
||||
cfgModel = allModels.find((m: any) => m.name === name)
|
||||
if (!cfgModel) return
|
||||
cfgCtx = cfgModel.meta?.ctx || 8192
|
||||
cfgAlwaysActive = (cfgModel.ttl ?? DEFAULT_TTL) >= 99999
|
||||
cfgOpen = true
|
||||
}
|
||||
async function saveConfig() {
|
||||
const ttl = cfgAlwaysActive ? 99999 : DEFAULT_TTL
|
||||
try {
|
||||
await api('/api/update_model', { method: 'POST', body: JSON.stringify({ alias: cfgModel.name, ctx: cfgCtx }) })
|
||||
await api('/api/update_model', { method: 'POST', body: JSON.stringify({ alias: cfgModel.name, ctx: cfgCtx, ttl }) })
|
||||
toast('Gespeichert — aktiv beim nächsten Modell-Start.')
|
||||
cfgOpen = false; refresh()
|
||||
} catch (e: any) { toast(e.message, true) }
|
||||
@@ -218,6 +223,20 @@
|
||||
</div>
|
||||
{/if}
|
||||
<div class="hint" style="margin-bottom:14px">Es läuft immer nur <b>ein</b> Modell gleichzeitig — ein größerer Kontext hier beeinflusst deine anderen Modelle nicht.</div>
|
||||
|
||||
<div class="tile" style="display:flex;justify-content:space-between;align-items:center;margin:0 0 14px">
|
||||
<div style="flex:1">
|
||||
<div style="font-size:13px;font-weight:500">Immer aktiv halten</div>
|
||||
<div class="hint" style="margin:3px 0 0">Modell bleibt dauerhaft im RAM — nie automatisch entladen. Ideal für den kleinen Scout (~5 GB), der immer schnell antworten soll.</div>
|
||||
</div>
|
||||
<label style="display:flex;align-items:center;gap:8px;margin:0;cursor:pointer;flex:0 0 auto">
|
||||
<input type="checkbox" bind:checked={cfgAlwaysActive} style="width:18px;height:18px;accent-color:var(--accent);cursor:pointer">
|
||||
<span class="mono-sm" style="color:{cfgAlwaysActive ? 'var(--accent)' : 'var(--mut)'}">
|
||||
{cfgAlwaysActive ? 'An (TTL = ∞)' : 'Aus (TTL = 5 min)'}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<button class="primary" style="width:100%;margin-top:6px" onclick={saveConfig}>Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user