22.6 KB · updated 2026-07-06 · md

feature-map.fr.md

docs/i18n/feature-map.fr.md

Carte des fonctionnalités

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end --> Ce document résume les fonctionnalités actuellement implémentées dans Tesserae, avec leur état, leurs fichiers source et l’endroit où elles sont documentées.

Tesserae est un moteur de contexte reposant sur trois piliers : (1) surveillance des sessions, (2) ingestion de connaissances autonome et proactive, et (3) docs/contexte à la demande. Le graphe typé, le coffre (vault) et le site statique sont des projections de la base de connaissances. Les fonctionnalités ci-dessous sont regroupées selon le pilier qu’elles servent ; le jalon v0.5.0 (juin 2026) a livré la colonne vertébrale du moteur et la fonctionnalité phare du Pilier 3, le compilateur de contexte à la demande.

Légende d’état : ✅ livré · ⚠ en cours / partiel.

Moteur de contexte — v0.5.0 (juin 2026)

La colonne vertébrale du moteur qui anime les trois piliers. Voir MD0 pour la carte des modules de la colonne vertébrale du moteur, le sidecar de mémoire d’auto-amélioration et le flux de données du compilateur de contexte.

Colonne vertébrale du moteur (piliers 1 & 2)

FonctionnalitéÉtatSourceNotes
Pipeline — chaîne de rafraîchissement réutilisable renvoyant List[StepResult]MD0Un seul exécuteur d’étapes appelé par la CLI, le démon et MCP. Attrape Exception par étape ; s’arrête au premier échec.
Daemon — superviseur asyncio à propriétaire uniqueMD0Surveille sources + coffre + répertoire des sessions du harness ; un debounce annuler-et-replanifier fusionne une rafale en un Pipeline.run(). pidfile ; survit aux exceptions en vol.
engineMD0--interval, --debounce, --once. daemon est un alias de engine.
project refresh — chaîne en prose (ingestion → compilation → projection)cli.py + MD1--changed-only (incrémental optionnel), --skip-sessions.
Surveillance des sessions en direct → découvertesharness_sessions.py + modules du graphe de sessionLes sessions importées alimentent le graphe ; fresh_insights / find_session_findings les font remonter.

Mémoire d’auto-amélioration (pilier 2)

FonctionnalitéÉtatSourceNotes
sidecar node_memory SQLite (déclin / confiance / remplacé)MD0NodeMemoryRow + accesseurs indépendants du store ; état mutable uniquement. La première apparition vit dans le sidecar node_provenance séparé.
Score de déclin EbbinghausMD0Classe les découvertes de session par plus récent + plus consulté (anime fresh_insights).
Passe de remplacement (activée par défaut)MD0Verdict déterministe marque un insight quasi-doublon plus ancien comme remplacé par un plus récent ; ajoute une arête supersedes.
Lien insight → symbole de codeMD0Arêtes discusses des insights de session vers les symboles référencés.
Passes de renforcement + contradictionMD0, MD1Renforcement d’accès + détection de contradictions sur le même sidecar.
Confiance de récurrence numérique en sortieMD0Les faits temporels tamponnent confidence depuis NodeMemoryRow.confidence, sinon repli sur infer_confidence.

Récupération + embeddings (piliers 2 & 3)

FonctionnalitéÉtatSourceNotes
Récupérateur hybride (BM25 + lexical + embeddings, RRF k=60)MD0Local-first, entièrement déterministe.
PageRank personnalisé (HippoRAG-2)MD0Expansion multi-saut des graines ; sous-graphe à profondeur bornée.
Vrais embeddings par défaut (Track B, Phase 6)retrieval/hybrid.pyPar défaut = pseudo-embedding déterministe par seaux de hachage (sans dépendances) ; sentence-transformers (all-MiniLM-L6-v2) préféré à l’installation, chargé paresseusement. L’outil MCP embedding_status indique le backend actif.

Compilateur de contexte à la demande (Pilier 3 — phare)

FonctionnalitéÉtatSourceNotes
compile_contextContextBundle en mémoire avec citationsMD0Résolution des graines → expansion PPR → sélection par budget → markdown cité → synthèse LLM optionnelle. Déterministe sauf synthesize=true. N’écrit rien sur disque.
CLI project contextcli.py[query], --seeds, --depth (2), --budget (32000 ; ≤0 = sans limite), --synthesize, --output.
Outil MCP compile_contextMD0Le même pipeline via MCP ; budget=0 = sans limite.
Tranches d’export par sujetMD0 slice_export_context_for_topicllms.txt par sujet + render_harness_context via compile_context.

Compilation incrémentale (Phase 4 — expérimentale)

FonctionnalitéÉtatSourceNotes
sidecar de provenance (node_provenance, première apparition)MD0Base des suppressions « changed-only » ; toujours enregistré.
Surface de suppression de GraphStoreMD0delete_node, delete_nodes_by_source (supprime les nœuds dont l’ensemble de provenance se vide ; les concepts inter-fichiers survivent).
Aiguillage de store à l’exécution url_resolverMD0sqlite:///… / hypepaper-postgres://…GraphStore.
Flag incremental_compileMD0OFF par défaut / expérimental. Parité d’octets prouvée pour plusieurs formes d’édition, mais des lacunes multi-propriétaires/cycle de vie des producteurs subsistent ; la compilation complète reste la valeur par défaut.

Refonte du frontend — avril 2026

Un wiki hiérarchique centré sur les documents remplace l’ancien dump de graphe. Voir MD0 pour le parcours route par route et MD1 pour le modèle en trois couches.

Couche wiki (L2 markdown)

FonctionnalitéÉtatSourceAncre de documentation
WikiPageStore (écritures body-hash idempotentes, parseur frontmatter)MD0architecture.md § Carte des modules
WikiLayerProjector — une page md par nœud de couche wikiMD0architecture.md § Pipeline
Pages sources/wiki_projector.pyfrontend-redesign.md § Sources
Pages concepts/wiki_projector.pyfrontend-redesign.md § Concepts
Pages entities/wiki_projector.pyfrontend-redesign.md § Entities
Pages papers/wiki_projector.pyfrontend-redesign.md § Papers
Pages repos/wiki_projector.pyfrontend-redesign.md § Repos
Pages topics/wiki_projector.pyfrontend-redesign.md § Topics
Pages questions/ (questions ouvertes)wiki_projector.pyfrontend-redesign.md § Questions
Pages syntheses/MD0frontend-redesign.md § Syntheses

Types de synthèse (L2 → dérivé)

SynthesisProjector produit sept modèles déterministes et ajoute des nœuds Synthesis ainsi que des arêtes synthesizes / summarizes dans le graphe.

TypeÉtatSourceNotes
pulse (un global, alimente /)synthesis.pyReconstruit à chaque compile.
daily_digestsynthesis.pyUn par data/research/daily/<date>/.
weeklysynthesis.pyUn par data/research/weekly/<iso-week>/.
topicsynthesis.pyUn par cluster ResearchTopic / ApproachFamily contenant ≥ 3 papers.
comparisonsynthesis.pyUn par paire d’ApproachFamily en concurrence sur la même tâche.
field_overviewsynthesis.pyUn par ResearchField.
Résumés améliorés par LLM (activés par variable d’environnement)hook uniquementLa base heuristique est livrée ; le hook TESSERAE_SYNTHESIS_LLM=1 reste un stub.

Routes du site statique

RouteÉtatSourceNotes
/ (accueil, hero pulse)MD0 render_homeLigne de statistiques + points d’entrée sélectionnés + activité récente.
/sources/, /sources/<slug>.htmlpages.py::render_sources_index, render_source_detail
/concepts/, /concepts/<slug>.htmlpages.py::render_concepts_index, render_concept_detail
/entities/, /entities/<slug>.htmlpages.py::render_entities_index, render_entity_detail
/papers/, /papers/<slug>.htmlpages.py::render_papers_index, render_paper_detail
/repos/, /repos/<slug>.htmlpages.py::render_repos_index, render_repo_detail
/topics/, /topics/<slug>.htmlpages.py::render_topics_index, render_topic_detail
/syntheses/, /syntheses/<slug>.htmlpages.py::render_syntheses_index, render_synthesis_detail
/questions/, /questions/<slug>.htmlpages.py::render_questions_index, render_question_detail
/timeline/pages.py::render_timelineCarte thermique + liste de jours + rail de synthèse.
/timeline/<YYYY-MM-DD>.html (détail par jour)n/a pour l’instantLes cellules de la carte thermique pointent provisoirement vers la page source digest.md du jour. Subagent P connecte les pages de détail quotidiennes via StaticSiteBuilder.
/graph/ (2D + 3D interactif)pages.py::render_graph_view + js.py3d-force-graph + Three.js, infobulles au survol, libellés d’arêtes, zoom ancré au curseur.
/about.htmlpages.py::render_aboutSchéma, informations de build.

Exports adaptés à l’IA

ArtefactÉtatSourceObjectif
Fichier frère <page>.txt par pageMD0 write_siblingsVue texte brut d’une page (sans navigation ni style).
Fichier frère <page>.json par pageexports.py::write_siblings{title, kind, body, body_text, links, source_path, frontmatter}.
llms.txtexports.py::render_llms_txtIndex court llmstxt.org.
llms-full.txtexports.py::render_llms_full_txtCorps de toutes les pages, plafonné à 5 MB.
graph.jsonldexports.py::render_graph_jsonldDataset schema.org, nœuds de couche wiki uniquement.
graph.json__init__.py::write_sitePayload complet du graphe (incl. nœuds de code pour l’outillage).
search-index.jsonMD0Palette + recherche de pages ; types de couche wiki uniquement.
sitemap.xmlexports.py::render_sitemap_xmlToutes les routes émises, lastmod depuis le frontmatter.
rss.xmlexports.py::render_rss_xmlLes 30 dernières syntheses.
robots.txtexports.py::render_robots_txtPermissif — crawl + indexation.
ai-readme.mdexports.py::render_ai_readmeCarte du site lisible par machine.
manifest.json__init__.py::_manifestsha256 + taille de chaque fichier émis (harnais d’idempotence).

Design visuel + UX

FonctionnalitéÉtatSourceNotes
Tokens de design (thèmes clair + sombre, accent terre cuite)MD0Un bundle CSS dans assets/style.css.
Bascule de thème (persistée, sans flash)MD0data-theme="dark" dans localStorage, appliqué avant le rendu.
Palette de recherche (cmd+k / ctrl+k / /)js.pyCorrespondance floue sur search-index.json ; liste des pages récentes.
TOC droit fixepages.py + tokens.pyBureau uniquement ; tiroir mobile via <details>.
Carte thermique d’activité avec libellés mois + jours de semainecomponents.py::heatmap_svgSVG 26 semaines, cellules liées au digest.md du jour.
Sparkline (par concept/entité)components.py::sparkline_svgComptes de mentions hebdomadaires, 12 dernières semaines.
Shell mobile (rail de tiroir, navigation basse, type fluide)tokens.py + pages.pyCibles tactiles ≥ 44 px.
Transitions de page (opacité 120 ms, prefers-reduced-motion)tokens.py
Vue graphe 3D + 2D (survol, libellés d’arêtes, zoom ancré au curseur)pages.py::render_graph_view + js.py3d-force-graph + Three.js, vendorié comme snapshot CDN.
Pied de page des fichiers frères IAcomponents.py::ai_siblings_footerLiens inline vers le .txt et le .json de la page courante.
Pages d’historique de sessions du harnaisMD0 + MD1Import explicite Claude Code/Codex ; index /sessions/ et pages détail avec tours markdown, rail de tours à gauche, utilisation d’outils repliée et entrées de recherche.

Pipeline + CLI

FonctionnalitéÉtatSourceNotes
project compile appelle synthesis + wiki + site dans l’ordreMD0Phase 3 du plan de refonte.
project build-site autonomeproject.py + MD1Lit wiki/ + graph.json, écrit site/.
project serve HTTP localcli.pyServeur stdlib simple.
export site --deploy → GitHub PagesMD0Push de worktree vers gh-pages ; --enable-pages optionnel via CLI gh. --build, --dry-run, --branch, --remote, --force.
project sessions discover/import/listMD0 + cli.pyHistorique de sessions entrant pour Claude Code/Codex ; découverte explicite et bornée au répertoire de travail du projet.
export site --watch rebuild-on-changeMD0 + MD1Watcher par polling autonome : --interval, --debounce, --once, --paths, --quiet. Le superviseur multi-sources vit dans project engine/daemon (voir Moteur de contexte).
project context — compile un document de contexte citécli.py + MD1Phare du Pilier 3 ; voir la section Moteur de contexte.
project refresh / enginecli.py + MD1Chaîne de rafraîchissement en prose + boucle superviseur ; voir la section Moteur de contexte.

Fonctionnalités préexistantes (conservées inchangées)

CLI et installation

  • ✅ Package Python installable via pyproject.toml.
  • ✅ Commandes console : tesserae, tesserae, tesserae_mcp.
  • scripts/install.sh pour installation curl | bash.
  • ✅ Installations éditables par défaut pour un développement local rapide.

Extraction

  • ✅ Extracteur déterministe de notes de recherche avec vocabulaires contrôlés de nœuds/arêtes.
  • ✅ Extracteur Claude CLI/OAuth pour une extraction structurée de meilleure qualité sans clés API.
  • ✅ Routage Claude sélectif par glob et limite de budget.
  • ✅ Extracteur déterministe de code de développement pour projets Python.
  • ✅ Ingestion batch avec hachage de contenu et prise en charge de --changed-only.
  • ✅ Lecture de sources tolérante à l’UTF-8 malformé.

Gouvernance du graphe

  • ✅ Liste ResearchNodeType contrôlée — inclut maintenant SYNTHESIS.
  • ✅ Liste blanche contrôlée des types d’arêtes — inclut maintenant synthesizes, summarizes.
  • ✅ Validation pour rejeter la dérive de schéma.
  • ✅ Canonicalisation des alias.
  • ✅ File de revue pour nœuds quasi dupliqués ambigus.
  • ✅ Modèle de décisions de revue et workflow fusionner/garder séparé.
  • ✅ Résumé des tendances du corpus depuis les graphes par fichier.

Persistance et rapports

  • ✅ Export Graph JSON.
  • ✅ Magasin de graphe SQLite.
  • ✅ Magasin de graphe Kuzu optionnel.
  • ✅ Rapport de graphe avec comptes, couverture de preuves, nœuds orphelins, buckets de dates, nœuds riches en alias.
  • ✅ Rapport concurrentiel décrivant les idées absorbées depuis MegaMem, Graphiti/Zep, MCP graph servers, agentic RAG.

Workflow local de projet

  • tesserae init --bare
  • tesserae compile <paths>
  • tesserae compile
  • tesserae projects mcp-config
  • tesserae export site
  • tesserae serve
  • tesserae export site --deploy (GitHub Pages)
  • tesserae sessions discover/import/list (import explicite d’historique d’agent local)
  • tesserae export site --watch (watcher par polling autonome)
  • tesserae engine (boucle superviseur — v0.5.0)
  • tesserae refresh (chaîne en prose ingestion → compilation → projection — v0.5.0)
  • tesserae context (compilateur de contexte à la demande — v0.5.0)
  • tesserae export harness
  • tesserae vault export
  • tesserae export graphiti
  • tesserae export graphiti --sync

Obsidian

  • ✅ Export de vault prêt à ouvrir.
  • .obsidian/app.json et paramètres de graphe.
  • ✅ Projection Markdown.
  • ✅ Structure raw/assets/.
  • _meta/dashboard.md avec requête Dataview.

Harnais d’agents

Fichiers cibles générés pour :

  • ✅ Claude Code: CLAUDE.md, .claude/settings.json
  • ✅ Codex: AGENTS.md, mcp.toml
  • ✅ Gemini: GEMINI.md, .gemini/settings.json
  • ✅ Kiro: steering et paramètres MCP
  • ✅ Cursor: règles de projet et config MCP
  • ✅ OpenCode: AGENTS.md, opencode.json

Graphiti / faits temporels

  • ✅ Projection de faits temporels avec champs provenance, currentness, confidence et invalidation.
  • ✅ Export JSONL d’épisodes Graphiti sans dépendance.
  • ✅ Smoke sync-graphiti --dry-run sans Graphiti installé.
  • ✅ Sync live optionnelle avec graphiti_core et Neo4j.

Cognee

  • ✅ Bundle Cognee JSONL (nodes.jsonl, edges.jsonl, manifest.json).
  • ✅ Import direct add-only optionnel.
  • ✅ Adaptateur Cognee cognify optionnel basé sur Codex CLI/OAuth.
  • ✅ Chemins d’adaptateurs d’embedding déterministe et Ollama pour workflows smoke/qualité sans clé API.

Serveur MCP

  • tesserae_mcp / python3 -m tesserae.mcp_server via stdio JSON-RPC.
  • ✅ Outils de récupération/graphe : schema, graph_summary, search_nodes, node_context (avec use_ppr), search_facts, timeline, graph_ppr, wiki_page, raw_source, lint_report.
  • ✅ Outils du moteur de contexte (v0.5.0) : compile_context, embedding_status, fresh_insights (classement par déclin), list_communities, find_session_findings, find_code_symbol_mentions, ask.
  • ✅ Outils de configuration : tesserae_setup_plan, tesserae_setup_apply.
  • ✅ Registre multiprojet : list_projects, register_project, activate_project, unregister_project, list_sessions. Aiguillage d’URL de store via url_resolver.

Tests

La suite actuelle couvre :

  • ✅ garde-fous d’ontologie (incl. nouveau nœud Synthesis + arêtes synthesizes / summarizes) ;
  • ✅ extraction déterministe ;
  • ✅ parsing/validation du wrapper Claude CLI ;
  • ✅ routage Claude sélectif ;
  • ✅ workflow canonicalisation/revue ;
  • ✅ ingestion batch ;
  • ✅ rapports ;
  • ✅ persistance SQLite/Kuzu ;
  • ✅ bundles/import patches Cognee ;
  • ✅ export/sync Graphiti dry-run ;
  • ✅ workflow CLI projet ;
  • ✅ export de harnais d’agent ;
  • ✅ export Obsidian ;
  • ✅ génération frontend + intégrité des liens (pas de nodes/codeclass-*.html) ;
  • ✅ idempotence du wiki store ;
  • ✅ golden + idempotence du synthesis projector ;
  • ✅ composants, pages, exports et pertinence du site ;
  • ✅ forme des fichiers frères IA (.txt + .json par page) ;
  • ✅ idempotence end-to-end de deux compilations ;
  • ✅ colonne vertébrale du moteur : pipeline, chaîne de rafraîchissement, cœur du démon + sources, CLI project engine ;
  • ✅ mémoire d’auto-amélioration : sidecar, déclin/remplacement, suppression du remplacement (y compris MCP), renforcement/contradiction ;
  • ✅ récupération + embeddings : recherche hybride, PPR, vrais embeddings par défaut (Phase 6) ;
  • ✅ compilateur de contexte : forme/intégrité des citations/déterminisme/budget/repli PPR, CLI project context, MCP compile_context ;
  • ✅ compilation incrémentale (expérimentale) : différenciateur, portes de parité, préparation de provenance, provenance SQLite ;
  • ✅ installation du package et contrat de l’installateur.