Aller au contenu

Configuration

Lore utilise un système de configuration en cascade.

Fichiers de configuration

Fichier Rôle Git
.lorerc Configuration partagée du projet Committé
.lorerc.local Surcharges personnelles (clés API) Gitignore (chmod 600)
LORE_* env vars Surcharges CI/automation
--language flag Surcharge CLI

Ordre de résolution (priorité décroissante) : flags CLI > env vars > .lorerc.local > .lorerc > défauts.

Référence complète

# .lorerc — config partagée
language: "fr"              # "en" ou "fr" — langue de l'interface

ai:
  provider: ""              # "anthropic", "openai", "ollama", ou "" (zéro-API)
  model: ""                 # Nom du modèle
  # api_key: ""             # Clé API (préférer set-key ou env var LORE_AI_API_KEY)
  # endpoint: ""            # URL endpoint custom (pour Ollama, Groq, Together, etc.)
  # timeout: 60s            # Timeout pour les appels API IA

angela:
  # mode: draft             # DÉPRÉCIÉ — aucun effet à l'exécution. Choisissez le mode via la sous-commande : `lore angela draft|polish|review`
  # max_tokens: 8192         # Optionnel : surcharge le max tokens auto-calculé (défaut : dynamique par mode)

  polish:
    backup:
      enabled: true          # Crée un backup pré-polish du source avant chaque écriture
      path: polish-backups   # Sous-répertoire sous le state dir
      retention_days: 30     # Supprime les backups plus vieux que N jours (0 = garder pour toujours)
    log:
      retention_days: 30     # polish.log : garde les entrées des N derniers jours (0 = désactive filtre date)
      max_size_mb: 10        # polish.log : trim des plus anciennes pour rester sous ce cap (0 = désactive cap)

  gc:
    corrupt_quarantine:
      retention_days: 14     # Supprime les fichiers state *.corrupt-<ts> plus vieux que N jours (0 = garder pour toujours)

hooks:
  post_commit: true          # Activer le hook post-commit
  star_prompt: true          # Afficher le prompt star
  star_prompt_after: 5       # Afficher le prompt star après N commits documentés (0 = désactivé)
  amend_prompt: true         # Demander "Documenter ce changement ?" lors de git commit --amend

notification:
  mode: auto                 # auto, terminal, dialog, notify, silent
  disabled_envs: []          # Environnements à ignorer (ex. ["vim"])
  amend: true                # Activer les notifications pour les amend commits

decision:
  threshold_full: 60         # Score >= 60 : questionnaire complet
  threshold_reduced: 35      # Score 35-59 : questions réduites
  threshold_suggest: 15      # Score 15-34 : suggestion de skip (confirmation)
  always_ask: [feat, breaking]  # Toujours demander pour ces types de commit
  always_skip: [docs, style, ci, build]  # Auto-skip pour ces types
  learning: true             # Activer l'apprentissage LKS
  learning_min_commits: 20   # Minimum de commits avant activation du learning

templates:
  dir: .lore/templates

output:
  format: markdown
  dir: .lore/docs

Branch Awareness (branche git)

Depuis l'Angela Enhancement Sprint, lore capture la branche git et le scope du commit conventionnel au moment du commit et les stocke dans le front matter du document :

---
type: feature
date: 2026-04-01
commit: a1b2c3d
branch: feature/auth        # branche git courante
scope: auth                 # parsé depuis "feat(auth): ..."
---

Les deux champs se propagent dans tout le pipeline — hook → question flow → template → stockage → LKS store — et apparaissent dans les dialogs de notification pour que vous voyiez à quelle branche appartient un commit en attente.

Désactivation

Branch et scope utilisent omitempty dans la sortie YAML : les docs créés sur une HEAD détachée ou depuis des commits sans scope conventionnel les omettent simplement. Aucune configuration nécessaire.

Impact sur le workflow amend

Quand vous faites git commit --amend et qu'un doc existe déjà pour le commit pré-amend, lore demande Document this change? [Y/n] (Question 0) puis propose [U]pdate / [C]reate / [S]kip. Configurable :

hooks:
  amend_prompt: true       # Mettre à false pour ignorer la Question 0
notification:
  amend: true              # Activer les notifications pour les commits amend

Voir Détection contextuelle pour le comportement complet.

Surcharges personnelles

# .lorerc.local — personnel, gitignore, chmod 600
ai:
  provider: "anthropic"
  model: "claude-sonnet-4-20250514"
  api_key: "sk-ant-..."     # Stockée ici ou dans le trousseau OS

Variables d'environnement

Variable Équivalent
LORE_LANGUAGE language
LORE_AI_PROVIDER ai.provider
LORE_AI_API_KEY ai.api_key

Valider la configuration

lore doctor --config

Vérifie les fautes de frappe, clés inconnues, et suggère des corrections via distance de Levenshtein.

Configurations typiques

Développeur solo (minimaliste)

# .lorerc — juste l'essentiel
hooks:
  post_commit: true
output:
  dir: .lore/docs

Pas d'IA, pas de config de langue. Anglais par défaut, mode zéro-API.

Projet open source

# .lorerc — committé dans le repo
language: "en"
hooks:
  post_commit: true
  star_prompt_after: 5
decision:
  always_ask: [feat, breaking]
  always_skip: [docs, style, ci]
output:
  dir: .lore/docs

Le prompt star encourage les contributeurs à mettre une étoile. Le Decision Engine ignore les commits triviaux automatiquement.

Équipe avec IA

# .lorerc — config partagée (committée)
language: "en"
ai:
  provider: "anthropic"
  model: "claude-sonnet-4-20250514"
hooks:
  post_commit: true
angela:
  max_tokens: 8192
# .lorerc.local — personnel (gitignore, chmod 600)
ai:
  api_key: "sk-ant-..."

Chaque membre de l'équipe stocke sa propre clé API. La config partagée définit le fournisseur et le modèle.

angela.max_tokens — Quand défini, cette valeur remplace la limite auto-calculée. Par défaut, Angela calcule max_tokens dynamiquement selon la taille du document (word_count × 1.3 × 1.8, plafonné à 8192, plancher 512). Si vous définissez angela.max_tokens: 10000 dans .lorerc, cette valeur est toujours utilisée. Augmentez-la si Angela avertit que « l'entrée dépasse la sortie max » ou si les réponses sont tronquées.

Clés de sûreté & rétention polish

Clé Défaut Ce qu'elle contrôle
angela.polish.backup.enabled true Si polish écrit un backup pré-polish dans polish-backups/ avant de toucher la source. Désactiver échange sûreté contre vitesse ; un avertissement « première fois désactivé » est affiché une seule fois par state dir.
angela.polish.backup.path polish-backups Sous-répertoire sous le state dir où les backups atterrissent.
angela.polish.backup.retention_days 30 Les backups plus vieux que N jours sont supprimés par lore doctor --prune (et en side-effect de chaque run polish). 0 = garder pour toujours.
angela.polish.log.retention_days 30 Les entrées polish.log plus vieilles que N jours sont droppées au prune. 0 = désactive le filtre date.
angela.polish.log.max_size_mb 10 Après le filtre date, si polish.log dépasse ce cap, les plus anciennes entrées sont trimmées jusqu'à passer sous. 0 = désactive le cap.
angela.gc.corrupt_quarantine.retention_days 14 Les fichiers de state quarantinés *.corrupt-<ts> plus vieux que N jours sont supprimés au prune. Symlinks et fichiers non-réguliers sont toujours ignorés. 0 = garder pour toujours.

Lancez lore doctor --prune --dry-run pour prévisualiser l'effet de votre policy de rétention avant de l'appliquer. Voir lore doctor pour la référence complète de la commande.

Projet bilingue (FR/EN)

# .lorerc
language: "fr"
hooks:
  post_commit: true

Tous les messages UI, prompts, badges et messages de renforcement passent en français. "Lore" devient "L'or."

Configuration du fournisseur IA

Les commandes polish et review d'Angela nécessitent un fournisseur IA. Trois fournisseurs sont supportés, chacun avec des compromis différents.

Anthropic (Claude)

Meilleure qualité pour la documentation technique. Nécessite des crédits API achetés séparément d'un abonnement chat Claude.ai.

Étape 1 — Obtenir une clé API :

  1. Allez sur console.anthropic.com et inscrivez-vous (ou connectez-vous)
  2. Naviguez vers Settings → API Keys → Create Key
  3. Copiez la clé (commence par sk-ant-...)
  4. Ajoutez des crédits : Settings → Plans & Billing → Add Credits (minimum $5)

Important : Un abonnement chat Claude.ai (Pro, Team) n'inclut PAS de crédits API. L'API est un produit séparé facturé sur console.anthropic.com. Vous avez besoin de crédits même si vous payez pour Claude.ai.

Étape 2 — Configurer lore :

# .lorerc
ai:
  provider: "anthropic"
  model: "claude-sonnet-4-20250514"  # ou claude-haiku-4-5-20251001 (moins cher)
# Stocker la clé API dans le trousseau OS
lore config set-key anthropic
# → Entrez la clé API : sk-ant-...

Étape 3 — Tester :

lore angela draft --all                                  # gratuit, pas d'API
lore angela polish <votre-doc>.md --dry-run              # 1 appel API, aperçu seulement
lore angela review                                       # 1 appel API, analyse du corpus
Élément Détail
Inscription console.anthropic.com
Clés API Settings → API Keys → Create Key
Ajouter des crédits Settings → Plans & Billing → Add Credits ($5 minimum)
Coût par polish ~$0.01–0.05 (Sonnet), ~$0.001 (Haiku)
Endpoint https://api.anthropic.com/v1/messages (automatique)
Modèles claude-sonnet-4-20250514 (recommandé), claude-haiku-4-5-20251001 (le moins cher)

OpenAI (GPT)

Étape 1 — Obtenir une clé API :

  1. Allez sur platform.openai.com/api-keys et inscrivez-vous (ou connectez-vous)
  2. Cliquez Create new secret key, nommez-la (ex : "lore")
  3. Copiez la clé (commence par sk-...)
  4. Ajoutez des crédits : Settings → Billing → Add payment method puis Add credits ($5 minimum)

Note : Un compte API OpenAI est séparé d'un abonnement ChatGPT. L'API utilise des crédits prépayés — pas de facturation récurrente sauf si vous activez l'auto-recharge.

Étape 2 — Configurer lore :

# .lorerc
ai:
  provider: "openai"
  model: "gpt-4o-mini"  # le moins cher, ou gpt-4o pour la meilleure qualité
# Stocker la clé API dans le trousseau OS
lore config set-key openai
# → Entrez la clé API : sk-...

Étape 3 — Tester :

lore angela polish <votre-doc>.md --dry-run              # aperçu des changements
lore angela review                                       # analyse du corpus
Élément Détail
Inscription platform.openai.com
Clés API platform.openai.com/api-keys
Ajouter des crédits Settings → Billing → Add credits ($5 minimum)
Coût par polish ~$0.001 (gpt-4o-mini), ~$0.01–0.05 (gpt-4o)
Endpoint https://api.openai.com/v1/chat/completions (automatique)
Endpoint custom Définir ai.endpoint pour APIs compatibles (Azure OpenAI, Ollama — voir ci-dessous)
Modèles gpt-4o-mini (le moins cher), gpt-4o (meilleure qualité), gpt-4.1-mini, gpt-4.1

Ollama (Local — Gratuit)

Tourne entièrement sur votre machine. Pas de clé API, pas de coût, aucune donnée envoyée.

Étape 1 — Installer Ollama :

brew install ollama
curl -fsSL https://ollama.com/install.sh | sh

Téléchargez l'installateur depuis ollama.com/download

Étape 2 — Télécharger un modèle et démarrer :

ollama serve &            # démarrer le serveur (port 11434)
ollama pull llama3.2      # télécharger un modèle (~2Go)

Autres modèles recommandés :

Modèle Taille Qualité Vitesse
llama3.2 2Go Bon pour les docs courtes Rapide
llama3.1:8b 4.7Go Meilleure qualité Moyen
llama3.1:70b 40Go Proche de GPT-4o Lent (nécessite 64Go RAM)
mistral 4.1Go Bon polyvalent Rapide
codellama 3.8Go Meilleur pour les docs avec code Rapide
gemma2 5.4Go Bon pour l'écriture technique Moyen

Étape 3 — Configurer lore :

# .lorerc
ai:
  provider: "ollama"
  model: "llama3.2"       # ou tout modèle de `ollama list`

Pas besoin de lore config set-key — Ollama n'a pas d'authentification.

Étape 4 — Tester :

ollama list                                               # vérifier que le modèle est installé
lore doctor --config                                     # vérifier que le fournisseur est détecté
lore angela polish <votre-doc>.md --dry-run              # tester polish
lore angela review                                       # tester review
Élément Détail
Télécharger ollama.com/download ou brew install ollama
Coût Gratuit (tourne sur votre matériel)
Endpoint http://localhost:11434 (automatique)
Parcourir les modèles ollama.com/library
Lister les installés ollama list
Télécharger un modèle ollama pull <nom-du-modèle>

Conseil qualité : Les petits modèles (llama3.2, phi3) peuvent halluciner ou produire du texte générique. Pour de meilleurs résultats, utilisez un modèle d'au moins 8B paramètres (llama3.1:8b, mistral) et écrivez des premiers brouillons détaillés avant de polir.

Tester le code path OpenAI via Ollama (gratuit)

Ollama expose une API compatible OpenAI sur /v1/chat/completions. Cela permet de tester le fournisseur openai sans payer de crédits OpenAI :

# .lorerc.local
ai:
  provider: "openai"
  model: "llama3.2"
  endpoint: "http://localhost:11434/v1/chat/completions"
  api_key: "unused"       # Ollama ignore les clés API, mais le champ doit être non-vide
# Vérifier que ça marche
ollama serve &
lore angela polish <votre-doc>.md --dry-run

Note : Cela fonctionne uniquement pour le fournisseur openai. Le fournisseur anthropic utilise un format de requête différent qu'Ollama ne supporte pas.

Comparaison des fournisseurs

Anthropic OpenAI Ollama
Qualité Meilleure pour les docs techniques Très bonne Dépend de la taille du modèle
Coût ~$0.01–0.05/appel ~$0.001–0.01/appel Gratuit
Vie privée Données envoyées à l'API Données envoyées à l'API 100% local
Temps de setup 5 min (inscription + crédits) 5 min (inscription + crédits) 2 min (installer + pull)
Hors ligne Non Non Oui
Vitesse Rapide (~3s) Rapide (~3s) Dépend du matériel (5-30s)
Inscription console.anthropic.com platform.openai.com Pas de compte nécessaire

Pas d'IA ? Pas de problème

lore angela draft et lore angela draft --all fonctionnent 100% hors ligne sans aucune configuration. Ils analysent la structure des documents, les sections manquantes, la cohérence de style et les références croisées — tout localement.

Pour polish/review sans credits API, voir le workflow manuel via le chat Claude.ai dans la FAQ.

Dépannage

"Mon changement de config n'a aucun effet"

Vérifiez l'ordre de la cascade — une source de priorité plus élevée peut surcharger votre changement :

Flag CLI (--language fr)     ← priorité la plus haute
  ↓
Environnement (LORE_LANGUAGE)
  ↓
.lorerc.local
  ↓
.lorerc                      ← vous avez édité ici
  ↓
Défauts                      ← priorité la plus basse

Lancez lore doctor --config pour voir la configuration résolue.

"Avertissement de clé inconnue"

lore doctor --config
# ✗ clé inconnue "ai.providr" — vouliez-vous dire "ai.provider" ?

lore utilise la distance de Levenshtein pour suggérer des corrections de fautes de frappe.

Voir aussi