La mémoire rétrospective pour OpenCode, Cursor et autres agents de codage
Mémoire de projet persistant entre les sessions.
Chaque session d’agent de codage démarre à froid. La règle de nommage et le débogage de mardi dernier se trouvaient dans le chat, et le chat est parti. La session suivante démarre sur une page blanche, et vous devez tout leur expliquer à nouveau.
Les commandes ci-dessous correspondent au paquet @vectorize-io/hindsight-coding-agents 0.8.4, publié le 30/10/2026, qui dépend de @vectorize-io/hindsight-all ^0.10.2. Le comportement du paquet, les tarifs Cloud et la Memory Defense sur cette page ont été vérifiés le 03/11/2026. D’autres manières de conserver les faits entre les sessions se trouvent sur les pages Mémoire des systèmes IA.

Un agent de codage peut lire le dépôt, exécuter les tests et modifier le code. Il ne peut toujours pas voir une décision qui n’a jamais abouti dans le fichier qu’il a ouvert. Disons que le bug d’export a été investigué l’année dernière : le balisage CSV ordinaire a été essayé et annulé parce que l’ERP récepteur supprime les zéros menants, et que le seul format qui fonctionne est la forme texte par formule d’Excel.
La documentation des coding-agents de Hindsight vise ce type de décision, celle qui vit dans un message de commit ou un chat antérieur. Le plugin copie les messages de commit récents dans une banque de mémoire, réécrit la session au fil de votre travail et conserve cinq pages pour que la session suivante puisse démarrer à partir d’elles. OpenCode, le CLI Cursor, Claude Code et les autres outils listés par le paquet partagent cette banque pour un seul dépôt.
Ce que fait le plugin coding-agents
Une installation plus ancienne doit continuer à parler au serveur que vous avez déjà choisi. hindsight-claude-code, hindsight-cursor-cli et hindsight-codex sont les paquets que celui-ci remplace. Si ~/.hindsight/claude-code.json ou ~/.hindsight/codex.json est toujours sur le disque, install copie l’URL API et le jeton de ce fichier, et une URL vide signifie toujours le démon local. L’outil que vous installez est lu en premier, donc une installation de Codex conserve le serveur de Codex même si un ancien fichier Claude se trouve à côté. Cursor CLI, Copilot CLI, OpenCode et Cline n’ont jamais écrit de fichier d’endpoint, donc ces installations n’ont pas de serveur à copier.
Les anciens paramètres de recall et retain, bankMission, retainMission et dynamicBankGranularity restent en place. La documentation des coding-agents indique qu’ils décrivent un pipeline remplacé par ce paquet, et qu’en réinterpréter serait une spéculation. Ce que vous obtenez à la place est une banque par dépôt, coding-agent::{gitProject}, partagée par tous les outils qui ouvrent ce checkout. Pour donner à chaque outil sa propre banque à nouveau, définissez le modèle que la documentation indique comme correspondant aux anciens noms :
{ "bankIdTemplate": "{harness}::{gitProject}" }
Exécuter npx @vectorize-io/hindsight-coding-agents install sans nom d’outil affiche la liste et n’écrit rien. install all est la commande qui câble tous les outils détectés. update remplace la copie sous ~/.hindsight/coding-agents et laisse seul le fichier de configuration propre à chaque outil. autoUpdate effectue ce remplacement en arrière-plan une fois par jour ; une version qui ajoute un nouveau hook a toujours besoin d’un install, car la mise à jour en arrière-plan ne modifie pas ces fichiers de configuration. Si Hindsight est une option parmi plusieurs backends, la comparaison des fournisseurs de mémoire agent l’aligne face à Honcho, Mem0 et Mnemosyne.
Choisir où la mémoire réside
La banque doit résider quelque part avant qu’une session puisse stocker une décision. Sur un terminal, install pose la question une seule fois : Hindsight Cloud, un serveur que vous faites déjà tourner, ou un démon sur la même machine que l’agent de codage. Un script passe --server. Un install ultérieur ne pose pas la question à nouveau et laisse seul un serveur que vous avez déjà nommé, sauf si vous passez --server pour le changer.
| Mode | Ce qui tourne | Ce que vous fournissez | Ce qui quitte la machine |
|---|---|---|---|
cloud |
Hindsight Cloud. Base API par défaut https://api.hindsight.vectorize.io |
Un jeton API | Prompts, texte git retenu par le plugin et mémoires extraites, envoyés à cette API |
self-hosted |
Un serveur Hindsight que vous faites tourner | Son URL, conventionnellement http://localhost:8888 |
Envoyé à cette URL. Une URL localhost reste sur la machine |
daemon |
Un hindsight-embed local que le plugin démarre sur 127.0.0.1:9077 |
uv sur le PATH, et un LLM pour l’extraction de faits |
Les données de la banque restent sur la machine. L’extraction appelle toujours le LLM donné au démon |
npx @vectorize-io/hindsight-coding-agents install opencode --server daemon
npx @vectorize-io/hindsight-coding-agents install opencode --server self-hosted --api-url http://localhost:8888
npx @vectorize-io/hindsight-coding-agents install opencode --server cloud --api-token VOTRE_JETON
Le démon lie 127.0.0.1:9077 et laisse le port 8888 pour un serveur Hindsight que vous faites vous-même tourner. Si quelque chose écoute déjà sur 9077, le plugin utilise ce processus pour tous les outils de codage et tous les dépôts, et fermer une session le laisse tourner. Le premier démarrage télécharge hindsight-embed et charge les modèles en arrière-plan, car un hook n’a pas le droit d’attendre aussi longtemps. Jusqu’à ce que le port réponde, cette session n’a pas de mémoire pour un ou deux tours, de la même manière qu’un serveur Cloud ou auto-hébergé inaccessible laisse une session sans mémoire.
Linux et Windows installent litellm, que l’API tire en dépendance, depuis des wheels. macOS le compile, parce qu’il n’y a pas de wheel pour macOS, et la compilation a besoin d’une chaîne d’outils Rust à jour de rustup. Transformer une transcription en mémoires nécessite toujours un modèle de chat : HINDSIGHT_API_LLM_PROVIDER si vous le définissez, sinon la première clé parmi OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY et GROQ_API_KEY, sinon le CLI Claude Code. Toute variable HINDSIGHT_API_* est transmise au démon. Le modèle d’embedding, le rerankeur, un serveur local compatible OpenAI et une sauvegarde de la banque se trouvent dans Hindsight pour Hermes Agent. Avec serverMode défini sur self-hosted, --api-url est l’URL de base de ce serveur.
La page de tarification de Vectorize décrit l’édition auto-hébergée comme sous licence MIT, sans frais par siège ni frais par jeton. Le Cloud facture chaque opération. Les tarifs sont dans la dernière section.
Câbler OpenCode
OpenCode doit être installé avant que le plugin ne puisse s’y attacher. Le démarrage rapide OpenCode couvre cette installation. Puis pointez le plugin vers le démon :
npx @vectorize-io/hindsight-coding-agents install opencode --server daemon
L’installateur écrit un chemin de plugin dans le fichier utilisateur ~/.config/opencode/opencode.json, pointant vers ~/.hindsight/coding-agents. Ceci est séparé d’un opencode.jsonc de projet. OpenCode charge les outils hindsight_* depuis ce chemin et n’a pas besoin d’un serveur MCP. OpenCode 2 (npm @opencode/cli, cible d’installation opencode2) lit le même fichier. Installer soit le CLI câble les deux, et désinstaller l’un supprime l’entrée. OpenCode v1 rejette le fichier s’il contient la clé plugins de la v2, donc l’installateur écrit un chemin unique et chaque CLI charge son propre point d’entrée depuis le paquet.
Sur OpenCode 2, l’enquête en lecture seule du dépôt s’exécute sous un autre outil installé, car un plugin v2 ne peut pas définir l’agent en lecture seule nécessaire à l’enquête, et l’avis « seedé » va vers le journal du plugin car un plugin v2 ne peut pas lever un toast. Le recall, les outils hindsight_* et la réécriture de la session fonctionnent comme sur v1.
OpenCode lit ~/.hindsight/coding-agent.json quand l’espace de travail se charge, donc un changement de ce fichier s’applique après redémarrage d’OpenCode. Un nouveau apiToken est l’exception pour tous les outils : le client le relit quand le serveur rejette une requête, donc la rotation de la clé ne nécessite pas ce redémarrage.
Pour voir si la banque a réellement conservé une décision, utilisez deux sessions dans un dépôt que vous êtes prêt à stocker :
- Démarrez OpenCode là et énoncez une décision jetable, comme un code d’erreur public que vous ne voulez pas voir changer.
- Terminez la session. OpenCode écrit la transcription pendant la session et purge la dernière réponse quand elle devient inactive.
- Démarrez une nouvelle session dans le même répertoire et demandez ce code, et l’endroit où il a été décidé.
- Demandez à l’agent d’appeler
hindsight_sync_status."synced": truesignifie que la mémoire seedée peut être interrogée. Le même résultat rapporte la fraîcheur de la copie git et le nombre de documents d’enquête arrivés (surveyDocs, de 0 à 4).
Si la deuxième session n’a pas de mémoire du code, regardez dans ~/.hindsight/coding-agents-logs/. plugin.log est la piste lisible, diag.jsonl enregistre chaque réflexion et chaque récupération de page, et usage.jsonl enregistre quels outils hindsight_* le tour a appelés. npx @vectorize-io/hindsight-coding-agents stats résume ce fichier d’utilisation par agent. Quand une réflexion expirée ou renvoie un 5xx, diag.jsonl enregistre une recherche des pages de connaissance et, si aucune page ne correspond, un rappel simple des observations. L’agent répond quand même. Si ces secours échouent aussi, ce tour n’a rien de la banque devant lui.
Câbler Cursor et les autres agents
Cursor rejoint la même banque via son CLI. L’installateur écrit des hooks et un MCP sous ~/.cursor :
npx @vectorize-io/hindsight-coding-agents install cursor-cli --server daemon
Ceci écrit des hooks dans ~/.cursor/hooks.json, un serveur MCP dans ~/.cursor/mcp.json et une compétence compagnon. Chaque hook est un processus de courte durée, donc une modification de coding-agent.json s’applique au prompt suivant. Le processus MCP lit le fichier au démarrage, donc les outils hindsight_* voient la modification dans la session suivante.
Claude Code obtient le même câblage hook-et-MCP dans les fichiers de Claude. install claude-code ajoute trois hooks à ~/.claude/settings.json, enregistre le MCP pour votre utilisateur via claude mcp add, et installe ~/.claude/skills/hindsight-coding-agent. Cette compétence est ce que Claude lit quand vous lui dites de stocker quelque chose dans Hindsight. Codex CLI (install codex) écrit trois hooks dans ~/.codex/hooks.json et un bloc [mcp_servers] dans config.toml, et ces hooks ne s’exécutent que si codex_hooks est vrai.
| Outil | Cible d’installation | Câblage | Comment l’agent atteint la mémoire |
|---|---|---|---|
| OpenCode | opencode |
~/.config/opencode/opencode.json |
Outils natifs, pas de MCP |
| OpenCode 2 | opencode2 |
Même fichier qu’OpenCode | Outils natifs, pas de MCP |
| Cursor CLI | cursor-cli |
~/.cursor/hooks.json, ~/.cursor/mcp.json, compétence compagnon |
Hooks plus MCP |
| Claude Code | claude-code |
Trois hooks dans ~/.claude/settings.json, MCP au niveau utilisateur, compétence sous ~/.claude/skills/ |
Hooks plus MCP |
| Codex CLI | codex |
~/.codex/hooks.json, [mcp_servers] dans config.toml |
Hooks plus MCP |
| pi | pi |
Extension dans ~/.pi/agent/settings.json, compétence sous ~/.pi/agent/skills |
Outils natifs, pas de MCP |
Kilo, Copilot CLI, Cline, Devin CLI et les autres noms sur la page coding-agents utilisent la même commande install <name>, et ils partagent la banque du dépôt que vous ouvrez. Devin CLI n’installera pas sur Node plus ancien que 22.5, car ses hooks lisent la base de données de session via node:sqlite. pi et Prime Agent doivent aussi utiliser cette commande install. pi install npm:@vectorize-io/hindsight-coding-agents est laissé non câblé : les deux outils lisent une seule clé pi dans package.json, et cette clé ne peut pointer que vers une seule entrée.
Pour empêcher Claude Code d’écrire dans la banque pendant qu’OpenCode le fait toujours, définissez disabled pour cet outil :
{
"serverMode": "daemon",
"harnesses": {
"claude-code": { "disabled": true }
}
}
Claude Code ne stocke alors rien, ne rappelle rien et ne reçoit pas d’outils Hindsight. retainSessions défini à false, pour tous les outils ou pour l’un d’eux, arrête d’enregistrer les transcriptions et d’importer les anciennes. Le recall, l’historique git et les outils de mémoire continuent de fonctionner, donc vous pouvez toujours demander ce qui est déjà stocké.
Banques par dépôt et pages de connaissance
OpenCode et le CLI Cursor sur un seul checkout doivent se souvenir du même projet. Le nom de la banque qui fait ceci est coding-agent::{gitProject}. {gitProject} est le nom du répertoire du checkout git principal, obtenu via git rev-parse --git-common-dir, donc un worktree lié utilise la même banque que ce checkout. Un dossier qui n’est pas un dépôt git prend le nom du répertoire où la session a commencé.
Un dossier qui devrait utiliser une banque différente va dans mapPathToBank. Vous donnez un chemin absolu, le chemin le plus long correspondant l’emporte, et lister la racine du dépôt couvre tous les sous-répertoires sous celui-ci. Cette map écrase tout le reste, y compris un bankId fixe. Définissez bankId quand tous les répertoires que vous ouvrez doivent écrire dans une banque unique que vous avez nommée. dynamicBankId défini à false maintient la résolution sur cette banque statique au lieu de bankIdTemplate.
Si l’agent cd dans un répertoire qui appartient à une autre banque, les tours à partir de là sont stockés dans la nouvelle banque. Les tours déjà sauvés restent là où ils étaient écrits. Chaque déplacement est un avertissement dans plugin.log.
La première fois que vous ouvrez un dépôt, cette banque n’a aucune des décisions passées du projet. La session copie les messages de commit récents, c’est ainsi qu’un choix qui n’existe que dans git devient quelque chose que la session suivante peut rappeler. La copie est activée par défaut (autoSeed). Une écriture complète de ce document conserve les commits les plus récents, entre la moitié de seedLimit et seedLimit (300). La fenêtre avance par pas de moitié, et le journal indique combien de commits plus anciens elle a abandonnés.
gitIngest choisit combien de cette histoire git est stocké, tant pour la première copie que pour les commits que vous faites ensuite. "message" stocke les messages de commit et met à jour le document quand HEAD contient un commit manquant au document. "full" stocke aussi la diff de chaque commit, du plus récent au plus ancien. "none" laisse git de côté. Un commit ultérieur ajoute son propre message. Le document entier est réécrit, toujours à l’intérieur de cette fenêtre seedLimit, quand le commit sauvegardé n’est plus un ancêtre de HEAD, quand plus de seedLimit commits sont nouveaux, ou quand le serveur ne peut pas ajouter en toute sécurité.
Les messages de commit ne montrent pas comment le code est organisé maintenant, donc la même première session peut aussi parcourir l’arbre. Ce parcours est codebaseSurvey, activé par défaut. L’outil de codage que vous utilisez l’exécute quand son CLI peut héberger un agent en lecture seule ; sinon, un autre outil installé l’exécute.
Sur Claude Code, le parcours est claude -p, et surveyBudgetUsd (défaut 2) arrête les dépenses. Les autres outils utilisent le modèle vers lequel ils sont déjà pointés, dans leur propre bac à sable en lecture seule. Après 20 nouveaux commits (surveyRefreshCommits), le parcours s’exécute à nouveau. Définissez cela à 0 et il s’exécute seulement sur une banque qui n’a jamais été enquêtée.
Note : Le parcours démarre un agent de codage séparé, comme OpenCode headless. Ces appels vont vers le modèle de cet agent, donc
HINDSIGHT_API_LLM_MAX_CONCURRENTdéfini à"1"ne les ralentit pas. Quand le modèle est un serveur auto-hébergé qui répond déjà à votre session, l’enquête est un deuxième passage complet sur le même serveur. DéfinissezcodebaseSurveyàfalsequand le serveur ne peut pas le supporter.
La session suivante démarre de cinq pages au lieu de relire chaque fait stocké. Chaque page est synthétisée à partir d’une couche de connaissance, donc elle ne lit que les faits que l’extracteur a routés vers cette couche.
| Page | Ce qu’elle répond | Tag |
|---|---|---|
| Carte des composants | Principaux composants, leurs responsabilités et comment ils dépendent les uns des autres | knowledge:component |
| Concepts de base | Abstractions de domaine et le vocabulaire qu’un développeur doit connaître | knowledge:concept |
| Conventions et modèles | Comment ce projet teste, gère les erreurs, nomme les choses, structure le code et fait des modifications | knowledge:convention |
| Décisions clés et rationalité | Décisions techniques significatives et pourquoi le projet le fait ainsi | knowledge:decision |
| Initiatives et améliorations | Initiatives majeures au fil du temps, avec liens vers les pages d’initiative capturées | knowledge:feature-work |
Une minute partagée déclencherait les cinq pages à la fois, sur la même piscine de travailleurs qui stocke les nouvelles mémoires, et une session ingérant alors attendrait derrière ce tas. L’horaire par défaut les étale. pageTriggerCron est H * * * * : chaque page obtient sa propre minute, hachée à partir de l’id de la banque et du nom de la page, et un tic sans rien de nouveau est sauté. pageTriggerType défini à auto-refresh réécrit une page après chaque consolidation qui a produit du nouveau matériel. La documentation appelle cela l’horaire le plus actuel et le plus coûteux, une synthèse de modèle par page par consolidation. manual laisse une page telle quelle jusqu’à ce que vous la rafraîchissiez.
Une page intégrée que vous ne voulez pas mettre à jour est false sous pages. La copie déjà stockée reste jusqu’à ce que vous la supprimiez dans le plan de contrôle. source_query remplace la question que la page pose, et le plugin ajoute toujours la clause qui maintient les décisions d’une dépendance hors de la page. Une page de votre propre création va sous customPages et a besoin de son propre source_query. Un nom inconnu sous pages est ignoré, avec un avertissement dans plugin.log, donc une faute de frappe ne crée pas une deuxième page vide. Demander à l’agent de capturer une initiative écrit une page séparée, une par initiative, via hindsight_capture_initiative.
Supprimer la banque sur le serveur efface la mémoire de ce dépôt. La session suivante copie l’historique git et parcourt l’arbre à nouveau. Désinstaller le plugin laisse la banque telle quelle.
Contrôles de portée et de confidentialité
Ouvrir un dépôt crée une banque pour lui, c’est ainsi qu’un arbre client peut être stocké sans que vous le demandiez. optInOnly limite la mémoire aux répertoires que vous nommez. Partout ailleurs, le plugin ne crée pas de banque, ne stocke rien et ne copie pas l’historique git, et l’outil de codage se comporte comme si le plugin n’était pas installé.
{
"optInOnly": true,
"optInPaths": ["~/prj", "~/oss"]
}
Chaque entrée est un préfixe de répertoire, ~ s’étend, et chaque dépôt sous lui obtient toujours sa propre banque coding-agent::{gitProject}. Un chemin dans mapPathToBank est aussi autorisé, parce que vous avez déjà nommé ce dossier. Un bankId isolé n’autorise rien : il nomme une banque, pas un dossier, donc avec optInOnly actif, les répertoires non nommés restent dehors. Le plugin ne lit aucune configuration du dépôt. La raison de la documentation est qu’un dépôt cloné ne doit pas pouvoir activer la mémoire. Quel dossier utilise quelle banque reste dans mapPathToBank. Quel outil est activé ou désactivé reste dans harnesses. Une fois l’id de la banque connu, les règles supplémentaires pour ce seul dépôt vont dans banks :
{
"banks": {
"coding-agent::client-secret": { "disabled": true }
}
}
npx @vectorize-io/hindsight-coding-agents uninstall cursor-cli supprime les hooks Cursor, l’entrée MCP et la compétence que l’installateur a ajoutés. uninstall all fait cela pour tous les outils qu’il a câblés. Un fichier qui existait déjà est copié dans un .hindsight-backup à côté avant que l’installateur ne l’édite. La banque, la base de données du démon et ~/.hindsight/coding-agent.json restent.
Un jeton collé dans un chat ne devrait pas devenir une mémoire. Memory Defense est un scan de 45 motifs de texte avant qu’il soit stocké, et il reste désactivé jusqu’à ce que cette banque ait une politique. redact remplace une correspondance par un marqueur tel que [REDACTED:github_token] et stocke le reste. block abandonne l’élément correspondant et renvoie 422 quand tous les éléments de la requête correspondaient. La politique s’applique aux stocks ultérieurs sur cette banque. Les mémoires déjà stockées sont laissées telles quelles. Ces deux actions sont la règle open-source sensitive_data.
Qui est autorisé à activer le scan est écrit différemment dans deux endroits. Le post entreprise du 03/09/2026 dit que le scanner de base est sur tous les plans, et que les détecteurs supplémentaires — un catalogue de 220 motifs ou plus, ré-examen en base64, vérifications d’injection de prompt et écran LLM — sont Entreprise. La comparaison des tarifs marque Memory Defense comme Entreprise uniquement, avec les cellules auto-hébergé et Cloud vides. Vérifiez cette ligne sur la page de tarification actuelle avant de compter sur une banque Cloud pour éliminer les secrets.
manageBankConfig est vrai par défaut, ce qui permet au plugin d’écrire les paramètres de banque dont son ingestion a besoin, et tous les champs que vous mettez dans defaultBankConfig. Il écrit un champ seulement là où la banque ne définit pas encore un, donc une valeur que vous définissez dans le plan de contrôle reste. Le mode d’extraction sur les stratégies propres du plugin est l’exception : il suit retainExtractionMode sur chaque session. retainContext, envoyé avec chaque réécriture de session, dit à l’extraction qui a dit la phrase. La définition nomme les deux locuteurs, et demande que les « fixed » ou « passes » propres de l’agent soient stockés comme affirmation de l’agent plutôt que comme fait. Quand une conclusion est stockée comme si quelqu’un l’avait observée, les manières qui alimentent la session suivante sont dans Boucles de mémoire auto-renforcées.
Paramètres pour le développement quotidien
Chaque outil de codage lit le même fichier, ~/.hindsight/coding-agent.json, donc une limite que vous définissez une fois s’applique à OpenCode et à Cursor. HINDSIGHT_CONFIG déplace ce fichier. Il ne crée pas un deuxième. Pour chaque paramètre, une valeur par défaut intégrée perd face à une variable d’environnement (HINDSIGHT_API_URL, HINDSIGHT_API_TOKEN, ou HINDSIGHT_<CHAMP> pour d’autres valeurs uniques unique), qui perd face au sommet du fichier, puis à harnesses.<nom>, puis à paths.<préfixe>, puis à banks.<id>. Une valeur écrite dans le fichier reste quand vous définissez ensuite la même variable d’environnement. retainTags et optInPaths peuvent être une variable séparée par des virgules. mapPathToBank, harnesses, paths, banks, retainMetadata et recallOptions ne sont lus que depuis le fichier.
Quand une session est lente, coûteuse ou se souvient du mauvais dépôt, le changement est l’un de ces champs. Les valeurs par défaut sont de la référence des coding-agents.
| Champ | Défaut | Quand le changer |
|---|---|---|
serverMode |
cloud |
daemon pour une banque locale, self-hosted pour un serveur que vous faites tourner |
autoInject |
"reflect" |
"pages" ou "recall" sautent la synthèse de démarrage de session. "none" n’injecte rien ; l’agent cherche des pages et réfléchit quand elles sont trop superficielles |
reflectTimeoutMs |
20000 |
La réflexion automatique de session. Sur les outils qui utilisent des hooks, l’installateur définit un délai d’expiration de 30 secondes pour le prompt-hook, donc une valeur au-delà d’environ 20 secondes a aussi besoin que le timeout de ce hook soit augmenté |
reflectBudget |
"high" |
Budget pour l’outil hindsight_reflect appelé par l’agent. La réflexion automatique de session utilise toujours "low" et ignore ceci |
recallOptions |
observations, budget faible, max_tokens 2000 |
Fusionné clé par clé. Une banque avec la consolidation désactivée ne grandit pas d’observations, et le rappel par défaut revient vide — définissez "types": ["world", "experience"] là |
retainExtractionMode |
"concise" |
"verbose" tire plus de détail. La référence dit que cela coûte plusieurs fois les jetons, parce que chaque Stop réécrit la session. "chunks" stocke du texte sans extraction |
retainTags / retainMetadata |
non défini | Sur une banque partagée, tampez project:{gitProject} pour que les rappels puissent filtrer. L’id de la banque répond déjà à « quel dépôt » quand chaque dépôt a sa propre banque |
bankIdTemplate |
coding-agent::{gitProject} |
{harness}::{gitProject} sépare les agents. mapPathToBank envoie un arbre de répertoire vers une banque nommée |
codebaseSurvey |
true |
false quand l’enquête et votre session partagent un même modèle auto-hébergé. surveyBudgetUsd (défaut 2) plafonne seulement la recette Claude |
pageTriggerType |
"cron" |
"auto-refresh" suit chaque consolidation. "manual" laisse les pages là où elles sont |
maxParallelRetains |
10 |
Baissez-le si l’API renvoie 429. La référence dit que l’API limite les rafales |
Un démon local qui ne se souvient que des dépôts sous ~/prj, stocke les messages de commit, laisse l’enquête du dépôt hors, et demande aux nouvelles banques de masquer les secrets ressemble à ceci :
{
"serverMode": "daemon",
"optInOnly": true,
"optInPaths": ["~/prj"],
"gitIngest": "message",
// codebaseSurvey démarre un autre agent de codage. HINDSIGHT_API_LLM_MAX_CONCURRENT ne le limite pas.
"codebaseSurvey": false,
"retainExtractionMode": "concise",
"autoInject": "reflect",
"defaultBankConfig": {
"memory_defense": {
"enabled": true,
"rules": [{ "on": "sensitive_data", "action": "redact" }]
}
}
}
defaultBankConfig remplit memory_defense seulement sur une banque qui ne l’a pas déjà, et ne fait rien quand manageBankConfig est faux. hindsight_diagnose montre le fichier tel qu’il est maintenant et les valeurs que le client en cours a réellement chargées.
Ce que cela coûte, et quand un fichier suffit
Une session peut dépenser trois choses quand elle démarre : une réflexion à budget faible sur le premier prompt, une copie des messages de commit récents plafonnée par seedLimit, et le parcours de l’arbre. Avec retainSessions laissé activé, la transcription est stockée au fil de la session. Les cinq pages rafraîchissent sur leur propre minute de l’heure quand quelque chose a changé. gitIngest défini à "full" stocke les diffs avec les messages.
La FAQ de tarification de Vectorize liste les tarifs Cloud sans frais mensuel fixe ni prix par siège. La FAQ dit que les nouveaux comptes reçoivent des crédits gratuits et ne publie pas le montant des crédits.
| Opération | Prix |
|---|---|
| Retain | 10,00 $ par million de jetons |
| Recall | 0,75 $ par million de jetons |
| Reflect | 0,05 $ par appel |
| Iris Extract | 7,50 $ par million de jetons |
| Mental Model Retrieve | 0,25 $ par million de jetons |
| Mental Model Refresh | 0,05 $ par appel |
| Stockage après 30 jours | 0,25 $ par million de jetons par mois |
Les mémoires sont gratuites à stocker pour les 30 premiers jours. L’aperçu Cloud dit que la création ou le rafraîchissement de pages de connaissance est facturé par appel, et la FAQ ne publie pas une ligne séparée pour les pages de connaissance. Un démon ou un serveur auto-hébergé ne subit pas ces tarifs Cloud. L’extraction dépense toujours ce que coûte le LLM du démon, y compris une clé d’API cloud si c’est la clé que install a trouvée.
La même page de documentation rapporte une exécution AMB sdebench : 61 tâches de dépôt, trois exécutions chacune, avec et sans mémoire. Chaque exécution a résolu 60 à 61 des 61 dans les deux cas. Ce qui a bougé, c’est les corrections par tâche et le coût par tâche. La page dit que les chiffres de correction reproduisent les étiquettes que AMB imprime sur son propre graphique, et que le coût est dérivé du même tableau par exécution.
| Agent | Corrections par tâche | Coût par tâche |
|---|---|---|
| Claude Code | 0,85 → 0,36 | 0,445 $ → 0,338 $ |
| Codex CLI | 1,34 → 0,47 | 0,577 $ → 0,276 $ |
| opencode | 1,20 → 0,80 | 0,634 $ → 0,553 $ |
Pas de mémoire, c’est le nombre à gauche. Ces trois agents sont le tableau entier que la page imprime.
Une règle que vous voulez faire examiner à côté du code appartient dans AGENTS.md ou CLAUDE.md. Ce fichier est dans le dépôt quand le démon est hors service, et le sauvegarder ne stocke pas le chat. La banque porte une décision qui n’a jamais été écrite là et que la session suivante continue de rater. Sur Hermes, un stockage SQLite local avec ses propres interrupteurs de rétention est Mnemosyne.
Sources
- Agents de codage — cibles d’installation, champs de
coding-agent.json, nommage des banques, pages de connaissance, mode démon et tableau sdebench. Paquet npm@vectorize-io/hindsight-coding-agents0.8.4, publié le 30/10/2026. - Tarification — tarifs des opérations Cloud, l’affirmation gratuit-à-auto-héberger et la ligne de la matrice des plans pour Memory Defense.
- Memory Defense — politique
sensitive_datapar banque, redact et block, 45 motifs, hors jusqu’à ce qu’une politique de banque soit définie. Les mémoires existantes restent non scannées. - Fonctionnalités d’entreprise, 03/09/2026 — scanner de base décrit comme tous les plans ; détecteurs supplémentaires décrits comme Entreprise.