Files

154 lines
6.5 KiB
Python
Raw Permalink Normal View History

import json, os
from trilium_api import create_note, get_note_id, set_label, find_note_by_title, update_note_content
with open(os.path.expanduser('~/App/Context_continuity/trilium_ids.json')) as f:
ids = json.load(f)
res = create_note(ids['root'], 'README - Workflow Context Continuity')
nid = get_note_id(res)
set_label(nid, 'type', 'documentation')
content = (
'<h1>README - Workflow Context Continuity</h1>'
'<p>Systeme de gestion du contexte multi-LLM (Claude + Le Chat) via Trilium comme base pivot.<br>'
'Permet de basculer entre les deux LLMs sans perdre le fil du projet.</p>'
'<h2>Prerequis</h2>'
'<pre>'
'cd ~/App/Context_continuity\n'
'source venv/bin/activate'
'</pre>'
'<h2>ETAPE 1 - Debut de session : creer la conversation</h2>'
'<p>Au debut de chaque session de travail avec un LLM, enregistre-la dans Trilium :</p>'
'<pre>python trilium_context.py new-conversation \\\n'
' --projet SlidingAutomation \\\n'
' --llm "Claude Sonnet" \\\n'
' --titre "Description courte de ce que tu vas faire"</pre>'
'<p><strong>Note l ID retourne</strong> — tu en auras besoin a la fin de la session.<br>'
'Exemple de retour : <code>Note l ID pour close-session : Igaa5BBIfNMw</code></p>'
'<h2>ETAPE 2 - Recuperer le contexte existant (optionnel)</h2>'
'<p>Si tu reprends un projet en cours, genere le briefing depuis la derniere session :</p>'
'<pre>python trilium_context.py generate-context \\\n'
' --projet SlidingAutomation \\\n'
' --llm-cible "Claude Sonnet" \\\n'
' --note-id ID_DERNIERE_CONV \\\n'
' --version N</pre>'
'<p>Le briefing est imprime dans le terminal.<br>'
'<strong>Copie-colle le texte imprime en debut de nouvelle session LLM.</strong><br>'
'Le LLM confirmera sa comprehension en 3 lignes (objectif / prochaine action / incertitude).</p>'
'<p>Pour trouver l ID de la derniere conversation :<br>'
'Dans Trilium : Context Continuity &gt; Conversations &gt; chercher la plus recente.<br>'
'Ou via terminal :</p>'
'<pre>python trilium_context.py list-projects</pre>'
'<h2>ETAPE 3 - Pendant la session : capitaliser au fil de l eau</h2>'
'<p>Ne pas attendre la fin — enregistre les informations importantes au fur et a mesure :</p>'
'<pre># Une decision est prise\n'
'python trilium_context.py add-decision \\\n'
' --projet SlidingAutomation \\\n'
' --enonce "On fait X plutot que Y" \\\n'
' --justification "Parce que Z"\n\n'
'# Un test a ete effectue\n'
'python trilium_context.py add-history \\\n'
' --projet SlidingAutomation \\\n'
' --type "Test effectue" \\\n'
' --enonce "Test de X" \\\n'
' --detail "Resultat : Y"\n\n'
'# Une contrainte est decouverte\n'
'python trilium_context.py add-history \\\n'
' --projet SlidingAutomation \\\n'
' --type "Contrainte decouverte" \\\n'
' --enonce "X ne fonctionne pas sur Python 3.9" \\\n'
' --detail "Utiliser Y a la place"</pre>'
'<h2>ETAPE 4 - Limite de tokens approche : cloturer la session</h2>'
'<p>Signes que la limite approche : le LLM repete des choses deja dites, oublie une contrainte, '
'ses reponses deviennent moins precises.<br>'
'<strong>Action :</strong> demande au LLM actuel :</p>'
'<pre>Fais-moi une synthese de cloture en 200 mots :\n'
'ou on en est, ce qui reste a faire, les blocages eventuels.</pre>'
'<p>Puis enregistre cette synthese :</p>'
'<pre>python trilium_context.py close-session \\\n'
' --note-id ID_CONV_ACTUELLE \\\n'
' --summary "COLLE ICI LA SYNTHESE DU LLM"</pre>'
'<h2>ETAPE 5 - Generer le briefing de reprise</h2>'
'<pre>python trilium_context.py generate-context \\\n'
' --projet SlidingAutomation \\\n'
' --llm-cible "Le Chat Large" \\\n'
' --note-id ID_CONV_ACTUELLE \\\n'
' --version N</pre>'
'<p>Le terminal imprime le briefing complet.<br>'
'Une note "Contexte Reprise" est aussi creee automatiquement dans Trilium.</p>'
'<h2>ETAPE 6 - Basculer vers le second LLM</h2>'
'<ol>'
'<li>Ouvre une nouvelle session sur l autre LLM (Claude ou Le Chat)</li>'
'<li>Cree la nouvelle conversation dans Trilium :<br>'
'<pre>python trilium_context.py new-conversation \\\n'
' --projet SlidingAutomation \\\n'
' --llm "Le Chat Large" \\\n'
' --titre "Suite - description"</pre></li>'
'<li>Copie-colle le briefing imprime a l etape 5 en premier message de la nouvelle session</li>'
'<li>Le LLM confirme en 3 lignes — verifie qu il a bien compris avant de continuer</li>'
'<li>Reprends le travail depuis le backlog actif</li>'
'</ol>'
'<h2>ETAPE 7 - Voir l etat du projet a tout moment</h2>'
'<pre># Backlog actif\n'
'python trilium_context.py list-backlog --projet SlidingAutomation\n\n'
'# Liste des projets\n'
'python trilium_context.py list-projects</pre>'
'<h2>Resume visuel du cycle</h2>'
'<pre>'
'DEBUT SESSION\n'
' |\n'
' v\n'
'new-conversation (note l ID)\n'
' |\n'
' v\n'
'generate-context (si reprise) --> coller dans LLM\n'
' |\n'
' v\n'
'TRAVAILLER\n'
'add-decision / add-history au fil de l eau\n'
' |\n'
' v (limite approche)\n'
'Demander synthese au LLM\n'
' |\n'
' v\n'
'close-session (coller la synthese)\n'
' |\n'
' v\n'
'generate-context --> briefing imprime\n'
' |\n'
' v\n'
'new-conversation (sur l autre LLM)\n'
'Coller le briefing --> LLM confirme en 3 lignes\n'
' |\n'
' v\n'
'REPRENDRE LE TRAVAIL'
'</pre>'
'<h2>Fichiers du systeme</h2>'
'<table>'
'<tr><th>Fichier</th><th>Role</th></tr>'
'<tr><td><code>trilium_api.py</code></td><td>Wrapper API Trilium (ne pas modifier)</td></tr>'
'<tr><td><code>trilium_init.py</code></td><td>Initialisation arborescence (une seule fois)</td></tr>'
'<tr><td><code>trilium_context.py</code></td><td>Script principal du workflow quotidien</td></tr>'
'<tr><td><code>trilium_logger.py</code></td><td>Integration pipeline Sliding Automation</td></tr>'
'<tr><td><code>trilium_ids.json</code></td><td>IDs des dossiers Trilium (genere par init)</td></tr>'
'<tr><td><code>.env</code></td><td>Token ETAPI et URL Trilium (ne pas commiter)</td></tr>'
'</table>'
'<h2>Skills disponibles dans Trilium</h2>'
'<p>Context Continuity &gt; Skills &gt; Skill - API Trilium ETAPI<br>'
'Contient les patterns API, erreurs connues et fixes pour TriliumNext 0.95+</p>'
)
update_note_content(nid, content)
print('README cree:', nid)