feat: Cookbook-Download-Fix, Live-Update-Konsole, Profi-Highlight, OpenCode-Guide
Backend: - hf_bin() + HF_DOWNLOAD_ENV zentral in config.py; install-recipe und install-model in cookbook.py nutzten weiter das fehlende `hf` + falsches XET-Env -> Haupt-Installationsweg war ebenso kaputt, jetzt konsistent gefixt Frontend: - Server: laufende Updates (LLM-Engine/OS) live auf der Server-Seite mitlesbar, inkl. klarer Fertig-/Fehlgeschlagen-Meldung (onJobs + Aktueller-Vorgang-Karte) - Cookbook/Profi-Modus: meistgeladenes, passendes Modell wird als "★ Beste Wahl für dein System" hervorgehoben (analog zu den Templates) - Verbinden: OpenCode korrekt per opencode.json (@ai-sdk/openai-compatible) statt irrefuehrender Felder; erklaert "Connect to API"-Fehler (LAN-IP statt localhost) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,28 @@ window.cnGo = v => document.querySelector(`.nav-item[data-view="${v}"]`)?.click(
|
||||
function baseUrl() { return `${location.protocol}//${location.hostname}:8080/v1`; }
|
||||
function models() { return S?.models || []; }
|
||||
|
||||
// Fertige opencode.json fuer einen OpenAI-kompatiblen Provider auf llama-swap.
|
||||
function openCodeConfig(url, ids) {
|
||||
const list = ids.length ? ids : ["coder"];
|
||||
const modelMap = list.map(id => ` "${id}": { "name": "${id}" }`).join(",\n");
|
||||
return `{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"llama-swap": {
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"name": "Bosgame (llama-swap)",
|
||||
"options": {
|
||||
"baseURL": "${url}",
|
||||
"apiKey": "local"
|
||||
},
|
||||
"models": {
|
||||
${modelMap}
|
||||
}
|
||||
}
|
||||
}
|
||||
}`;
|
||||
}
|
||||
|
||||
function field(label, value) {
|
||||
return `<label>${label}</label>
|
||||
<div class="flex gap-2" style="align-items:stretch;margin-bottom:12px">
|
||||
@@ -76,12 +98,17 @@ function render() {
|
||||
|
||||
<div class="card" style="padding:0;overflow:hidden">
|
||||
<details class="guide-acc" open>
|
||||
<summary>OpenCode (Windows) — Config</summary>
|
||||
<summary>OpenCode — Config-Datei (JSON)</summary>
|
||||
<div class="acc-body">
|
||||
<p>Lege in OpenCode einen OpenAI-kompatiblen Provider an:</p>
|
||||
${field("Basis-URL", url)}
|
||||
${field("Modell-ID", firstModel)}
|
||||
${field("API-Key", "(dein Token oder leer lassen)")}
|
||||
<p>OpenCode richtest du nicht über Felder ein, sondern über eine <b>Config-Datei</b>. Lege sie hier an:</p>
|
||||
<p class="mono-sm" style="line-height:1.6">Windows: <code>%USERPROFILE%\\.config\\opencode\\opencode.json</code><br>
|
||||
(oder im Projektordner als <code>opencode.json</code>)</p>
|
||||
<div style="position:relative;margin-top:12px">
|
||||
<button class="ghost" style="position:absolute;top:8px;right:8px;z-index:1" onclick="window.mcCopyCode(this)">Kopieren</button>
|
||||
<div class="log" style="max-height:none"><code>${esc(openCodeConfig(url, ids))}</code></div>
|
||||
</div>
|
||||
<p style="margin-top:12px">Danach in OpenCode <code>/models</code> tippen und <b>llama-swap/${esc(firstModel)}</b> wählen. Das Auto-Swapping lädt das passende Modell von selbst.</p>
|
||||
<div class="hint" style="margin-top:8px"><b>Fehler „Connect to API could not be established"?</b> Dann zeigt die <code>baseURL</code> ins Leere. Sie muss auf die <b>LAN-IP des Bosgame</b> zeigen (oben: <code>${esc(url)}</code>) — niemals <code>localhost</code> oder <code>127.0.0.1</code>, denn das wäre dein eigener PC, nicht der Server.</div>
|
||||
</div>
|
||||
</details>
|
||||
<details class="guide-acc">
|
||||
|
||||
Reference in New Issue
Block a user