Commit Graph
75 Commits
Author SHA1 Message Date
Claude 54921053c4 Plan : validation des étapes en direct (point par point)
Le plan s'affichait mais restait figé — on ne voyait pas le modèle
avancer. Désormais :

- Le modèle annonce chaque étape accomplie (« ✅ Étape N terminée »),
  demandé dans la consigne de plan.
- L'agent détecte ces annonces dans le flux et émet des événements
  plan_step, sans jamais recompter deux fois la même étape.
- Le panneau PLAN coche les étapes en temps réel : ✓ vert + barré pour
  les faites, sablier sur l'étape en cours, compteur « n/N validées ».

Chemin agent uniquement (le moteur code tourne de bout en bout). Les
messages passés restent affichés tels quels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-20 12:45:32 +00:00
Claude de4ec1d919 Isole la mémoire par discussion : RAG inter-sessions désactivé par défaut
La mémoire long-terme rappelait des échanges d'AUTRES sessions dans la
discussion en cours : demander « un jeu d'échecs » ressortait une « appli
sport » demandée ailleurs, et déroutait les petits modèles.

- rag_enabled désactivé par défaut : chaque discussion ne se souvient que
  d'elle-même (résumé + messages récents, déjà en place).
- Migration v7 : désactive le RAG une fois sur les installs existantes
  (la valeur persiste en base /data) ; réactivable dans Réglages.
- Rappel plus strict quand le RAG est activé : seuil de similarité 0.45 -> 0.6.
- Réglages : libellé clarifié (« Mémoire entre sessions »).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-20 11:47:58 +00:00
Claude c36db0b862 Édition fiable, suppression de workspace et confinement strict
- edit_file : correspondance tolérante (indentation/espaces ignorés,
  repli ligne à ligne + réindentation) pour que les petits modèles
  éditent sans devoir tout réécrire ; message d'erreur plus utile.
- Prompt système : privilégier edit_file pour modifier, write_file
  seulement pour créer ; rappel de rester dans le workspace.
- Suppression de fichiers/dossiers du workspace : route DELETE
  /api/files + boutons × dans l'arborescence (fichiers et dossiers).
- Confinement renforcé : garde-fou run_shell (refus des chemins absolus
  hors workspace, ~ et remontées ../) et code_task/Aider (fnames
  résolus et confinés au workspace).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-19 14:37:44 +00:00
MichaelandClaude Opus 4.8 b0018e8313 feat(ui): sélecteur de modèle dans le composer, retiré du TopBar
Le chip modèle du composer était décoratif (pastille orange fixe) alors
que le TopBar montrait le vrai état de chargement. Le sélecteur complet
(liste + pastille GPU/CPU/à charger/préchargement) vit maintenant dans
la carte du chat, menu vers le haut.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:31:59 +02:00
MichaelandClaude Opus 4.8 bb8e87b612 fix(agent): coupe-circuit de réflexion en cours de flux
La relance après « pensée seule » n'agissait qu'à la fin de la
génération : un modèle thinking pouvait ruminer des minutes (jusqu'à
épuiser num_predict) avant qu'elle n'intervienne — vécu comme « aucune
réponse » en mode plan.

Pensée > 12 000 caractères sans aucun contenu ni appel d'outil : la
génération est interrompue immédiatement et la relance repart.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:28:51 +02:00
MichaelandClaude Opus 4.8 9f56989cc2 fix(mcp): noms d'outils à tirets (Context7) + read_file sur dossier
Les noms MCP à tirets (resolve-library-id) cassaient le tool-calling :
modèles et grammaires mélangent tirets et underscores -> « Tool not
found ». Les noms exposés sont assainis en underscores avec table de
correspondance vers le vrai nom, et l'appel tolère les deux formes.

read_file sur un dossier disait « fichier introuvable » : message
explicite « c'est un dossier — utilise list_dir ».

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:26:27 +02:00
MichaelandClaude Opus 4.8 7d1fa8913d fix(web): servir le favicon en production
Le fallback SPA renvoyait index.html pour /favicon.svg : l'icône
n'apparaissait jamais. Les fichiers statiques racine existants sont
maintenant servis tels quels, le reste retombe sur index.html.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:01:43 +02:00
MichaelandClaude Opus 4.8 a85341da32 docs: projets par session
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:00:46 +02:00
MichaelandClaude Opus 4.8 abb7d2ea1f feat(ui): chip projet dans le composer + aperçu réductible
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:58:58 +02:00
MichaelandClaude Opus 4.8 5e7461096b feat(projets): client API + store re-racinés par projet
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:57:34 +02:00
MichaelandClaude Opus 4.8 0291831479 feat(projets): chat, aides de contexte et Aider suivent le projet de la session
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:48:43 +02:00
MichaelandClaude Opus 4.8 b781b92631 feat(projets): routes /api/projects + files et git re-racinés
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:47:04 +02:00
MichaelandClaude Opus 4.8 8d0b57ad0d feat(projets): racine active par contextvar + projet par session
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:32:37 +02:00
MichaelandClaude Opus 4.8 25a88dd879 docs: plan d'implémentation projets + aperçu réductible
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:18:13 +02:00
MichaelandClaude Opus 4.8 ba10a4396e docs: spec projets (répertoires de travail par session) + aperçu réductible
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:06:04 +02:00
MichaelandClaude Opus 4.8 a1380d0bf8 fix(chat): heartbeat SSE pendant la préparation + think=False sur les appels auxiliaires
Le déplacement de la préparation (plan, recall RAG) dans le flux SSE
laissait un silence total pendant le chargement d'un gros modèle : le
reverse proxy coupait la connexion (« Connexion interrompue pendant le
chargement du modèle »). Avec la réflexion active, l'appel de plan
laissait en plus le modèle penser — silence encore plus long.

- ping SSE toutes les 10 s pendant la préparation du contexte
- plan / auto-critique / résumé : think=False (repli automatique si le
  modèle refuse le paramètre) — un appel utilitaire ne réfléchit jamais

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 01:01:49 +02:00
MichaelandClaude Opus 4.8 da76b8192d fix(agent): mode réflexion — relance sur pensée pure + pensée hors historique
Avec la réflexion activée sur les longues tâches, le modèle brûlait tout
son budget de génération à penser : done sans contenu ni appel d'outil,
la boucle s'arrêtait et la tâche restait inachevée.

- itération « réflexion seule » : relance avec consigne d'agir ; si ça
  recommence, think est coupé pour la fin du tour (+ notice)
- marge num_predict >= 6144 quand la réflexion est active
- la pensée reste affichée dans l'UI mais n'est plus renvoyée au modèle
  (elle regonflait le contexte à chaque itération)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 00:48:23 +02:00
MichaelandClaude Opus 4.8 f87ac32f88 perf(tools): filtrage signal/bruit des sorties d'outils (façon rtk)
Les résultats d'outils dévoraient le contexte du modèle : sortie shell
tronquée aveuglément à 4000 c. (bruit gardé, erreur parfois coupée),
gros fichiers lus en entier.

- run_shell : succès = 12 dernières lignes ; échec = lignes d'erreur
  + fin de sortie, répétitions dédupliquées (« ligne ×N »)
- read_file : fenêtres de 200 lignes avec marche à suivre
  (start_line=N pour la suite, grep_search pour cibler)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 00:46:33 +02:00
MichaelandClaude Opus 4.8 bddab1c619 feat(agent): mémoire de travail code — récap session + état workspace
« Corrige les bugs » partait à Aider sans contexte (quel fichier ? quel
projet ?) et le chemin agent ignorait quels fichiers existaient — le
modèle collait alors le code en chat au lieu de modifier le fichier.

- moteur code : récap de session (demande initiale + dernières demandes
  + fichiers touchés) préfixé à l'instruction ; fichiers de la session
  passés à Aider quand aucun n'est cité
- chemin agent : liste des fichiers du workspace + fichiers de la tâche
  injectée chaque tour en système
- directive renforcée : « ne colle JAMAIS le code corrigé dans ta
  réponse sans l'avoir écrit dans le fichier »

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 00:43:39 +02:00
MichaelandClaude Opus 4.8 584d28a9d0 fix(router): reprise de code — routage contextuel + directive d'action
Sur une reprise (« ajoute un bouton », « continue »), le routeur ne voyait
que le message courant : score trop bas, jamais le moteur code, et le
modèle décrivait les changements sans les appliquer.

- routage contextuel : si le tour précédent était du code (engine ou
  outils write_file/edit_file/code_task), les suites courtes partent au
  moteur code (is_code_followup)
- chemin agent sur session code : directive système « AGIS avec les
  outils, ne décris jamais sans appliquer »
- fichiers cités dans le message et présents au workspace transmis à
  Aider (travail direct, sans deviner via la repo map)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 00:42:06 +02:00
MichaelandClaude Opus 4.8 99747d96e0 fix(mcp): timeout connexion 90s (premier npx) + message d'erreur explicite
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 22:58:41 +02:00
MichaelandClaude Opus 4.8 a34f997950 fix(agent): tâches longues — élagage contexte + ctx 16k + garde SEARXNG_URL
Sur un long tour, les gros résultats d'outils (MCP 8 Ko, shell 4 Ko)
saturaient num_ctx et Ollama tronquait silencieusement le DÉBUT de la
conversation : le modèle perdait la consigne et « oubliait » sa tâche.

- élagage : les résultats d'outils des itérations passées sont compactés
  (350 c. + marqueur), le dernier lot reste intact
- num_ctx 16384 par défaut (migration v6 : les profils restés sur les
  anciens défauts 4096/8192 sont montés, les valeurs perso respectées)
- serveur MCP avec paramètre requis manquant (SEARXNG_URL) : refus clair
  au démarrage au lieu d'un échec cryptique à chaque appel

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 22:08:59 +02:00
MichaelandClaude Opus 4.8 71f8ba0d03 feat: toggle skills UI + Node.js dans l'image + docs MCP/skills
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 17:15:02 +02:00
MichaelandClaude Opus 4.8 d19624b46b refactor(agent): vérification JS via _verify_written (déjà auto après écriture)
L'auto-check séparé dans la boucle agent doublonnait _verify_written et
signalait à tort les fichiers écrits par morceaux (mode append).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 17:04:47 +02:00
MichaelandClaude Opus 4.8 c92e4d4a13 feat(agent): run_check statique + vérification auto après écriture
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 17:03:58 +02:00
MichaelandClaude Opus 4.8 31dce6036b feat(skills): 5 méthodes expertes auto-injectées (routeur lexical)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 17:02:40 +02:00
MichaelandClaude Opus 4.8 afe0a837d4 feat(mcp): onglet Configuration — catalogue, toggles, test de connexion
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 17:00:55 +02:00
MichaelandClaude Opus 4.8 91e0a9f0b2 feat(mcp): outils MCP dans la boucle agent (dispatch async + notices)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 17:00:02 +02:00
MichaelandClaude Opus 4.8 e09af9c9bb feat(mcp): routes GET/PUT/test du catalogue de serveurs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 16:59:30 +02:00
MichaelandClaude Opus 4.8 6ae0d5cbd1 feat(mcp): gestionnaire de sessions lazy + conversion schémas + appels
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 16:58:34 +02:00
MichaelandClaude Opus 4.8 76677637a1 feat(mcp): catalogue préconfiguré + état persisté + infra pytest
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 16:44:59 +02:00
MichaelandClaude Opus 4.8 7fd6edf503 docs: plan d'implémentation MCP + skills + run_check
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 16:43:03 +02:00
MichaelandClaude Opus 4.8 aaaad83277 docs: spec MCP client + skills auto + boucle code vérifiée
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 16:23:24 +02:00
MichaelandClaude Opus 4.8 cb2872c78a perf: fix model reload thrash and cut time-to-first-token
Ollama reloaded the chat model mid-message because plan/summary/router
calls sent divergent runner options (no num_ctx/num_batch) and omitted
keep_alive — the main cause of perceived slowness.

- share one keep-alive httpx.AsyncClient for all Ollama calls
- unify runner options (runner_options) + keep_alive on every model
  call, embeddings included
- drop the blocking LLM routing fallback (pure lexical heuristic)
- run RAG recall + plan + code-model pick in parallel inside the SSE
  stream, after the start event
- RAG cosine scoring off the event loop; cache /api/tags 30s and
  nvidia-smi 5s; frontend polls 2s->5s, warm poll backoff, dedup
  config fetch

feat: working session menu in TopBar (switch/create/rename/delete)
feat: workspace file deletion (DELETE /api/files + UI trash buttons)
docs: recommended Ollama env vars (KEEP_ALIVE, MAX_LOADED_MODELS...)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 13:58:18 +02:00
Claude 552548e4b4 Niveau supérieur (inspiré de Jean) : modes Plan/Build/Yolo + panneau Git & Diff
Modes d'exécution (composer) :
- routes/chat : champ mode ; _apply_mode adapte la config —
  plan = outils lecture seule + plan forcé ; yolo = confirm_shell off ;
  build = comportement normal.
- Frontend : ModeSelector dans le composer, mode dans le store + requête chat.

Panneau Git & Diff (le workspace est un dépôt git, Aider commite) :
- routes/git : /api/git/log (commits), /api/git/diff (commit ou working),
  /api/git/revert (git revert --no-edit, confiné au workspace).
- Frontend : onglet Git dans le PreviewPanel — liste des commits, diff
  colorisé, bouton Annuler (revert) avec rafraîchissement de l'arbo.

Bonus : le panneau Matériel explique que « GPU déclaré 12 Go » vient de
GPU_VRAM_MB (valeur manuelle) — à corriger en 16000 pour une 16 Go.

Tests : git log/diff/revert, modes plan/yolo/build via la route chat, builds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-15 23:48:06 +00:00
Claude ffac092a7f Fix chargement modèles : préchargement avec les mêmes options + alerte VRAM
Recherche : un modèle plus gros que la VRAM (ex. qwen3.6:35b-a3b ~20 Go sur
16 Go) déborde sur le CPU et charge lentement ; et le préchargement chargeait
un runner aux options par défaut, aussitôt rechargé par le 1er message avec un
num_ctx différent — double chargement d'un gros modèle.

- ollama_client.warm : accepte et transmet les options de génération.
- routes/models : start_model_warm calcule les options depuis la config du
  modèle (ollama_options) et les passe au warm -> runner identique au chat,
  plus de rechargement. Après chargement, détecte le placement via /api/ps
  (gpu/cpu/mixte + %) et l'expose dans l'état de warm.
- Frontend : warmModel renvoie l'état ; si le modèle se charge sur CPU/mixte,
  message d'alerte clair (trop gros pour la VRAM, choisir plus petit/quant).

Tests : options transmises au warm, placement 'mixte 65%' détecté, builds OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-15 23:26:46 +00:00
Claude f174c8d58d Panneau Matériel : GPU vu par Loki vs GPU utilisé par Ollama
- routes/system : /api/system/hardware — liste les GPU vus par le conteneur
  (nvidia-smi, multi-GPU) ou l'override GPU_VRAM_MB, et le placement réel des
  modèles chargés côté Ollama (GPU/CPU/mixte + VRAM) via /api/ps.
- config : réintègre gpu_vram_mb / gpu_name (perdus lors d'une fusion).
- UI : carte MATÉRIEL dans Configuration (rafraîchie toutes les 5 s) montrant
  les deux points de vue et si Ollama est local ou distant.

Répond à « l'appli est-elle réservée à la 3060 ? » (non) et permet de voir
tout de suite si Ollama charge un modèle sur CPU faute de support GPU.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-15 23:16:09 +00:00
Claude f7cdd254a1 Marqueur de version + fix bench JSON
- config/main : LOKI_VERSION (git sha), exposé via /api/health et /api/version ;
  affiché dans la barre du haut. Permet de vérifier que l'image déployée est
  bien à jour (cause fréquente de 'les nouveautés n'apparaissent pas').
- Dockerfile : ARG/ENV LOKI_VERSION ; workflow : build-arg = github.sha.
- bench : corrige un bug de précédence d'opérateur dans l'épreuve JSON
  (le tuple de retour était malformé quand l'extraction était partielle).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-07 16:44:19 +00:00
Michael 803b28a39a Stabilise Ollama et les benchmarks longs 2026-07-07 15:56:04 +02:00
Michael c9b6c8bb3e Évite le timeout du préchargement 2026-07-07 15:34:08 +02:00
Michael 0f6abf6dde Fiabilise le préchargement et le benchmark 2026-07-07 15:25:12 +02:00
Claude d9169a1d27 Préchargement des modèles : warm + keep_alive + indicateur d'état
Évite le rechargement lent quand Ollama a déchargé le modèle de la VRAM :
- ollama_client.warm() : précharge un modèle (/api/generate sans prompt) ;
  chat() accepte keep_alive (durée de rétention en VRAM).
- agent.run_agent transmet keep_alive ; route chat le passe depuis la config.
- config : champ keep_alive (défaut 30m) par profil de modèle.
- routes/models : POST /api/models/warm, GET /api/models/loaded (placement
  GPU/CPU via /api/ps).
- main : préchargement du modèle par défaut au démarrage (arrière-plan,
  best-effort — n'empêche pas le démarrage si Ollama est absent).
- Frontend : préchargement automatique à la sélection d'un modèle, poll des
  modèles chargés (8s), pastille verte (GPU) / orange (CPU) / blanche (à
  charger) dans le sélecteur, réglage 'Maintien en VRAM' dans Configuration.

Tests : warm/loaded routes, keep_alive transmis, démarrage résilient sans
Ollama, build front.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-07 12:07:08 +00:00
Claude d9be1c4dda Les 5 évolutions : plan, auto-critique, RAG, vérif HTML, benchmark
1. Plan-puis-exécute (enhance.make_plan) : les demandes complexes sont
   décomposées en 3-5 étapes (event SSE 'plan', carte PLAN dans le fil,
   meta.plan persisté) ; le plan guide l'agent et le moteur code.
2. Auto-critique « Qualité + » (enhance.self_review, toggle Intelligence) :
   critique éclair puis révision de la réponse (event 'revision').
3. Mémoire long-terme RAG (rag.py) : échanges vectorisés via /api/embed
   (modèle d'embedding auto-détecté), rappel cosinus top-3 inter-sessions
   injecté en contexte, indexation en arrière-plan, élagage à 2000 souvenirs.
4. Vérification HTML (tools.check_html) : références locales cassées et
   balises déséquilibrées ; branchée sur l'auto-vérification des outils ET
   sur le moteur code avec une passe d'auto-correction Aider.
5. Benchmark intégré (bench.py + /api/bench) : 5 épreuves notées /100
   (appel d'outil, code exécuté en sous-processus isolé, consignes, JSON,
   format), streaming SSE, scores stockés ; carte BENCHMARK dans l'UI.

Config : plan_mode / self_review / rag_enabled / embed_model + carte
Intelligence (3 toggles). Client SSE : events plan/revision ; PlanCard.

Tests : heuristique+parsing du plan, révision, index/rappel RAG (exclusion
de la session courante), html_check, bench 100/100 sur modèle simulé,
intégration chat HTTP (event plan + meta persisté), build front.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-07 11:47:46 +00:00
Claude cf1444f7c0 Niveau supérieur : mémoire compressée, outils chirurgicaux, modèle code auto
Faire d'un petit modèle un bon agent :
- memory.py : contexte = invite + résumé des anciens tours + 10 derniers
  messages ; résumé régénéré en arrière-plan après chaque réponse (colonne
  summary sur sessions, migration douce). Contexte court = modèle concentré
  et qui tient sur le GPU.
- tools.py : edit_file (recherche/remplacement exact, erreurs pédagogiques,
  unicité exigée), grep_search (regex bornée, dossiers ignorés), et
  vérification syntaxique auto (.py/.json) après chaque écriture — l'erreur
  revient au modèle qui se corrige dans le même tour.
- coder.pick_code_model : les tâches de code vont au meilleur modèle code
  installé (qwen-coder, deepseek-coder…) via config code_model=auto.
- Branché dans la route chat (mémoire + résolution du modèle code) et la
  boucle agent (code_task) ; UI : descriptions et glyphes des nouveaux outils.

Tests : edit/grep/vérification, compression mémoire (19 msgs -> 12 dont
résumé), pick auto/explicite, chat HTTP de bout en bout, build front.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-07 09:17:46 +00:00
Claude 6d13dbf442 Fix build Docker : aligne les dépendances sur les pins d'Aider
aider-chat 0.86.2 fige fastapi==0.128.8, pydantic==2.12.5 et psutil==7.2.2,
en conflit avec nos anciens pins (fastapi 0.115.6, psutil 6.1.1) -> pip
ResolutionImpossible pendant le build de l'image. On aligne nos versions sur
celles d'Aider (résolution vérifiée par pip --dry-run sur venv vierge ;
/api/system/stats testé OK avec psutil 7).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-02 05:35:16 +00:00
Claude ac801aa71b Moteur code façon Claude Code : Aider intégré avec routage automatique
- coder.py : enveloppe Aider (version figée 0.86.2), commits git auto dans le
  workspace, verrou d'exécution, dégradation propre si absent
- router.py : classification automatique de chaque message (heuristique
  lexicale + micro-classification LLM sur les cas ambigus) — invisible pour
  l'utilisateur
- routes/chat.py : routage code/agent, chemin code avec keepalive SSE,
  cartes fichier + commit dans le fil, meta.engine persisté
- agent.py : outil code_task exécuté en thread — l'agent peut coder lui-même
- tools/agent_config : code_task enregistré (actif par défaut), invite système
  mise à jour
- main.py : workspace auto-initialisé en dépôt git au démarrage
- Dockerfile : git ; requirements : aider-chat==0.86.2
- UI : glyphe code_task, description outil, aperçu d'instruction

Tests : heuristiques 7/7, routage HTTP code+agent de bout en bout (SSE,
meta persistée), agent appelant code_task, build front.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
2026-07-02 05:27:58 +00:00
Michael ecadf55743 Add real-time system stats (CPU/RAM/GPU/VRAM) and fix favicon
Favicon now matches the LokiMark topbar icon instead of an unrelated
arrow glyph. New /api/system/stats endpoint (psutil + nvidia-smi)
polled every 2s and shown in the topbar next to the Ollama status.
2026-07-01 14:56:50 +02:00
Michael b9bccac4ba add stop streaming and robust code copy 2026-06-30 20:12:20 +02:00
Michael c794d58718 save full agent config per model 2026-06-30 19:31:09 +02:00
Michael f6793daed3 improve session activity and model display 2026-06-30 19:19:49 +02:00