feat: Provider-Agnostic Architecture - Memory Plugin ohne externe Abhängigkeiten #112
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
#198 feat: Import/Migration from thedotmack/claude-mem (Legacy System)
customable/claude-mem
Reference
customable/claude-mem#112
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?
Zusammenfassung
Refactoring von claude-mem zu einem provider-agnostischen Memory-Plugin, das ohne externe Services lauffähig ist (nur SQLite), flexible Provider-Wahl für AI, Embeddings und Vector-DB ermöglicht, und bestehende Patterns (Agent-Registry) konsequent anwendet.
Aktuelle Probleme
Harte Abhängigkeiten
Installations-Hürden
Ziel-Architektur
Implementierungsplan
Phase 1: Vector-DB Optional machen ⭐ Quick Win
Ziel: claude-mem funktioniert ohne Qdrant
Änderungen:
qdrant-syncTask nur erstellen wennVECTOR_DB !== 'none'Phase 2: Embedding Provider Abstraktion
Neues Interface:
Implementierungen:
local(Xenova)mistralopenaivoyagecohereMistral Embedding-Modelle:
mistral-embedcodestral-embedSettings für Mistral:
Phase 3: Vector-DB Abstraktion
Neues Interface:
Implementierungen:
noneqdrantsqlite-vecpineconePhase 4: AI Provider Erweiterung
Fehlende Implementierungen für das bestehende Agent-Interface:
openai-agent.ts- OpenAI GPT-4ogemini-agent.ts- Google Geminiopenrouter-agent.ts- OpenRouter Proxy mit Multi-Model FallbackKonfigurations-Profile
Minimal (Zero-Config)
Local (Selbst-gehostet)
Mistral All-in-One ⭐
Cloud (Vollständig)
Betroffene Dateien
Neue Dateien
packages/worker/src/embeddings/types.tspackages/worker/src/embeddings/index.tspackages/worker/src/embeddings/local-provider.tspackages/worker/src/embeddings/mistral-provider.tspackages/worker/src/embeddings/openai-provider.tspackages/worker/src/vector-db/types.tspackages/worker/src/vector-db/index.tspackages/worker/src/vector-db/none-provider.tspackages/worker/src/vector-db/sqlite-vec-provider.tspackages/worker/src/agents/openai-agent.tspackages/worker/src/agents/openrouter-agent.tsZu refactoren
packages/worker/src/services/qdrant-service.ts→vector-db/qdrant-provider.tspackages/worker/src/handlers/qdrant-sync.ts- Nutzt VectorDatabase Interfacepackages/shared/src/settings.ts- Neue Settingspackages/types/src/capabilities.ts- Neue CapabilitiesAkzeptanzkriterien
VECTOR_DB: 'none')VECTOR_DB: 'none'AI_PROVIDER: 'mistral'Risiken
Geschätzter Aufwand
Migration bestehender Installationen
VECTOR_DB: 'qdrant'wird Default für existierende ConfigsVECTOR_DB: 'none'als DefaultZusammengefasste Issues
Dieses Issue fasst zusammen und ersetzt:
Referenzen
Phase 1 implementiert: Vector-DB optional
Commit:
c0f9694Änderungen
Workers registrieren jetzt
qdrant:syncundsemantic:searchCapabilities nur wennVECTOR_DB === 'qdrant':packages/worker/src/worker-service.ts: Conditional capability registrationpackages/worker/src/in-process-worker.ts: Same change for in-process workersBereits vorhanden
Das
VECTOR_DB: 'none' | 'qdrant'Setting existierte bereits mit Default'none'. Die Search-Route fällt bereits auf FTS5 zurück wenn kein Qdrant aktiv ist.Nächste Schritte (noch offen)
Phase 2 Complete: Embedding Provider Abstraction
Implemented pluggable embedding provider system with registry pattern (commit
6052dea):New Files
packages/worker/src/embeddings/types.ts- EmbeddingProvider interfacepackages/worker/src/embeddings/local-provider.ts- Xenova/transformers.js providerpackages/worker/src/embeddings/mistral-provider.ts- Mistral AI API providerpackages/worker/src/embeddings/index.ts- Provider registry with factory patternSettings Added
EMBEDDING_PROVIDER: 'local' | 'mistral' (default: 'local')MISTRAL_EMBEDDING_MODEL: string (default: 'mistral-embed')Integration
QdrantServiceto use embedding provider registryembedding-handler.tsto use provider from registryProvider Dimensions
Next Steps (Phase 3)