Provider und Interfaces
Zentrale Typen
Abschnitt betitelt „Zentrale Typen“Die wichtigsten öffentlichen Typen liegen in src/lib/types.ts.
Provider-bezogen
Abschnitt betitelt „Provider-bezogen“ProviderKindProviderConfigProviderDescriptorAgentProviderAgentRequestAgentDecision
Verarbeitungs- und UI-bezogen
Abschnitt betitelt „Verarbeitungs- und UI-bezogen“BookmarkSorterSettingsProcessBookmarkOptionsProcessBookmarkResultReviewQueueItemEventLogEntryDashboardStateRuntimeMessageMap
Provider-Implementierungen
Abschnitt betitelt „Provider-Implementierungen“src/lib/providers.ts enthält mehrere Implementierungen:
OpenAiCompatibleProviderfür OpenAI, OpenRouter und LM StudioAnthropicProviderAzureOpenAiProviderOllamaProviderHeuristicFallbackProvider
Schnittstellenverhalten
Abschnitt betitelt „Schnittstellenverhalten“OpenAI-kompatible Endpunkte
Abschnitt betitelt „OpenAI-kompatible Endpunkte“Nutzen POST /chat/completions mit einer einfachen messages-Liste.
Anthropic
Abschnitt betitelt „Anthropic“Nutzt POST /messages mit x-api-key und anthropic-version.
Azure OpenAI
Abschnitt betitelt „Azure OpenAI“Nutzt deploymentspezifische URLs mit api-version.
Nutzt POST /api/chat mit stream: false und format: "json".
Prompt-Aufbau
Abschnitt betitelt „Prompt-Aufbau“buildPrompt() kombiniert:
- Bookmark-Metadaten
- Seiteninformationen
- Einstellungen wie Action- und Folder-Mode
- eine gekürzte Liste von Kandidatenordnern
Die Prompt-Basis kommt aus settings.promptTemplate oder DEFAULT_PROMPT.
Fallback-Verhalten
Abschnitt betitelt „Fallback-Verhalten“createSafeProvider() schützt den Rest des Systems vor unvollständiger Konfiguration oder Provider-Fehlern beim Erzeugen des Clients. Wenn notwendige Felder fehlen, wird der heuristische Provider verwendet.
Zielordner-Auflösung
Abschnitt betitelt „Zielordner-Auflösung“Die Zielordner-Auflösung ist inzwischen auf mehrere Module verteilt:
bookmark-roots.tsklassifiziert Root-Bereiche wie Lesezeichenleiste oder Andere Lesezeichenbookmark-tree.tsnormalisiert Titel und Pfadsegmentebookmark-resolver.tsergänzt bei Bedarf den bevorzugten Root und löst vorhandene Ordner im Tree auf
So fügst du einen neuen Provider hinzu
Abschnitt betitelt „So fügst du einen neuen Provider hinzu“ProviderKindinsrc/lib/types.tserweiternPROVIDERSundDEFAULT_SETTINGSinsrc/lib/default-settings.tsergänzen- Konfigurationsanforderungen in
hasProviderConfiguration()ergänzen - konkrete Provider-Klasse in
src/lib/providers.tsimplementieren - Auswahl in
createProvider()ergänzen - Dashboard-Felder prüfen, falls zusätzliche Konfiguration benötigt wird