Zentrale: "Lucys Augen"-Check ergaenzt (Vision-Modell im Blick)

Nutzer-Fund: Die Faehigkeiten-Liste zeigte Hirn/Gedaechtnis/Gateway/Agent/
Stimme, aber nicht die Augen — obwohl das Vision-Modell seit heute zum
Immer-bereit-Set gehoert. Neuer Check (nicht kritisch): gruen wenn das
vision-Modell geladen ist, sonst Warnung mit 1-Klick-"Augen aufwecken".

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-03 09:14:40 +02:00
parent d2ab662146
commit a024ea1b2f
4 changed files with 72 additions and 53 deletions
+24 -5
View File
@@ -2,7 +2,7 @@
// Lucy-Fähigkeiten in Klartext, inkl. Gesamt-Verdikt, Speicher-Ampel und einer
// konkreten 1-Klick-Reparatur pro Problem. EINE Quelle für das Status-Panel.
import { Brain, BookMarked, Plug, Bot, Mic, type LucideIcon } from "lucide-react"
import { Brain, BookMarked, Eye, Plug, Bot, Mic, type LucideIcon } from "lucide-react"
import { useHealth, useServices, useModels, useSystemStatus } from "./queries"
export type CheckStatus = "ok" | "warn" | "down" | "loading"
@@ -83,7 +83,26 @@ export function useLucyHealth(): LucyHealth {
return { ...base, status: "ok", detail: "Wach und ansprechbar." }
})())
// 2) Lucys Gedächtnis — Mem0-Dienst.
// 2) Lucys Augen — das Vision-Modell (Rolle `vision`, Teil des Immer-bereit-Sets seit
// ttl 0 am 03.07.). Nicht kritisch: Reden geht auch blind — aber ehrlich anzeigen.
checks.push(((): LucyCheck => {
const base = { id: "vision", label: "Lucys Augen", icon: Eye, critical: false }
if (!loaded || !modelsResp) return { ...base, status: "loading", detail: "Wird geprüft …" }
const vm = modelsResp.models.find((m) => m.role === "vision")
if (!vm)
return { ...base, status: "warn", detail: "Kein Augen-Modell eingerichtet — Lucy kann keine Bilder ansehen." }
const warm = (modelsResp.running ?? []).includes(vm.name)
return warm
? { ...base, status: "ok", detail: "Sieht Bildschirm und Bilder." }
: {
...base,
status: "warn",
detail: "Lucys Augen sind eingeschlafen — das erste Bild-Ansehen dauert dann kurz.",
repair: { kind: "loadModel", model: vm.name, label: "Augen aufwecken" },
}
})())
// 3) Lucys Gedächtnis — Mem0-Dienst.
checks.push(((): LucyCheck => {
const base = { id: "memory", label: "Lucys Gedächtnis", icon: BookMarked, critical: true }
const ok = svcOk("mem0")
@@ -98,7 +117,7 @@ export function useLucyHealth(): LucyHealth {
}
})())
// 3) Verbindung (Gateway) — der integrierte OpenAI-Gateway, über den Apps/IDEs Lucy erreichen.
// 4) Verbindung (Gateway) — der integrierte OpenAI-Gateway, über den Apps/IDEs Lucy erreichen.
checks.push(((): LucyCheck => {
const base = { id: "gateway", label: "Verbindung (Gateway)", icon: Plug, critical: true }
const ok = health ? health.gateway_reachable : svcOk("integriert")
@@ -113,7 +132,7 @@ export function useLucyHealth(): LucyHealth {
}
})())
// 4) Lucys Agent (Hermes) — der Dienst, der als Lucy antwortet (Terminal/Telegram/Sprechen).
// 5) Lucys Agent (Hermes) — der Dienst, der als Lucy antwortet (Terminal/Telegram/Sprechen).
checks.push(((): LucyCheck => {
const base = { id: "agent", label: "Lucys Agent (Hermes)", icon: Bot, critical: true }
const ok = svcOk("hermes-gateway")
@@ -128,7 +147,7 @@ export function useLucyHealth(): LucyHealth {
}
})())
// 5) Lucys Stimme — Voice-Dienst (STT/TTS). Nicht kritisch: Chat geht auch ohne.
// 6) Lucys Stimme — Voice-Dienst (STT/TTS). Nicht kritisch: Chat geht auch ohne.
checks.push(((): LucyCheck => {
const base = { id: "voice", label: "Lucys Stimme", icon: Mic, critical: false }
const ok = svcOk("voice")