mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 22:48:11 +02:00
Reprise des commits 91f7f977 (PR #100 de Trombo38) et 1dfac0cf d'AJEAN. Une vidéo jointe (mp4, webm, mov, mkv, avi) part au modèle en partie input_video, et l'outil see_video charge une vidéo du disque, mais seulement si le moteur actif sait la lire : preset llama.cpp local avec projecteur (MMPROJ) et binaire dont l'aide annonce --video-fps (videoInputSupported, aide relue quand le binaire change, chemin des bibliothèques passé à la seule commande pour ne pas figer binHelp). Strata et les API externes ignoraient la partie en silence : la vidéo reste alors un fichier, annoncé avec la marche à suivre (ffmpeg puis see_image), et see_video n'est pas proposé. llama.cpp a --video-fps depuis la PR #24318 (fin août 2026) ; l'image server-cuda officielle, base du conteneur, installe ffmpeg. La consigne de repli dit quoi faire si ffmpeg manque (installation hors conteneur). Adapté à Loki : - la vidéo de see_video est toujours éphémère (jamais dans l'historique, KEEP_TURN_IMAGES compris) ; même ordre de refus que see_image, sonde /props en dernier, refus sur un poste distant ; - une vidéo jointe est rangée par référence (loki-vid:, LOKI_HOME/chatvid, chiffrée comme le fil), parties recopiées et non mutées comme les images ; retirée d'un fil rouvert (stripImageParts, videoLostMarker) et effacée par le ménage des médias ; - marqueur de perte à la compaction, élision dans l'export JSON, relais par l'API interne des outils (vision_video). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
81 lines
4.7 KiB
Markdown
81 lines
4.7 KiB
Markdown
# Avis d'attribution
|
|
|
|
**Loki est un fork de [AJEAN](https://github.com/nathaninline/ajean)**, créé
|
|
par [nathaninline](https://github.com/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`](LICENSE).
|
|
|
|
## Modifications apportées par le fork
|
|
|
|
- **Renommage** AJEAN → Loki (binaire `loki`, `LOKI_HOME`, `/etc/loki`,
|
|
units `loki-engine` / `loki-ui`).
|
|
- **Conteneurisation** : image Docker autonome (llama.cpp compilé CUDA +
|
|
binaire Go), `docker-compose` et 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](https://github.com/co-l/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** (statut `completed`, 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.
|
|
|
|
La **compréhension des vidéos** est reprise d'AJEAN (PR #100 de Trombo38 et
|
|
son correctif « vidéo envoyée seulement si le moteur sait la lire ») :
|
|
l'outil `see_video` et les vidéos jointes (`chat_video.go`,
|
|
`chat_video_tool.go`), lues par llama.cpp avec `--video-fps` et ffmpeg ;
|
|
ailleurs, la vidéo reste un fichier, avec la marche à suivre (ffmpeg puis
|
|
`see_image`). Adaptée à Loki : vidéo de `see_video` toujours éphémère, vidéos
|
|
jointes chiffrées comme le fil et retirées d'un fil rouvert, outil tenu aussi
|
|
par la façade Rust (`imagetools.rs`).
|
|
|
|
## Moteur Strata
|
|
|
|
Le second moteur de Loki (`internal/loki/backend_strata.go`) est
|
|
**[Strata](https://github.com/Niko1221/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.
|