Worker Capability Configuration - Spezialisierte Worker ermöglichen #265
Labels
No labels
good first issue
has-pr
help wanted
idea
priority
critical
priority
high
priority
low
priority
medium
status
blocked
status
in-progress
status
needs-review
status
ready
type
bug
type
docs
type
enhancement
type
feature
type
refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#263 feat: WorkerHub Federation - Verteilte Worker-Pools mit Prioritäten
customable/claude-mem
Reference
customable/claude-mem#265
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Aktuell detektieren alle Worker ihre Capabilities automatisch und identisch:
Resultat: Alle Worker sind identisch - keine Spezialisierung möglich.
Anforderung
Worker sollen mit spezifischen Capabilities gestartet werden können:
Lösung: Capability-Auflösung mit Prioritäten
Implementation
1. CLI Arguments erweitern
2. Settings um Profiles erweitern
3. Capability Resolution
4. Labels für Worker
Zusätzlich zu Capabilities können Worker Labels haben (für #263 Federation):
Deployment-Szenarien
Docker Compose mit spezialisierten Workern
Lokale Entwicklung mit Profilen
UI-Erweiterung
Worker-Übersicht zeigt Capabilities pro Worker:
Vorteile
Aufwand
--capabilities,--profile,--labels)WORKER_PROFILES)resolveCapabilities()implementierenAbhängigkeiten
Verwandte Issues
Betrifft auch InProcessWorker
Die Capability-Konfiguration muss auch für den
InProcessWorkerimplementiert werden:Betroffene Dateien:
packages/worker/src/worker-service.ts- Standalone Workerpackages/worker/src/in-process-worker.ts- InProcess Worker (vom Backend gespawnt)InProcessWorker Besonderheit
Der InProcessWorker wird vom Backend via
WorkerProcessManagergespawnt. Hier muss die Capability-Konfiguration durchgereicht werden:UI-Integration (#254)
Das Worker-Modal sollte beim Spawnen auch Capabilities/Profile auswählen können:
Auto-Spawn Konfiguration
Auch das Auto-Spawning (#256) sollte Profile berücksichtigen:
Abstrakte Capabilities statt Provider-spezifische
Problem
Aktuell sind Capabilities Provider-spezifisch:
Der Provider wird aber sowieso beim Worker-Start konfiguriert (
--agent mistral). Die Capability-Provider-Kombination ist also doppelt.Lösung
Capabilities sollten abstrakt sein - der Provider ist separate Konfiguration:
Bereits vorhanden
Es gibt schon
AbstractCapabilityinpackages/types/src/capabilities.ts:Worker-Registration (neu)
Task-Matching (vereinfacht)
Vorteile
Migration
WorkerCapabilityType aufAbstractCapabilityumstellenobservation:mistral) als Fallback parsenSettings-Profile (angepasst)
Task-Prioritäten
Problem
Aktuell werden Tasks nach FIFO (First In, First Out) abgearbeitet. Aber:
claudemd-generatesollte schnell fertig werden (User wartet auf CLAUDE.md)summarizekann warten (Session ist eh schon beendet)observationist mittel-wichtigLösung: Priority-Feld für Tasks
Default-Prioritäten nach Task-Typ
claudemd-generateobservationsummarizeqdrant-syncsemantic-searchTask-Dispatcher Anpassung
Dynamische Priorität
Tasks können ihre Priorität auch erhöhen wenn sie zu lange warten (Starvation Prevention):
UI: Task-Queue mit Prioritäten
API: Priorität beim Queuen setzen
Korrektur: Vollständige Capability-Liste mit Prioritäten
Die
compressionCapability für Endless Mode (Issue #109) war schon definiert:Alle Abstract Capabilities
compressionclaudemd-generatesemantic-searchcontext-generateobservationembeddingqdrant-syncsummarizeCompression bei Pre-Compact
Worker-Profile angepasst
So können dedizierte "realtime" Worker für zeitkritische Tasks (wie Compression vor Compact) bereitstehen.
Implementation Complete ✅
Implemented priority-based capability resolution in commit
3720ab1:Priority Chain (highest first)
--capabilities obs:mistral,sum:mistral)WORKER_CAPABILITIES=obs:mistral,sum:mistral)--profile observerorWORKER_PROFILE=observer)Changes
packages/worker/src/cli.ts:--capabilitiesand--profileoptionsconfigcommand to show configurationprofilescommand to list available profilesparseWorkerProfiles()helper functionpackages/worker/src/worker-service.ts:resolveCapabilities()method with priority chainpackages/worker/src/in-process-worker.ts:resolveCapabilities()method for consistencyUsage
Profile Configuration
Add to
~/.claude-mem/settings.json: