Neues Swift-Package mit lokalen LLM-Backends für alle nativen mana- e.V.-Apps. Lift der bisher Memoro-eigenen Files in `memoro-native/Sources/Core/AI/` plus zwei neue Layer: ManaSharedModels (App-Group-Container-Helper) und ManaLLM-Facade. Library-Products: - ManaLLM — Backend-Abstraktion (FoundationModels, Gemma 4 E2B/E4B, NoOp), Router mit Priority-Liste, High-Level-Facade `ManaLLM.summarize/generate/classify` mit fast/creative/deep Level. - ManaLLMShared — App-Group `group.ev.mana.models` Container, HF_HUB_CACHE-Setup, Legacy-Fallback wenn Group fehlt. Lift-Anpassungen ggü. memoro: - public-Marker auf protocol + types + actors - generischer `generate(prompt:instructions:maxTokens:)` zu LLMBackend-Protocol hinzu; `summarize` als Default-Impl auf Basis von generate - AppleFMBackend behält optimierten @Generable-Summary-Path - GemmaBackend nutzt ManaSharedModels.effectiveCacheURL() statt eigenen Application-Support-Pfad; allowsCellular kommt jetzt als Initializer-Param statt App-Settings-Lookup - LLMRouter: Memoro-spezifische User-Pref-Store-Logic durch Priority-Liste-API ersetzt - LLMLog-Subsystem `ev.mana.llm` statt App-eigenes `Log.ai` Build: `swift build` clean (76s, MLX-Toolchain-Resolution beim ersten Lauf). 4/4 Parser-Tests grün. Doku: ../mana/docs/MANA_LLM.md (Plattform-SOT), CLAUDE.md (Konventionen + Lift-Tabelle). Folge: L-4 Memoro auf ManaLLM umstellen, L-5 pageta-Pilot. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.3 KiB
4.3 KiB
CLAUDE.md — mana-swift-llm
Guidance für Claude Code in diesem Repo.
Plattform-SOT:
../mana/docs/MANA_LLM.mdist die übergreifende Architektur-Doku. Dieses CLAUDE.md ist die Repo-lokale Konventions-Doku.
Was dieses Repo ist
Swift-Package mit lokalen LLM-Backends für alle nativen mana-e.V.- Apps. Zwei Library-Products:
- ManaLLM — Backend-Abstraktion (FoundationModels, Gemma 4,
Router) + High-Level-API (
ManaLLM.summarize,.classify,.generate). Bringt MLX-Swift-LM-Toolchain mit (~30 MB Dep). - ManaLLMShared — App-Group-Container-Helper für gemeinsamen HuggingFace-Cache. Schmale Lib ohne MLX-Dep — Apps die nur den Container brauchen (z.B. für ein anderes Modell-Setup) konsumieren nur das.
Konsumenten heute: memoro-native. Geplant: alle 12 native mana-Apps
(siehe Use-Case-Map in MANA_LLM.md).
Architektur-Invarianten
Beschlossen. Nicht ohne explizite Diskussion antasten.
- Eigenes Repo statt ManaCore-Erweiterung.
mana-swift-corebleibt schlank (Architektur-Invariante "genau zwei Products" — ManaCore + ManaTokens). LLM-Toolchain ist schwer und hat eigenen Versions-Lifecycle (MLX-Swift updates häufig). - MLX-Swift, kein anderer LLM-Stack. Apple-optimierte Inferenz auf Apple Silicon (ANE + GPU + CPU). Keine llama.cpp-Forks, keine eigene Python-Bridge, keine ONNX-Runtime.
- Foundation Models bevorzugt. Apple's System-Modell ist shared-by-OS, gratis, ANE-accelerated. Apps nutzen FM wo immer Capability reicht; Gemma nur wenn FM nicht reicht.
- Public API ist
Sendable. Swift-6-Strict-Concurrency. - Keine PII in Logs. OSLog-Subsystem
ev.mana.llm, alle Transcripts/Prompts mitprivacy: .privatemarkiert. Compliance (mana/docs/COMPLIANCE.md) gilt.
Konventionen
- Swift 6.0 strict concurrency
- iOS 18 / macOS 15 Minimum (für FoundationModels: iOS 26+ — ManaLLM checked Availability zur Runtime)
- MLX-Swift-LM über
branch: main(kein stabiler Tag bis MLX v1.0 — pin auf branch ist die de-facto-Konvention) - Doc-Comments pflicht auf jedem
public-Symbol (///)
Versionierung
- Semver mit häufigen Patch-Releases (MLX-Swift bewegt sich)
- Git-Tags nach jedem Sinn-Abschnitt auf
main - CHANGELOG.md pflicht — was hat sich geändert, was müssen Apps anpassen
Lokal entwickeln
swift build # baut beide Targets
swift test # Tests (FM gated auf macOS 15+)
Für Integration in eine App (memoro-native, später pageta, etc.):
# project.yml
packages:
ManaLLM:
path: ../mana-swift-llm # dev — direktes Path-Dep
# url: https://git.mana.how/till/mana-swift-llm.git
# from: "0.1.0"
targets:
YourApp:
dependencies:
- package: ManaLLM
product: ManaLLM
- package: ManaLLM
product: ManaLLMShared
Cross-Repo-Doks
../mana/docs/MANA_LLM.md— Plattform-SOT../mana/docs/MANA_SWIFT.md— Native-Plattform-SOT../mana/docs/COMPLIANCE.md— Datenschutz / Telemetrie-Regeln../mana-swift-core/CLAUDE.md— Schwester-Package../memoro-native/Sources/Core/AI/— Quell-Code-Ursprung (vor Lift)
Lift-Herkunft
Quelle: memoro-native/Sources/Core/AI/ (2026-05-18). Files
übernommen + generalisiert:
| Original | Hier | Anpassung |
|---|---|---|
LLMBackend.swift |
Sources/ManaLLM/LLMBackend.swift |
+ generische generate(prompt:maxTokens:)-Methode, summarize als Default-Impl |
LLMBackendID.swift |
Sources/ManaLLM/LLMBackend.swift |
inline |
AppleFMBackend.swift |
Sources/ManaLLM/AppleFMBackend.swift |
identisch |
GemmaBackend.swift |
Sources/ManaLLM/GemmaBackend.swift |
huggingFaceCacheRoot() nutzt ManaSharedModels |
LLMRouter.swift |
Sources/ManaLLM/LLMRouter.swift |
Memoro-User-Pref-Logic durch capability-basiertes Routing ersetzt |
NoOpLLMBackend.swift |
Sources/ManaLLM/NoOpBackend.swift |
umbenannt, identisch |
Neu hier (nicht aus memoro):
ManaLLMShared/ManaSharedModels.swift— App-Group-Container-HelperManaLLM/ManaLLM.swift— High-Level Facade API