Fix: KV-Schaetzung kalibriert + Brain-Fit-Check brain-spezifisch
- fit.estimate_memory_gb: KV-Cache jetzt sqrt-skaliert (nicht linear mit Gesamt-Params),
kalibriert an Hermes-14B@128K ~19GB KV -> realistische Footprints (vorher massive Ueberschaetzung).
- agent.hermes_brain_info Budget: prueft jetzt Brain (immer resident) + groesstes on-demand-Modell
<= GTT-Budget (fast/vision duerfen verdraengt werden) -> brain-spezifische, aussagekraeftige Warnung.
- Cockpit: Budget-Zeile + Confirm-Warnung entsprechend ("Brain ~X GB + groesstes on-demand ~Y GB").
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+19
-19
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -7,7 +7,7 @@
|
||||
<link rel="manifest" href="/manifest.webmanifest" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<title>Mission Control 2.0</title>
|
||||
<script type="module" crossorigin src="/assets/index-eiqRvBvu.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-lvQamTQ3.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-D4NZ6il2.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -317,10 +317,11 @@ export interface HermesBrainCandidate {
|
||||
|
||||
export interface HermesBrainBudget {
|
||||
gtt_gb: number
|
||||
warm_projected_gb: number // Always-On-Footprint mit dem empfohlenen Brain
|
||||
free_after_gb: number
|
||||
largest_ondemand_gb: number // größtes on-demand-Modell (z.B. heavy)
|
||||
fits: boolean // passt das größte on-demand daneben?
|
||||
brain_gb: number // Footprint des (empfohlenen) Brains, das immer resident bleibt
|
||||
warm_projected_gb: number // alle persist-Modelle warm (Info)
|
||||
free_after_gb: number // frei nach Brain + größtem on-demand
|
||||
largest_ondemand_gb: number // größtes on-demand-Modell (z.B. heavy/coder)
|
||||
fits: boolean // passt Brain + größtes on-demand zusammen ins Budget?
|
||||
}
|
||||
|
||||
export interface HermesBrainResp {
|
||||
|
||||
@@ -179,7 +179,7 @@ export function Cockpit() {
|
||||
async function handleBrainUpdate(repo: string) {
|
||||
const b = brain?.budget
|
||||
const warn = b && !b.fits
|
||||
? `\n\n⚠ Speicher-Warnung: Als Always-On würde dieses Brain ~${b.warm_projected_gb} GB belegen (Budget ${b.gtt_gb} GB) → nur ${b.free_after_gb} GB frei. Das größte on-demand-Modell (~${b.largest_ondemand_gb} GB) passt dann NICHT mehr gleichzeitig daneben. Erwäge ein kleineres Brain oder weniger Kontext.`
|
||||
? `\n\n⚠ Speicher-Warnung: Dieses Brain (~${b.brain_gb} GB) muss immer resident sein. Zusammen mit dem größten on-demand-Modell (~${b.largest_ondemand_gb} GB) sprengt das das Budget (${b.gtt_gb} GB) → heavy/coder würden das Brain verdrängen. Erwäge ein kleineres Brain oder weniger Kontext.`
|
||||
: ""
|
||||
showConfirm(
|
||||
"Agent-Hirn aktualisieren?",
|
||||
@@ -709,11 +709,11 @@ export function Cockpit() {
|
||||
brain.budget.fits ? "text-muted-foreground/80" : "text-red-400 font-semibold")}>
|
||||
<HardDrive className="h-3 w-3 shrink-0 mt-0.5" />
|
||||
<span>
|
||||
{brain.update_available ? "Mit diesem Brain als Always-On: " : "Always-On-Budget: "}
|
||||
~{brain.budget.warm_projected_gb} / {brain.budget.gtt_gb} GB belegt → {brain.budget.free_after_gb} GB frei
|
||||
Always-On-Brain ~{brain.budget.brain_gb} GB + größtes on-demand (~{brain.budget.largest_ondemand_gb} GB)
|
||||
= {(brain.budget.brain_gb + brain.budget.largest_ondemand_gb).toFixed(1)} / {brain.budget.gtt_gb} GB
|
||||
{brain.budget.fits
|
||||
? ` · größtes on-demand-Modell (~${brain.budget.largest_ondemand_gb} GB) passt daneben ✓`
|
||||
: ` · größtes on-demand-Modell (~${brain.budget.largest_ondemand_gb} GB) passt NICHT mehr daneben ⚠ — kleineres Brain/weniger Kontext`}
|
||||
? " · passt gleichzeitig ✓"
|
||||
: " · passt NICHT gleichzeitig ⚠ — heavy/coder würden das Brain verdrängen. Kleineres Brain oder weniger Kontext."}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user