CommunityRédaction et éditiongithub.com

Amiyadesi/agent-session-bridge

Copiez ou coupez le contexte de conversation entre Codex, Pi, DeepSeek Harness, OpenCode, Qwen Code, Claude Code, WorkBuddy, Antigravity CLI (agy) et l'IDE de bureau via le CLI local agent-session-bridge. Prend en charge un relevé, un ID de session exact ou un lot par projet, y compris les index natifs des bases de données ; exclut les identifiants et la configuration de l'agent.

Qu'est-ce que agent-session-bridge ?

Cet outil CLI, nommé `asb` ou `agent-session-bridge`, permet de migrer des sessions de conversation entre différents agents d'IA et IDE de bureau en manipulant uniquement des fichiers locaux, sans effectuer d'appels à des modèles d'IA ni télécharger de relevés. Il est utile pour les développeurs qui souhaitent transférer le contexte d'une conversation (messages utilisateur/assistant, résumés de compaction et images supportées) d'un agent à un autre, tout en filtrant automatiquement les appels d'outils, les réflexions et les enregistrements système. Le CLI prend en charge des formats natifs comme Codex, Pi, DeepSeek Harness, OpenCode, Qwen Code, Claude Code, WorkBuddy, Antigravity CLI (agy) et Antigravity Desktop, et permet de sélectionner les sessions par fichier, ID exact, projet ou répertoire d'export. Il garantit l'intégrité des données en vérifiant les octets écrits, en analysant la cible et en enregistrant les lignes nécessaires dans la base de données native avant toute suppression, et peut effectuer des copies (avec `--apply`) ou des déplacements (avec `--move --apply`) tout en préservant les titres et en fournissant un manifeste des éléments filtrés. Des limites spécifiques sont documentées pour chaque format, notamment la gestion des bases de données, des fichiers portables, des résumés et des images.

Compatible avec✓Claude Code✓Codex CLI~Cursor✓Antigravity✓Gemini CLI✓OpenCode
npx skills add https://github.com/Amiyadesi/agent-session-bridge/tree/HEAD/skills/migrate-agent-session

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Migrer des sessions d'agent

Utilisez asb / agent-session-bridge ; la sortie JSON stdout est l'interface machine. Le CLI utilise des fichiers locaux, n'effectue aucun appel de modèle et ne télécharge jamais de relevés. Copier et déplacer incluent uniquement le contexte de conversation : messages utilisateur/assistant, résumés de compaction et images utilisateur supportées. Les appels/résultats d'outils, les réflexions et les enregistrements système/exécution sont filtrés automatiquement. Les compteurs apparaissent sous la forme filtered:* dans le manifeste ; aucun indicateur supplémentaire n'est nécessaire. Conservez le titre source lorsque la cible le supporte. Les titres natifs de Codex proviennent de la ligne DB correspondante (name, puis title) ; les exportations autonomes nécessitent un titre dans le journal. Les paramètres du modèle source et du fournisseur ainsi que les réglages de réflexion sont exclus. Utilisez une commande installée ou le .venv/Scripts/asb.exe (Windows) / .venv/bin/asb (POSIX) de l'archive. S'il n'est pas installé, ce projet nécessite Python 3.14+ ; créez un venv de projet et exécutez python -m pip install -e . dans celui-ci.

Sélectionner les sessions

  • Fichier unique : asb inspect <fichier> puis asb convert <fichier> --to pi.
  • ID exact : asb convert --from codex --session <id-complet> --to pi.
  • Projet : asb list --from codex --project <répertoire-absolu>, puis asb convert --from codex --to pi --project <répertoire-absolu>.
  • Répertoire d'export : asb convert <répertoire> --from codex --to pi.
  • Un filtre de projet correspond au cwd enregistré et à ses descendants par limite de chemin. Il ne recherche pas dans le texte des messages.
  • --source-root remplace un stockage source ; --target-home est le répertoire personnel de l'agent cible (pas son répertoire sessions).
  • Utilisez --cwd uniquement lorsque l'utilisateur a l'intention de relocaliser le répertoire de travail.
  • Pi nécessite un modèle de destination car il restaure la sélection du modèle à partir des messages historiques de l'assistant. Le CLI lit les valeurs par défaut depuis le settings.json du répertoire personnel cible, puis le .pi/settings.json du cwd cible ; --provider / --model les remplacent. En l'absence de valeurs par défaut complètes pour la cible, fournissez la paire cible prévue. Ne substituez jamais le modèle source. Aucun fichier de paramètres n'est modifié.

Noms supportés : codex, pi, dsh, opencode, qwen, claude, workbuddy, antigravity, antigravity-desktop. Utilisez asb formats / asb convert --help pour les options disponibles.

Exécuter

Exécutez d'abord sans --apply. Lisez count, errors, source, target, dropped_events et warnings. Signalez l'ensemble sélectionné et les pertes matérielles sans imprimer les corps de conversation. Résolvez les correspondances inattendues ou le contenu non supporté avant d'effectuer un déplacement destructeur.

  • L'utilisateur demande de copier, ou ne précise pas la rétention : ajoutez --apply ; conservez les sources.
  • L'utilisateur demande explicitement de déplacer/couper/supprimer ces sessions sources après la migration : ajoutez --move --apply.
  • Préservez l'autorisation déjà donnée. Demandez uniquement si l'intention de suppression ou l'ensemble sélectionné n'est pas clair.
  • Arrêtez les conversations sources actives avant un déplacement. Le CLI rejette les sources modifiées pendant la conversion, mais ne peut pas empêcher un autre client d'écrire.
  • Ne substituez jamais rm, del manuel ou une suppression récursive au déplacement vérifié du CLI.
  • Inspectez chaque résultat/erreur dans un lot. Un code de sortie non nul peut indiquer un succès partiel ; ne répétez pas aveuglément les éléments réussis, qui obtiennent de nouveaux IDs.

Le CLI vérifie les octets écrits, analyse la cible et enregistre les lignes DB natives requises avant la suppression. Le nettoyage source cible uniquement l'ID de session sélectionné, le relevé correspondant et les index connus. Cette vérification n'appelle pas de modèle. Utilisez les resume argv retournés comme suggestion de commande ; la recherche d'ID natif suppose le répertoire personnel cible normal. Pour les répertoires personnels cibles personnalisés, lancez le client avec son remplacement d'environnement de répertoire personnel correspondant.

Limites des formats

  • Sélection native OpenCode : asb convert --from opencode --session <id> --to pi --move --apply. La sélection par défaut lit sa DB ; --source-root peut pointer vers le répertoire contenant opencode.db. Une exportation JSON fournie manuellement est un fichier autonome ; couper cette exportation ne supprime pas sa session DB d'origine.
  • Les répertoires personnels cibles natifs de Codex / WorkBuddy / OpenCode / Antigravity doivent déjà contenir des bases de données initialisées par le client. Les schémas inconnus ou les champs obligatoires manquants échouent clairement. Utilisez --output-dir pour les fichiers portables sans enregistrement DB.
  • Pour un projet Git, démarrez OpenCode une fois dans le répertoire de travail prévu pour initialiser son index de projet avant d'y importer.
  • WorkBuddy gère les sessions locales et sa DB/cache. Plusieurs comptes de destination nécessitent --workbuddy-user-id. Reprenez à partir de la liste des sessions de WorkBuddy. Les images blob sont omises et comptées.
  • DSH lit les fichiers JSONL/zstd v4. Les journaux plus anciens doivent d'abord être mis à niveau par DSH. Plusieurs générations bloquent un déplacement.
  • Les images DSH sont actuellement omises et comptées. Les résumés deviennent un contexte utilisateur étiqueté.
  • Antigravity désigne le format SQLite du CLI agy, pas le .pb de bureau direct ni le stockage chiffré. Son répertoire personnel est ~/.gemini/antigravity-cli ; utilisez --source-root / --target-home pour le remplacer. Fermez les clients utilisant ce répertoire personnel avant les écritures ou coupures natives. Les verrous de présence actifs et les fichiers WAL/SHM/journal bloquent les coupures.
  • Antigravity utilise une DB par session, conversation_summaries.db partagé, jetbox_summaries_proto.pb, annotations/<id>.pbtxt et un cache de dernière conversation. Le CLI écrit et supprime les enregistrements sélectionnés ensemble. Conservez les fichiers .db et .manifest.json portables ensemble pour les métadonnées de titre/cwd. Les résumés deviennent un contexte utilisateur étiqueté, les images sont omises et comptées.
  • antigravity-desktop supporte les sessions .db SQLite de l'IDE 2.5.5, avec le répertoire personnel source/cible ~/.gemini/antigravity-ide (ancien répertoire personnel SQLite ~/.gemini/antigravity). Exemple : asb convert --from codex --to antigravity-desktop --project <répertoire> --apply. Sélectionnez un ID de bureau ou un projet comme pour les autres formats. Le bureau et le CLI agy convertissent dans les deux sens en utilisant leurs noms de formats distincts.
  • Les écritures/coupures natives du bureau mettent à jour les deux index d'historique state.vscdb connus, les caches protobuf existants, les annotations de titre et la DB de conversation sélectionnée. Les chemins de profil standard sont déduits ; pour les répertoires personnels personnalisés, passez --source-state-db ou --target-state-db avec le globalStorage/state.vscdb correspondant. Fermez d'abord le client de bureau ; un service de langage en cours d'exécution ou des sidecars SQLite bloquent la modification. Un .pb hérité avec le même ID bloque les coupures. La DB d'état partagée et les sessions voisines restent.
  • Le bureau n'a pas de commande de reprise retournée : ouvrez via son interface d'historique native. La relecture officielle du service de langage est vérifiée par ID ; la découverte d'historique GUI et la continuation du modèle ne sont pas vérifiées. Ne prétendez pas à une vérification GUI à partir de l'analyse de fichier ou de l'enregistrement DB seul.
  • L'historique .pb hérité du bureau ou chiffré doit d'abord être mis à niveau/importé dans SQLite par le client officiel. Sinon, clonez-le via agy /resume → Antigravity et convertissez cette copie CLI ; déplacer la copie ne supprime pas l'original du bureau.
  • La coupure supprime le relevé/manifeste de pont sélectionné, les lignes DB de session natives et les entrées d'historique/liste connues. Les projets partagés, pièces jointes, sauvegardes, authentifications et paramètres d'exécution sont conservés. Un échec lors du nettoyage source peut laisser une cible valide et une source conservée : inspectez les erreurs avant de réessayer.
  • Les fichiers portables --output / --output-dir nécessitent une installation/importation native pour la reprise par ID. Pi peut ouvrir tout fichier Pi émis via pi --session <fichier>.
  • Les limites de compaction restent effectives : Pi continue à partir du dernier résumé et des messages ultérieurs ; les messages antérieurs restent dans son historique de session. Les résumés peuvent décrire des actions passées ; les enregistrements d'exécution d'outils bruts sont exclus.

Skills associés