Repris d'AJEAN 9c7423bf (v0.19.0, renumérotée v0.18.1 par e7b024ad) :
- release moe-v1.1 d'AJEAN, empreintes SHA-256 reprises telles qu'AJEAN les
publie dans son backend_moe.go ;
- avec une carte d'aide, la lecture d'un prompt passe par elle
(STRATA_PREFILL_HELPER_SOURCE=1) et le chemin direct ne garde que les
ajouts sous 48 jetons (--short-read 48 au lieu de 150) ;
- mode hors RAM : réserve de VRAM de la carte d'aide à 640 Mio, contexte
plafonné à 131 072 jetons, marge de RAM portée de 7 à 8 Go (le moteur 1.1
prend ~1 Go de plus) ;
- strataMigrate (moeMigrate d'AJEAN) : au premier lancement d'un modèle
installé avec la 1.0, `loki serve` pose les sources 1.1, reprend
l'environnement Python par un lien quand les dépendances n'ont pas changé,
installe le moteur 1.1, recopie la config de l'installeur en réécrivant ses
chemins, puis repointe les presets et la config vivante ensemble
(l'empreinte du preset actif suit). En cas d'échec, rien n'est réécrit et
la 1.0 continue de tourner.
Les correctifs propres à Loki restent : placement des experts selon la RAM
disponible et mode « depuis le disque » (6aaf9360).
Façade Rust : mêmes constantes et même configuration de lancement
(strata/mod.rs) ; la migration reste au Go, seul à servir un preset Strata.
Journal de parité régénéré sous Linux : noms du paquet tirés des constantes,
étapes du seuil du mode hors RAM recalées sur la nouvelle marge, étape du
contexte plafonné ajoutée.
La consolidation de Jean la nuit et le niveau de réflexion du moteur MoE
(même commit amont) ne sont pas repris : Loki n'a ni Jean ni ce raccourci.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.1 KiB
Avis d'attribution
Loki est un fork de AJEAN, créé par nathaninline et publié sous licence MIT. L'essentiel du code de ce dépôt — moteur d'assistant IA en Go, interface web embarquée, mémoire persistante, accès internet, outils MCP, accès distant chiffré — est l'œuvre du projet AJEAN. Merci à son auteur.
La licence d'origine est conservée à l'identique dans LICENSE.
Modifications apportées par le fork
- Renommage AJEAN → Loki (binaire
loki,LOKI_HOME,/etc/loki, unitsloki-engine/loki-ui). - Conteneurisation : image Docker autonome (llama.cpp compilé CUDA +
binaire Go),
docker-composeet variante Unraid, publication GHCR. - Supervision sans systemd (
sys_service_container.go) : en conteneur, le moteur est piloté par fichier PID au lieu de systemctl — indispensable pour que l'UI puisse redémarrer le moteur (changement de modèle). loki config get/set: lecture/écriture non interactive de la configuration, utilisée par l'entrypoint Docker.- Mode code (
internal/loki/code_*.go,lsp.go,agents/) : agent de code avec critères d'acceptation, passe de vérification indépendante, outils read/grep/glob, politique d'exécution, diagnostics LSP, outils git, jobs d'arrière-plan et relance sur appel d'outil textuel. La conception (contrat builder/verifier, tracker « lu avant d'écrire », auto-retry patterns, table languages.json) est reprise d'OpenFox (MIT) et réécrite en Go pour ce fork ; les prompts de rôles sont des réécritures originales. S'y ajoutent depuis d'autres idées reprises d'OpenFox et réimplémentées ici : les sous-agents (code_subagent.go— un rôle délégué qui travaille dans son propre contexte), la vérification déclenchée quand le builder a fini (statutcompleted, relance sur critères ouverts), le pré-vol qui refuse une écriture dès son chemin (tool_schema_order.go), la réparation des noms d'outils hallucinés (code_alias.go), les consignes du dépôt AGENTS.md / CLAUDE.md (code_instructions.go), l'hygiène du terminal (chat_shell_hygiene.go) et un compactage qui garde l'état du mode Code.
Reprises depuis l'amont après le fork
Le fork continue de suivre AJEAN et y reprend des fonctionnalités, adaptées au
conteneur : le contrôle du navigateur (computer_use.go, computer_cdp.go,
browser_grid.go — pilotage d'un Chromium en CDP, ici celui de Playwright déjà
présent dans l'image) et la préparation des images envoyées au modèle
(web_upload_orient.go — orientation EXIF et redimensionnement), les
notifications Web Push (push.go, web_push.go), les tâches script et
le dossier de scripts (chat_scripts.go, tasks_script.go, tasks_tools.go),
et le chiffrement de la mémoire (mem_crypto.go, mem_vault.go,
mem_store.go, mem_io.go, mem_migrate.go, mem_snapshots.go,
backup_bundle.go). La sauvegarde vers le relais (relay_backup.go) n'est
pas reprise : elle vise ajean.link, le service de l'auteur amont. Loki
expose à la place un export/import de paquet chiffré en fichier local.
Moteur Strata
Le second moteur de Loki (internal/loki/backend_strata.go) est
Strata (MIT), spécialisé dans
Qwen3.8-Flash-Next. Son intégration est reprise d'AJEAN (« AJEAN MoE 1.1 »,
backend_moe.go) : Loki télécharge le paquet figé publié par AJEAN sur sa
release moe-v1.1 (sources de Strata et binaire Linux CUDA 12 compilé, avec
les modifications d'AJEAN), vérifié par SHA-256 avec les empreintes publiées
par AJEAN. La reprise automatique d'une installation 1.0 (strataMigrate) est
reprise d'AJEAN (moeMigrate). Ni Strata ni le modèle ne sont inclus dans
l'image : ils sont téléchargés à la demande.
Services externes
Le tunnel d'accès distant continue de pointer vers ajean.link, le relais opéré par l'auteur d'AJEAN ; le catalogue de modèles intégré est également servi par ajean.link. Ces services appartiennent au projet amont.