# Lacan Knowledge OS **Un environnement de recherche fondé sur corpus pour la psychanalyse lacanienne.** D'abord la preuve. Ensuite l'interprétation. Jamais la fabrication. [English](README.md) · [中文](README.zh.md) · [**Français**](README.fr.md) · [日本語](README.ja.md) · [Deutsch](README.de.md) · [Italiano](README.it.md) [![License](https://img.shields.io/badge/license-Apache--2.0-6b4c2f?style=flat-square)](LICENSE) [![Core](https://img.shields.io/badge/noyau%20savant-gel%C3%A9%20%C2%B7%2039%20composants-43403b?style=flat-square)](docs/ARCHITECTURE.md) [![Tests](https://img.shields.io/badge/r%C3%A9gression-146%20suites%20%C2%B7%200%20%C3%A9chec-3f6b4a?style=flat-square)](docs/SCHOLARLY_REGRESSION_SPEC_V1.md) [![MCP](https://img.shields.io/badge/MCP-10%20outils%20%C2%B7%202025--11--25-6b4c2f?style=flat-square)](docs/MCP_TOOL_CONTRACTS.md) [![Built with](https://img.shields.io/badge/construit%20avec-DeepSeek%20Harness-4d6bfe?style=flat-square)](https://github.com/deepseek-ai)
--- > **La règle unique autour de laquelle le système est bâti** > > *Chaque assertion doit pouvoir être rattachée à un numéro de passage.* > > Si le corpus ne peut pas soutenir une question, le système **s'abstient** — il ne répond > pas à partir des connaissances du modèle. **Une abstention est un résultat, pas une erreur.** --- ## Sommaire | | | |---|---| | [1. Ce que c'est](#1-ce-que-cest) | [6. Architecture](#6-architecture) | | [2. Pour qui](#2-pour-qui) | [7. L'utiliser depuis DSH / tout client MCP](#7-lutiliser-depuis-dsh--tout-client-mcp) | | [3. Ce qu'il refuse de faire](#3-ce-quil-refuse-de-faire) | [8. Apportez votre propre corpus](#8-apportez-votre-propre-corpus-important) | | [4. Démarrage rapide](#4-démarrage-rapide) | [9. Avantages et inconvénients](#9-avantages-et-inconvénients) | | [5. Comment l'utiliser](#5-comment-lutiliser) | [10. État, feuille de route, contribution](#10-état-feuille-de-route-contribution) | --- ## 1. Ce que c'est **Lacan Knowledge OS** est un instrument de recherche local, *offline-first*, pour lire Lacan sérieusement. Il transforme un corpus de séminaires et d'écrits en **réserve de preuves citable**, et place un **noyau savant gelé** entre votre question et toute réponse. Six capacités, un seul système : | | Capacité | Ce qu'elle vous donne | |---|---|---| | 🔎 | **Research** | Poser une question → le noyau récupère des passages, construit un contrat de preuve, et **alors seulement** synthétise une réponse dont chaque affirmation passe la validation de citation et d'implication | | 📖 | **Explore** | Lire le corpus directement : passages, séances, séminaires, concepts, terminologie — sans aucun modèle | | 🔬 | **Evidence Inspector** | `Réponse → affirmation → passage → séance → séminaire → témoin/source`, avec le **segment exact cité** et sa fenêtre de contexte | | 🗂️ | **Projects** | Transformer des exécutions répétées en un sujet de long terme (questions, hypothèses, passages, personnes, cas, bibliographie) | | 📚 | **Bibliographie et citations** | Statut de révision, complétude des métadonnées, disponibilité par style **et la raison de l'indisponibilité** | | ✍️ | **Passerelle Obsidian** | Les preuves et la validation restent ici ; votre compréhension, vos notes et votre écriture vivent dans votre vault | ## 2. Pour qui - **Chercheurs et doctorants** qui doivent citer Lacan avec précision et montrer *d'où* vient une lecture. - **Groupes de lecture et séminaires** qui veulent une base de preuves partagée et inspectable. - **Développeurs d'outils** qui cherchent un exemple abouti d'architecture à *noyau gelé* : une couche sémantique qui ne peut pas dériver pendant que le produit évolue autour d'elle. - **Ingénieurs IA** intéressés par la génération ancrée avec un contrat d'abstention explicite, plutôt qu'un score de confiance. ## 3. Ce qu'il refuse de faire Ces refus sont la conception, non des limites : | Refus | Pourquoi | |---|---| | **Ne jamais répondre à partir des connaissances du modèle** | La synthèse ne peut utiliser que les preuves récupérées. Contrat insuffisant → `ABSTAINED`. | | **Ne jamais réparer une source en silence** | `SOURCE_TRACE_INCOMPLETE` reste visible ; le masquer dénaturerait la source. | | **N'inventer aucune donnée bibliographique** | Éditeur, année, ISBN, pages ne sont jamais devinés ; un style impossible dit pourquoi. | | **Aucune promotion automatique en canonique** | Tout matériel importé ou produit par IA entre comme *candidat* et le reste jusqu'à validation humaine. | | **Aucune sémantique non déclarée** | Les 39 composants savants sont figés par empreinte ; un changement non déclaré fait échouer le contrôle et le système **refuse de démarrer**. | ## 4. Démarrage rapide > **Cette édition publique livre le moteur, pas le corpus.** Voir > [§8](#8-apportez-votre-propre-corpus-important) et [`CORPUS.md`](CORPUS.md). ```bash git clone https://github.com/YanKaFei/Lacan-Knowledge-OS.git cd Lacan-Knowledge-OS # 1) L'interface démarre sans aucun corpus — le centre d'aide est pleinement utilisable : python3 -m workspace_ui.server.cli --port 3090 # → http://127.0.0.1:3090/help centre d'aide (13 pages) # → http://127.0.0.1:3090/research surface de recherche (corpus requis pour répondre) # 2) Contrôles d'intégrité (c'est le contrat, pas de la décoration) : python3 _scripts/_tools/core_freeze.py --verify # 39 composants savants python3 _scripts/_tools/freeze_lineage.py --verify # changements sémantiques entre phases python3 _scripts/_tools/build_i18n.py --check # copie UI ↔ dictionnaire ↔ appels python3 _scripts/_tools/build_help.py --check # liens, ancres, 0 fiction # 3) Régression complète (les suites dépendantes exigent un corpus ; voir CORPUS.md) bash _scripts/run_all_tests.sh ``` **Prérequis :** Python 3.9+ (bibliothèque standard pour le chemin du noyau), un navigateur moderne, et — seulement pour la recherche vectorielle ou un vrai LLM — les extras optionnels de [`docs/EMBEDDING_PROVIDER.md`](docs/EMBEDDING_PROVIDER.md). Aucun bundler, aucune étape de build : `index.html` charge directement des modules ES. ## 5. Comment l'utiliser ### 5.1 Page d'accueil orientée tâches À l'ouverture, le système montre **ce que vous pouvez faire**, non ses rouages internes : ``` Hero → [Démarrer une recherche] [Première fois ?] Tâches → Poser une question lacanienne · Trouver le texte et les sources Étudier un concept · Étudier personnes et cas Construire un projet long · Gérer sources et citations Parcours → ① Demander → ② Vérifier la preuve → ③ Lire l'original → ④ Conserver le matériel → ⑤ Trier les sources → ⑥ Former votre savoir 5 minutes → six étapes jusqu'à une première recherche terminée ``` Chaque entrée est un **lien réel** (`/research`, `/explore`, `/projects`, `/bibliography`, `/persons`, `/cases`, `/zotero`, `/help/...`) : partageable, indexable, ouvrable dans un nouvel onglet. ### 5.2 Une tâche de recherche complète 1. **Demander** — une question par exécution. 2. **Lire l'état** — `VALIDATED`, `VALIDATED_WITH_QUALIFICATIONS`, `PARTIALLY_SUPPORTED`, `VALIDATION_FAILED`, `INSUFFICIENT_EVIDENCE`, `ABSTAINED`. À lire littéralement. 3. **Vérifier** — cliquez une puce de citation : l'Evidence Inspector montre le segment cité, sa fenêtre de contexte et la chaîne de sources. *La réponse est la conclusion du noyau ; l'inspecteur, ce que le corpus dit réellement.* 4. **Approfondir** — ouvrez le même passage dans Explore. 5. **Conserver** — `Add to Project`, ou `Save to Obsidian`. ### 5.3 Centre d'aide `/help` : 13 pages avec sommaire latéral, ancres, précédent/suivant et recherche par sujet : *démarrage, research, preuve, explore, research vs explore, projets, personnes et cas, bibliographie, zotero, obsidian, langues, statuts, dépannage*. **Chaque nom de contrôle y est rendu depuis l'interface réelle**, et chaque affirmation fonctionnelle est vérifiée par machine (`HELP_CLAIM_VERIFICATION.json` : **42/42 vérifiées, 0 fiction, 0 en attente**). ### 5.4 Langue de l'interface vs langue de recherche | Réglage | Portée | Exemple | |---|---|---| | **Language** (`English` / `中文`) | L'interface du produit seulement | bascule instantanée, sans rechargement | | **Research language** (`any` / `zh` / `fr` / `en`) | La *langue de la question* envoyée avec la requête | ne traduit pas l'interface, ne filtre pas la recherche | `Interface = 中文` + `Research language = Français` est parfaitement valide. Le texte original de Lacan, les passages cités et les métadonnées bibliographiques ne sont **jamais** traduits. ## 6. Architecture ``` votre question │ ┌──────────▼───────────┐ │ COUCHE PRODUIT │ workspace_ui/ · browse_api/ · project_api/ │ (évolue librement) │ export_system/ · bibliography/ · obsidian_adapter/ └──────────┬───────────┘ │ scholarly_api v1 (frontière produit — 3 composants figés) ┌──────────▼───────────┐ │ NOYAU SAVANT GELÉ │ 39 composants figés par empreinte │ (ne peut dériver) │ récupération · contrat de preuve · suffisance · └──────────┬───────────┘ frontière de synthèse · citation · implication · abstention │ ┌──────────▼───────────┐ │ CORPUS │ réserve de passages · témoins · ontologie · index │ (le vôtre) │ NON inclus dans ce dépôt └──────────────────────┘ ``` - **Les agents parlent MCP, pas Python.** `mcp_server/` expose **10 outils** en stdio (protocole `2025-11-25`) ; l'interface web n'est qu'un client de ce même contrat. - **Le gel est exécutable.** `core_freeze.py --verify` recalcule 39 empreintes ; `freeze_lineage.py --verify` prouve **zéro** changement sémantique sur sept phases. - **Les dérivés sont régénérables.** Index SQLite/FTS/vectoriels et la réserve de 249 105 passages se reconstruisent depuis les sources canoniques + manifestes. Le vault est la source de vérité. Pour aller plus loin : [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) · [`docs/MCP_ARCHITECTURE.md`](docs/MCP_ARCHITECTURE.md) · [`docs/HELP_SYSTEM_ARCHITECTURE.md`](docs/HELP_SYSTEM_ARCHITECTURE.md). ## 7. L'utiliser depuis DSH / tout client MCP Ce dépôt **est** une cible de plugin [DeepSeek Harness](https://github.com/deepseek-ai) : il fournit un serveur MCP, une ligne portable et un bundle DSH installable. ```bash # A. Comme plugin DSH (installe la ligne MCP pour vous) dsh plugin --profile web add github:YanKaFei/Lacan-Knowledge-OS # B. Ou collez la ligne vous-même — integrations/lacan-kb-mcp.row.yml # (les outils apparaissent alors comme mcp__lacan-kb__search_passages, …) # C. Ou lancez le serveur seul python3 _scripts/_tools/lacan-kb-mcp ``` Prouvé avec le SDK MCP de DSH lui-même (`_data/mcp/DSH_CLIENT_PROOF.json`, **14/14**) : poignée de main stdio, 10 outils avec schémas, nommage `mcp__lacan-kb__`, retours de preuves structurés, revérification indépendante des identifiants de passage, et une erreur de protocole — non un crash — pour un outil inconnu. Voir [`docs/MCP_DSH_INTEGRATION.md`](docs/MCP_DSH_INTEGRATION.md). ## 8. Apportez votre propre corpus (**important**) Ce dépôt ne contient délibérément **aucun texte source** : | Non inclus | Pourquoi | |---|---| | Texte intégral des séminaires/écrits (fr + zh) | Droits des ayants droit | | Réserve de passages (`passages.jsonl`, 249 105 enregistrements, ~384 Mo) | Texte du corpus | | Témoins et réalisations (~152 Mo) | Texte du corpus | | Index vectoriels/lexicaux | Volumineux, reconstructibles depuis votre corpus | Ce qui **est** inclus : les schémas, le contrat de gel, les constructeurs, les validateurs et les tests — tout ce qu'il faut pour ingérer **un texte que vous avez le droit d'utiliser** (vos propres numérisations, éditions sous licence, domaine public, vos traductions). ```bash python3 _scripts/build.py --help # inventaire et points d'entrée de build python3 _scripts/inventory_corpus.py --help # inventaire canonique + empreintes ``` L'édition publique est produite et vérifiée par [`_scripts/_tools/build_public_edition.py`](_scripts/_tools/build_public_edition.py) : copie par liste blanche, puis vérification **négative** (sondes N-grammes du corpus, analyse de secrets, analyse de chemins absolus, seuils de taille). Voir [`docs/PUBLIC_EDITION.md`](docs/PUBLIC_EDITION.md). ## 9. Avantages et inconvénients
✅ Avantages⚠️ Inconvénients / limites
**Vérifiabilité avant fluidité.** Chaque affirmation est liée à un identifiant de passage ; vous pouvez auditer la chaîne à la main. **Échec honnête.** Abstention, `INSUFFICIENT_EVIDENCE` et indisponibilité explicite sont des sorties de première classe. Aucun remplissage halluciné. **Un contrat exécutable.** Le gel à 39 composants et la lignée à sept segments sont vérifiés par du code, non par une promesse documentaire. **Offline-first.** `Offline / Mock` produit des réponses déterministes, sans identifiants ni réseau. **Un contrat, plusieurs clients.** La même surface MCP sert l'interface web, DSH et tout éditeur doté d'un client MCP. **Historique auditable.** Chaque exécution est un instantané immuable ; relancer une question crée un nouvel élément au lieu d'écraser l'ancien. **Bilingue par construction.** La copie UI est pilotée par dictionnaire (0 clé manquante) ; le texte source n'est délibérément jamais traduit. **Il faut un corpus que vous avez le droit d'utiliser.** En l'état, il montre son interface, son centre d'aide et ses contrats — mais ne peut pas répondre tant que vous n'apportez pas de texte. **Le périmètre est assumé.** Il répond *sur un corpus*. Les questions d'histoire éditoriale, de participants ou de dates s'abstiendront : le corpus ne porte pas ces métadonnées. **Aucun score de qualité.** Aucun « % de confiance » nulle part ; la qualité de l'interprétation reste votre jugement. **Lourd pour un usage portable.** Le corpus de référence occupe ~2,5 Go avec index et plongements. **La recherche vectorielle est optionnelle et partielle.** Sans les extras d'embedding, la récupération retombe sur le lexical (l'interface indique laquelle est active). **La synthèse LLM réelle est un appel bloquant unique.** Les exécutions longues prennent 45–60 s ; l'interface affiche le temps réel, et « stop waiting » n'annule pas la tâche serveur. **Produit rapide, noyau gelé.** Les fonctionnalités de confort changent souvent ; modifier la *sémantique* exige une Core Change Request formelle. **Présuppose une familiarité avec le domaine.** Le système ne vous apprendra pas Lacan.
## 10. État, feuille de route, contribution - **État :** noyau savant gelé en v1 (`SCHOLARLY_CORE_READY`) ; couche produit complète pour l'usage quotidien (recherche, exploration, preuve, projets, bibliographie, import Zotero, passerelle Obsidian, export, centre d'aide). - **Chiffres de la dernière campagne d'acceptation :** **20/20 éléments bloquants**, **146 suites de régression / 78 validateurs / 0 échec / 0 ignoré**, gel du noyau **PASS**, dérive sémantique **0**. - **Feuille de route :** [`docs/ROADMAP.md`](docs/ROADMAP.md). - **Contribuer :** [`CONTRIBUTING.md`](CONTRIBUTING.md) — la règle non négociable : *ne pas modifier la sémantique savante sans Core Change Request*. - **Sécurité :** [`SECURITY.md`](SECURITY.md) — les identifiants ne passent jamais par l'API produit.
**Licence** — code : [Apache-2.0](LICENSE) · textes sources : **non distribués** ([NOTICE](NOTICE)) *Si ce système vous épargne une semaine de vérification de citations, il a fait son travail.*