-
Notifications
You must be signed in to change notification settings - Fork 0
Code source
martialzinsou edited this page Sep 21, 2026
·
4 revisions
KarenOs/
├── Sources/
│ └── KarenOS/
│ ├── KarenOSApp.swift ← point d'entrée, onglets, environnement
│ ├── ContentView.swift ← conteneur des onglets
│ ├── ChatView.swift ← interface de discussion + compétence active
│ ├── ChatService.swift ← historique, streaming, appel OpenAI local
│ ├── ModelStore.swift ← registre des modèles installés
│ ├── LocalModel.swift ← modèle de données d'un modèle installé
│ ├── StoreView.swift ← Boutique (recherche, cartes)
│ ├── StoreCard.swift ← carte d'un modèle dans la Boutique
│ ├── StoreDetailSheet.swift ← fiche détail (fichiers, licence, dialogue)
│ ├── HuggingFaceClient.swift ← API Hugging Face (recherche, détails, CDN)
│ ├── DownloadManager.swift ← téléchargement avec progression
│ ├── StoreModel.swift ← modèle de données d'une entrée Boutique
│ ├── Skill.swift ← modèle Skill + SkillStore
│ ├── SkillsView.swift ← onglet Compétences (liste, détail, éditeur)
│ ├── ModelListView.swift ← bibliothèque « Mes modèles »
│ ├── EngineManager.swift ← moteur : install, port libre, lancement, health
│ ├── AppPaths.swift ← chemins vers ~/Library/Application Support
│ └── ...
├── Scripts/
│ ├── make-app.sh ← compilation + assemblage de l'app
│ └── … ← autres scripts d'aide
├── Packaging/
│ └── Info.plist ← propriétés de l'app
├── build/ ← résultat de la compilation (ignoré par git)
├── screenshots/ ← captures d'écran pour le README
├── docs/DOCUMENTATION.md ← documentation complète (schémas Mermaid)
└── README.md
| Fichier | Responsabilité clé |
|---|---|
KarenOSApp.swift |
@main ; construit le SkillStore et l'AgentStore en environmentObject ; configure les 4 onglets. |
Agent.swift |
Modèles Agent, AgentTrigger (manuel/lancement/intervalle), AgentEndCondition (itérations, durée, mot-clé), AgentStore persisté. |
AgentRunner.swift |
Boucle de mission : chargement du modèle de l'agent, itérations en streaming, pause/reprise/arrêt, conditions de fin, restauration du modèle précédent, journal. |
AgentsView.swift |
Onglet Agents : liste, fiche (mission, exécution, journal), éditeur (modèle, déclencheur, boucle, conditions de fin). |
Multimodal.swift |
ChatAttachment (image/vidéo/audio/fichier), panneau de sélection, SpeechInputController (dictée locale SFSpeechRecognizer). |
ContentView.swift |
Le TabView : Mes modèles / Boutique / Agents / Compétences. |
ChatView.swift |
Saisie, envoi, affichage streaming ; menu « Compétence » ; badge de statut ; pièces jointes et micro (multimodal). |
ChatService.swift |
Compile l'historique, insère le prompt système, appelle le moteur, parse les événements SSE, génère le texte ; support vision (contenu multi-part). |
ModelStore.swift |
Charge models.json, déduplique, résout la liste/fichiers, mémorise l'installation. |
StoreView.swift |
Recherche (débounce 450 ms), 12 résultats max, cartes, gestion d'état de la Boutique. |
HuggingFaceClient.swift |
Catégorié par modèle : search, details, resolve (URL CDN d'un fichier). Détecte les modèles gated. |
DownloadManager.swift |
Session de téléchargement avec progrès, reprend/annule proprement, écrit dans Models/. |
EngineManager.swift |
Installation idempotente du moteur, port libre, launch, poll /health (max 120 s), arrêt propre. |
Skill.swift |
Décodage/encodage persistant + systemPrompt (Rôle / Contexte / Obligations). |
SkillsView.swift |
Liste, fiche détail (aperçu du prompt), éditeur avec modèles d'exemples, activation. |
-
Swift strict : typage explicite des modèles de données (
LocalModel,StoreModel,Skill), pas de dépendances externes (pas de CocoaPods / SPM utilisable — buildswiftcnu). - Pas de commentaires superflus : code lisible par lui-même.
-
En-têtes uniformes :
// KarenOS+// Par Martial Zinsousur chaque source. -
UI en SwiftUI :
TabView,List,Sheet,Menu,AsyncImage,Task {}/@State/@EnvironmentObject.
// (pseudo-structure)
func streamReply(messages: [String], baseURL: URL) -> AsyncThrowingStream<String, Error> {
AsyncThrowingStream { continuation in
// 1. build de l'URL /v1/chat/completions
// 2. request POST { messages, stream: true, max_tokens: 512, temperature: 0.7 }
// 3. for try await line in lines {
// parse SSE "data: {delta.content}" → continuation.yield(token)
// }
// 4. "[DONE]" → continuation.finish()
}
}Raccourci : Scripts/make-app.sh puis ouverture de build/KarenOS.app. Voir la page Construction & lancement pour le détail complet.
Voir aussi : Architecture, Persistance.
- Accueil
- Architecture
- Inférence d'un message
- Modèles et Boutique
- Agents autonomes
- Multimodal
- Compétences
- Persistance
- Code source
- Construction & lancement
- Dépannage
- Limites & évolutions
- Home
- Architecture
- Inference of a message
- Models and Store
- Autonomous agents
- Multimodal
- Skills
- Persistence
- Source code
- Build & launch
- Troubleshooting
- Limits & roadmap
Main repository — created by Martial Zinsou