Память «задним числом» для OpenCode, Cursor и других кодинг-агентов

Память проекта, сохраняющаяся между сессиями.

Содержимое страницы

Каждая сессия агента для программирования начинается с чистого листа. Правило о именовании, которое обсуждали в прошлый вторник, и разбор бага остались в чате, а чат уже исчез. Следующая сессия начинается пуста, и вам приходится объяснять это снова.

Команды ниже соответствуют версии 0.8.4 пакета @vectorize-io/hindsight-coding-agents, опубликованной 30.10.2026, который зависит от @vectorize-io/hindsight-all ^0.10.2. Поведение пакета, тарифы облачного сервиса и настройки Memory Defense на этой странице проверялись 03.11.2026. О способах сохранения фактов между сессиями рассказано на страницах раздела Память в ИИ-системах.

Домашняя самостудия с рабочим столом, ноутбуком, серверной стойкой и французскими дверями

Агент для программирования умеет читать репозиторий, запускать тесты и изменять код. Но он по-прежнему не видит решений, которые так и не были записаны в тот файл, который открыт сейчас. Представим, что экспортный баг расследовали в прошлом году: пробовали и откатывали стандартное экранирование CSV, потому что принимающая ERP-система убирает ведущие нули, а единственный работающий формат — текстовая формула Excel.

Документация hindsight-coding-agents нацелена именно на такие решения, которые живут в коммите или в более раннем чате. Плагин копирует недавние сообщения коммитов в банк памяти, записывает сессию обратно во время работы и поддерживает пять страниц, чтобы следующая сессия могла стартовать на их основе. OpenCode, Cursor CLI, Claude Code и другие инструменты, перечисленные в пакете, разделяют этот банк для одного репозитория.

Что такое плагин coding-agents

При более ранней установке агент должен продолжать работать с тем сервером, который вы уже выбрали. hindsight-claude-code, hindsight-cursor-cli и hindsight-codex — это пакеты, которые заменяет данный плагин. Если на диске всё ещё есть файлы ~/.hindsight/claude-code.json или ~/.hindsight/codex.json, команда install копирует URL API и токен из этого файла, а пустой URL по-прежнему означает локальный демон. Сначала определяется инструмент, который вы устанавливаете, поэтому установка Codex сохраняет сервер Codex, даже если рядом лежит старый файл Claude. Cursor CLI, Copilot CLI, OpenCode и Cline никогда не создавали файл с точкой входа, поэтому при их установке сервер копировать не нужно.

Настройки старого recall и retain — bankMission, retainMission и dynamicBankGranularity — остаются неиспользуемыми. Документация coding-agents указывает, что они описывают конвейер, который этот пакет заменил, и их повторная интерпретация была бы лишь догадкой. Вместо этого вы получаете один банк на репозиторий: coding-agent::{gitProject}, которым делятся все инструменты, открывающие данный чек-аут. Чтобы вернуть каждому инструменту отдельный банк, задайте шаблон, который, согласно документации, соответствует старым именам:

{ "bankIdTemplate": "{harness}::{gitProject}" }

Запуск npx @vectorize-io/hindsight-coding-agents install без указания имени инструмента выводит список и ничего не записывает. Команда install all настраивает все обнаруженные инструменты. Команда update заменяет копию в каталоге ~/.hindsight/coding-agents, не трогая файлы конфигурации самих инструментов. Флаг autoUpdate выполняет эту замену в фоновом режиме раз в день; релиз с новым хуком всё равно потребует install, потому что фоновое обновление не редактирует файлы конфигурации. Если Hindsight — один из нескольких бэкендов, сравнение провайдеров памяти для агентов сопоставляет его с Honcho, Mem0 и Mnemosyne.

Выбор места хранения памяти

Банк должен где-то храниться, прежде чем сессия сможет сохранить решение. В терминале команда install спрашивает один раз: Hindsight Cloud, уже работающий сервер или демон на том же компьютере, что и агент для программирования. Скрипт передаёт --server. Последующий запуск install больше не спрашивает и не трогает уже указанный сервер, если вы не передадите --server, чтобы его изменить.

Режим Что выполняется Что вы предоставляете Что покидает машину
cloud Hindsight Cloud. Базовый URL API по умолчанию https://api.hindsight.vectorize.io API-токен Промпты, текст git, сохраняемый плагином, и извлечённые воспоминания, отправляемые на этот API
self-hosted Сервер Hindsight, который вы уже запускаете Его URL, обычно http://localhost:8888 Отправляется на этот URL. URL localhost остаётся на машине
daemon Локальный hindsight-embed, который плагин запускает на 127.0.0.1:9077 uv в PATH и LLM для извлечения фактов Данные банка остаются на машине. Извлечение всё равно вызывает LLM, заданный для демона
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 YOUR_TOKEN
flowchart LR A[Агент для программирования] --> P[Плагин coding-agents] P --> B["Банк coding-agent::{gitProject}"] P --> M{serverMode} M --> C[Hindsight Cloud] M --> S[Self-hosted API :8888] M --> D["hindsight-embed 127.0.0.1:9077"]

Демон привязывается к 127.0.0.1:9077 и оставляет порт 8888 для сервера Hindsight, который вы запускаете сами. Если на порту 9077 уже что-то работает, плагин использует этот процесс для всех инструментов и всех репозиториев, и закрытие сессии не останавливает его. При первом запуске скачивается hindsight-embed, а модели загружаются в фоне, так как хук не может ждать так долго. Пока порт не ответит, у этой сессии не будет памяти в течение хода-двух, так же как и при недоступном облачном или self-hosted сервере.

На Linux и Windows litellm (который API подтягивает как зависимость) устанавливается из wheel-файлов. На macOS он компилируется, так как wheel-файла для macOS нет, а для компиляции нужна актуальная toolchain на Rust из rustup. Для преобразования транскрипта в воспоминания всё равно нужна чат-модель: переменная HINDSIGHT_API_LLM_PROVIDER, если вы её задали, иначе первый найденный ключ среди OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY и GROQ_API_KEY, иначе CLI Claude Code. Любая переменная HINDSIGHT_API_* передаётся демону. О модели эмбеддингов, реранкер, локальный OpenAI-совместимый сервер и резервное копирование банка рассказано в статье Hindsight для Hermes Agent. Если serverMode установлен в self-hosted, то --api-url — это базовый URL этого сервера.

Страница с ценами Vectorize описывает self-hosted-издание как MIT-лицензированное, без платы за пользователя и платы за токены. Cloud тарифицирует каждую операцию. Тарифы приведены в последнем разделе.

Подключение OpenCode

OpenCode должен быть установлен, прежде чем плагин сможет к нему подключиться. Быстрый старт OpenCode охватывает этот процесс установки. Затем укажите плагину на демон:

npx @vectorize-io/hindsight-coding-agents install opencode --server daemon

Установщик записывает один путь плагина в пользовательский файл ~/.config/opencode/opencode.json, указывающий на ~/.hindsight/coding-agents. Это отличается от проектного opencode.jsonc. OpenCode загружает инструменты hindsight_* по этому пути, и ему не нужен MCP-сервер. OpenCode 2 (пакет npm @opencode/cli, цель установки opencode2) читает тот же файл. Установка любого из CLI настраивает оба, и удаление любого из них удаляет запись. OpenCode v1 отклоняет файл, если в нём есть ключ plugins от v2, поэтому установщик записывает один путь, и каждый CLI загружает свою точку входа из пакета.

В OpenCode 2 только-чтение обзора репозитория выполняется другим установленным инструментом, потому что плагин v2 не может определить read-only-агента, необходимый для обзора, а уведомление о «seeded» попадает в лог плагина, так как плагин v2 не может показать тост. Recall, инструменты hindsight_* и запись сессии обратно работают так же, как в v1.

OpenCode читает ~/.hindsight/coding-agent.json при загрузке рабочей области, поэтому изменения в этом файле применяются после перезапуска OpenCode. Исключение на всех инструментах — новый apiToken: клиент перечитывает его, когда сервер отклоняет запрос, поэтому ротация ключа не требует перезапуска.

Чтобы проверить, сохранил ли банк решение, используйте две сессии в репозитории, который вы готовы сохранять:

  1. Запустите OpenCode в этой директории и примите одно одноразовое решение, например, публичный код ошибки, который вы не хотите менять.
  2. Завершите сессию. OpenCode записывает транскрипт во время сессии и фиксирует последний ответ при простое.
  3. Запустите новую сессию в той же директории и спросите о этом коде и о том, где он был решён.
  4. Попросите агента вызвать hindsight_sync_status. "synced": true означает, что записанные воспоминания доступны для запроса. Тот же результат показывает, насколько свежая копия git, и сколько документов обзора записано (surveyDocs, от 0 до 4).

Если во второй сессии нет памяти о коде, посмотрите в ~/.hindsight/coding-agents-logs/. plugin.log — это читаемый след, diag.jsonl записывает каждый reflect и запрос страниц, а usage.jsonl записывает, какие инструменты hindsight_* вызвал ход. Команда npx @vectorize-io/hindsight-coding-agents stats суммирует файл использования по каждому агенту. Если reflect таймаутится или возвращает 5xx, diag.jsonl записывает поиск по страницам знаний и, если ни одна страница не совпала, обычный recall наблюдений. Агент всё равно отвечает. Если эти запасные варианты тоже не сработают, у этого хода ничего от банка не будет.

Подключение Cursor и других агентов

Cursor подключается к тому же банку через CLI. Установщик записывает хуки и MCP в ~/.cursor:

npx @vectorize-io/hindsight-coding-agents install cursor-cli --server daemon

Это записывает хуки в ~/.cursor/hooks.json, MCP-сервер в ~/.cursor/mcp.json и сопутствующий скилл. Каждый хук — это процесс с коротким временем жизни, поэтому изменение coding-agent.json применяется при следующем промпте. Процесс MCP читает файл при старте, поэтому инструменты hindsight_* увидят изменение в следующей сессии.

Claude Code получает такую же настройку хуков и MCP в файлах Claude. Команда install claude-code добавляет три хука в ~/.claude/settings.json, регистрирует MCP для пользователя через claude mcp add и устанавливает ~/.claude/skills/hindsight-coding-agent. Этот скилл — то, что Claude читает, когда вы просите его сохранить что-то в Hindsight. Codex CLI (install codex) записывает три хука в ~/.codex/hooks.json и блок [mcp_servers] в config.toml, и эти хуки работают только когда codex_hooks равно true.

Инструмент Цель установки Настройка Как агент достигает памяти
OpenCode opencode ~/.config/opencode/opencode.json Нативные инструменты, без MCP
OpenCode 2 opencode2 Тот же файл, что у OpenCode Нативные инструменты, без MCP
Cursor CLI cursor-cli ~/.cursor/hooks.json, ~/.cursor/mcp.json, сопутствующий скилл Хуки плюс MCP
Claude Code claude-code Три хука в ~/.claude/settings.json, MCP user-scope, скилл в ~/.claude/skills/ Хуки плюс MCP
Codex CLI codex ~/.codex/hooks.json, [mcp_servers] в config.toml Хуки плюс MCP
pi pi Расширение в ~/.pi/agent/settings.json, скилл в ~/.pi/agent/skills Нативные инструменты, без MCP

Kilo, Copilot CLI, Cline, Devin CLI и другие имена со страницы coding-agents используют ту же команду install <name>, и они делят банк того репозитория, который вы открываете. Devin CLI не установится на Node старше 22.5, потому что его хуки читают базу данных сессии через node:sqlite. pi и Prime Agent тоже должны использовать эту команду install. Команда pi install npm:@vectorize-io/hindsight-coding-agents оставлена без настройки: оба инструмента читают один ключ pi в package.json, и этот ключ может указывать только на одну запись.

Чтобы не дать Claude Code писать в банк, пока OpenCode продолжает делать это, задайте disabled для этого инструмента:

{
  "serverMode": "daemon",
  "harnesses": {
    "claude-code": { "disabled": true }
  }
}

Тогда Claude Code ничего не сохраняет, ничего не вспоминает и не получает инструменты Hindsight. Установка retainSessions в false (для всех инструментов или для одного) останавливает сохранение транскриптов и импорт старых. Recall, история git и инструменты памяти продолжают работать, поэтому вы можете продолжать спрашивать о том, что уже сохранено.

Банки на каждый репозиторий и страницы знаний

OpenCode и Cursor CLI на одном чек-ауте должны помнить один и тот же проект. Имя банка, которое это обеспечивает, — coding-agent::{gitProject}. {gitProject} — это имя директории основного чек-аута git, полученное из git rev-parse --git-common-dir, поэтому связанный worktree использует тот же банк, что и этот чек-аут. Папка, не являющаяся git-репозиторием, берёт имя директории, где началась сессия.

Папка, которая должна использовать другой банк, указывается в mapPathToBank. Вы даёте абсолютный путь, выигрывает самый длинный совпавший путь, а указание корня репозитория покрывает все подкаталоги под ним. Эта карта переопределяет всё остальное, включая фиксированный bankId. Задайте bankId, если все директории, которые вы открываете, должны писать в один и тот же банк, который вы назвали. Установка dynamicBankId в false сохраняет разрешение на этом статическом банке вместо bankIdTemplate.

Если агент cd в директорию, принадлежащую другому банку, ходы с этого момента сохраняются в новом банке. Ходы, уже сохранённые, остаются там, где они были записаны. Каждое перемещение — это предупреждение в plugin.log.

В первый раз, когда вы открываете репозиторий, у этого банка нет никаких прошлых решений проекта. Сессия копирует недавние сообщения коммитов, и именно так выбор, существующий только в git, становится тем, что следующая сессия может вспомнить. Копирование включено по умолчанию (autoSeed). Полная запись этого документа сохраняет самые новые коммиты, от половины seedLimit до seedLimit (300). Окно сдвигается половинными шагами, а лог сообщает, сколько старых коммитов оно отбросило.

gitIngest определяет, сколько истории git сохраняется, как для первой копии, так и для коммитов, которые вы делаете позже. "message" сохраняет сообщения коммитов и обновляет документ, когда HEAD содержит коммит, которого нет в документе. "full" также сохраняет дифф каждого коммита, начиная с самых новых. "none" исключает git. Поздний коммит добавляет своё сообщение. Весь документ перезаписывается, всё ещё в окне seedLimit, когда сохранённый коммит больше не является предком HEAD, когда новых коммитов больше, чем seedLimit, или когда сервер не может безопасно добавить данные.

Сообщения коммитов не показывают, как код устроен сейчас, поэтому та же первая сессия может также обойти дерево. Это обход — codebaseSurvey, включён по умолчанию. Используемый вами инструмент для программирования выполняет его, если его CLI может host read-only-агента; иначе его выполняет другой установленный инструмент.

В Claude Code этот обход — claude -p, и surveyBudgetUsd (по умолчанию 2) останавливает расходы. Другие инструменты используют модель, на которую они уже настроены, внутри своего read-only-песочницы. После 20 новых коммитов (surveyRefreshCommits) обход выполняется снова. Установите его в 0, и он будет выполняться только для банка, который никогда не обследовался.

Примечание: Обход запускает отдельного агента для программирования, например headless OpenCode. Эти вызовы идут к модели этого агента, поэтому установка HINDSIGHT_API_LLM_MAX_CONCURRENT в "1" не замедляет их. Когда модель — это self-hosted сервер, который уже отвечает на вашу сессию, обследование становится вторым полным проходом на том же сервере. Установите codebaseSurvey в false, если сервер не выдерживает этой нагрузки.

Следующая сессия начинается с пяти страниц, а не перечитывает каждое сохранённое знание. Каждая страница синтезируется из одного уровня знаний, поэтому читает только те факты, которые экстрактор направил на этот уровень.

Страница На что отвечает Тег
Карта компонентов Основные компоненты, их ответственность и взаимозависимости knowledge:component
Основные концепции Доменные абстракции и лексика, которую должен знать разработчик knowledge:concept
Соглашения и паттерны Как этот проект тестирует, обрабатывает ошибки, именоваться, структурирует код и вносит изменения knowledge:convention
Ключевые решения и обоснования Значимые технические решения и почему проект делает так knowledge:decision
Инициативы и улучшения Крупные инициативы со временем, со ссылками на сохранённые страницы инициатив knowledge:feature-work

Общая минута запустила бы все пять страниц сразу, на том же пуле воркеров, что и сохранение новых воспоминаний, и сессия, инжестирующая данные, ждала бы за этой кучей. Расписание по умолчанию распределяет их. pageTriggerCron — это H * * * *: каждая страница получает свою минуту, хэшированную из id банка и имени страницы, а тик без нового пропускается. Установка pageTriggerType в auto-refresh переписывает страницу после каждой консолидации, которая произвела новый материал. Документация называет это самым актуальным и самым дорогим расписанием — один синтез моделью на страницу за консолидацию. manual оставляет страницу без изменений, пока вы её не обновите.

Встроенная страница, которую вы не хотите обновлять, ставится в false под pages. Копия, уже сохранённая, остаётся, пока вы не удалите её в control plane. source_query заменяет вопрос, который задаёт страница, и плагин всё равно добавляет оговорку, не дающую решениям зависимостей попасть на страницу. Ваша собственная страница указывается под customPages и требует своего source_query. Неизвестное имя под pages игнорируется с предупреждением в plugin.log, поэтому опечатка не создаст вторую пустую страницу. Просьба к агенту захватить инициативу записывает отдельную страницу, по одной на инициативу, через hindsight_capture_initiative.

Удаление банка на сервере очищает память этого репозитория. Следующая сессия скопирует историю git и обойдёт дерево снова. Удаление плагина оставляет банк на месте.

Контроль области видимости и приватности

Открытие репозитория создаёт для него банк, именно так клиентское дерево может сохраниться без вашего запроса. optInOnly ограничивает память директориями, которые вы укажете. Везде elsewhere плагин не создаёт банк, не сохраняет ничего и не копирует историю git, и инструмент для программирования ведёт себя так, будто плагин не установлен.

{
  "optInOnly": true,
  "optInPaths": ["~/prj", "~/oss"]
}

Каждая запись — префикс директории, ~ разворачивается, и каждый репозиторий под ней получает свой банк coding-agent::{gitProject}. Путь в mapPathToBank тоже разрешён, потому что вы уже назвали эту папку. Единичный bankId ничего не разрешает: он называет банк, а не папку, поэтому при включённом optInOnly неназванные директории остаются вне. Плагин не читает конфигурацию из репозитория. Причина в документации: склонированный репозиторий не должен иметь возможности включить память. Какая папка использует какой банк остаётся в mapPathToBank. Какой инструмент включён или выключен остаётся в harnesses. Когда id банка известен, дальнейшие правила для этого одного репозитория указываются в banks:

{
  "banks": {
    "coding-agent::secret-client": { "disabled": true }
  }
}

Команда npx @vectorize-io/hindsight-coding-agents uninstall cursor-cli удаляет хуки Cursor, запись MCP и скилл, добавленные установщиком. Команда uninstall all делает это для каждого настроенного инструмента. Файл, который уже существовал, копируется в .hindsight-backup рядом с ним перед тем, как установщик его отредактирует. Банк, база данных демона и ~/.hindsight/coding-agent.json остаются.

Токен, вставленный в чат, не должен стать воспоминанием. Memory Defense — это сканирование текста на 45 паттернов перед сохранением, и оно остаётся выключенным, пока у банка нет политики. redact заменяет совпадение маркером, например [REDACTED:github_token], и сохраняет остальное. block отбрасывает совпавший элемент и возвращает 422, если совпал каждый элемент в запросе. Политика применяется к последующим сохранениям в этом банке. Уже сохранённые воспоминания остаются без изменений. Эти два действия — это правило sensitive_data с открытым исходным кодом.

Кто имеет право включить сканирование, описано по-разному в двух местах. Пост для enterprise от 03.09.2026 говорит, что базовый сканер включён во всех планах, и что дополнительные детекторы — каталог из 220 и более паттернов, повторное сканирование base64, проверки prompt-injection и LLM-экран — относятся к Enterprise. Сравнение цен помечает Memory Defense как Enterprise-only, при этом ячейки self-hosted и Cloud пусты. Проверьте эту строку на текущей странице с ценами, прежде чем полагаться на Cloud-банк для удаления секретов.

manageBankConfig по умолчанию true, что позволяет плагину записывать настройки банка, необходимые для его инжеста, и любые поля, которые вы указали в defaultBankConfig. Он записывает поле только там, где банк ещё не определил его, поэтому значение, установленное вами в control plane, остаётся. Исключение — режим извлечения в собственных стратегиях плагина: он следует за retainExtractionMode во всех сессиях. retainContext, отправляемый с каждой записью сессии, сообщает извлечению, кто произнёс фразу. По умолчанию указываются оба участника, и требуется, чтобы собственные «fixed» или «passes» агента сохранялись как утверждение агента, а не как факт. Когда вывод сохраняется так, будто кто-то его наблюдал, о путях, питающих следующую сессию, рассказано в статье Самоусиливающиеся петли памяти.

Настройки для повседневной разработки

Каждый инструмент для программирования читает один и тот же файл, ~/.hindsight/coding-agent.json, поэтому лимит, установленный один раз, применяется к OpenCode и к Cursor. HINDSIGHT_CONFIG перемещает этот файл. Она не создаёт второй файл. Для каждой настройки встроенное значение по умолчанию проигрывает переменной окружения (HINDSIGHT_API_URL, HINDSIGHT_API_TOKEN или HINDSIGHT_<FIELD> для других единичных значений), которая проигрывает верху файла, затем harnesses.<name>, затем paths.<prefix>, затем banks.<id>. Значение, записанное в файле, остаётся, когда вы позже установите ту же переменную окружения. retainTags и optInPaths могут быть переменной, разделённой запятыми. mapPathToBank, harnesses, paths, banks, retainMetadata и recallOptions читаются только из файла.

Когда сессия медленная, дорогая или помнит неправильный репозиторий, изменение вносится в одно из этих полей. Значения по умолчанию взяты из справочника coding-agents.

Поле По умолчанию Когда менять
serverMode cloud daemon для локального банка, self-hosted для вашего сервера
autoInject "reflect" "pages" или "recall" пропускают синтез в начале сессии. "none" ничего не вставляет; агент ищет страницы и делает reflect, когда они слишком поверхностны
reflectTimeoutMs 20000 Автоматический reflect сессии. На инструментах с хуками установщик задаёт таймаут prompt-hook 30 секунд, поэтому значение более 20 секунд требует увеличения timeout этого хука
reflectBudget "high" Бюджет для инструмента hindsight_reflect, вызываемого агентом. Автоматический reflect сессии всегда использует "low" и игнорирует это
recallOptions наблюдения, низкий бюджет, max_tokens 2000 Слияние по ключам. В банке с отключённой консолидацией не растут наблюдения, и recall по умолчанию возвращается пустым — задайте "types": ["world", "experience"] там
retainExtractionMode "concise" "verbose" извлекает больше деталей. Справочник говорит, что это стоит в несколько раз больше токенов, потому что каждый Stop записывает сессию обратно. "chunks" сохраняет текст без извлечения
retainTags / retainMetadata не задано В общем банке ставьте project:{gitProject}, чтобы recall мог фильтровать. Id банка уже отвечает на «какой репозиторий», когда у каждого репозитория свой банк
bankIdTemplate coding-agent::{gitProject} {harness}::{gitProject} разделяет агентов. mapPathToBank направляет дерево директорий в один именованный банк
codebaseSurvey true false, когда обследование и ваша сессия разделяют одну self-hosted модель. surveyBudgetUsd (по умолчанию 2) ограничивает только рецепт Claude
pageTriggerType "cron" "auto-refresh" следует за каждой консолидацией. "manual" оставляет страницы там, где они есть
maxParallelRetains 10 Уменьшите, если API возвращает 429. Справочник говорит, что API лимитирует всплески

Локальный демон, который помнит только репозитории под ~/prj, сохраняет сообщения коммитов, оставляет обследование репозитория выключенным и просит новые банки маскировать секреты, выглядит так:

{
  "serverMode": "daemon",
  "optInOnly": true,
  "optInPaths": ["~/prj"],
  "gitIngest": "message",
  // codebaseSurvey запускает другого агента. HINDSIGHT_API_LLM_MAX_CONCURRENT не ограничивает его.
  "codebaseSurvey": false,
  "retainExtractionMode": "concise",
  "autoInject": "reflect",
  "defaultBankConfig": {
    "memory_defense": {
      "enabled": true,
      "rules": [{ "on": "sensitive_data", "action": "redact" }]
    }
  }
}

defaultBankConfig заполняет memory_defense только для банка, у которого его ещё нет, и ничего не делает, если manageBankConfig равно false. Команда hindsight_diagnose показывает файл в его текущем виде и значения, которые фактически загрузил работающий клиент.

Сколько это стоит и когда достаточно файла

Сессия может тратить три вещи при старте: reflect с низким бюджетом на первом промпте, копию недавних сообщений коммитов, ограниченную seedLimit, и обход дерева. Если retainSessions оставлен включённым, транскрипт сохраняется по мере хода сессии. Пять страниц обновляются в своей минуте часа, когда что-то изменилось. Установка gitIngest в "full" сохраняет диффы вместе с сообщениями.

FAQ о ценах Vectorize перечисляет тарифы Cloud без фиксированной ежемесячной платы и без цены за пользователя. FAQ говорит, что новые аккаунты получают бесплатные кредиты, и не публикует их количество.

Операция Цена
Retain $10.00 за миллион токенов
Recall $0.75 за миллион токенов
Reflect $0.05 за вызов
Iris Extract $7.50 за миллион токенов
Mental Model Retrieve $0.25 за миллион токенов
Mental Model Refresh $0.05 за вызов
Хранение после 30 дней $0.25 за миллион токенов в месяц

Воспоминания бесплатно хранятся первые 30 дней. Обзор Cloud говорит, что создание или обновление страниц знаний тарифицируется за вызов, а FAQ не публикует отдельную строку для страниц знаний. Демон или self-hosted сервер не несёт этих облачных расходов. Извлечение всё равно тратит столько, сколько стоит LLM демона, включая облачный API-ключ, если это тот ключ, который нашёл install.

Та же страница документации сообщает о запуске AMB sdebench: 61 задача в репозитории, три запуска каждая, с памятью и без. Каждый раз решалось 60–61 из 61 задач в обоих случаях. Что меняется — это исправления на задачу и стоимость на задачу. Страница говорит, что цифры исправлений воспроизводят метки, которые AMB печатает на своём графике, и что стоимость выведена из той же таблицы по запускам.

Агент Исправлений на задачу Стоимость на задачу
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

Левая цифра — без памяти. Эти три агента — вся таблица, которую печатает страница.

Правило, которое вы хотите рассмотреть вместе с кодом, должно быть в AGENTS.md или CLAUDE.md. Этот файл в репозитории, когда демон down, и сохранение его не сохраняет чат. Банк несёт решение, которое так и не было записано там и которое следующая сессия продолжает делать неправильно. В Hermes локальное SQLite-хранилище со своими переключателями retention — это Mnemosyne.

Источники

  • Coding Agents — цели установки, поля coding-agent.json, именование банков, страницы знаний, режим демона и таблица sdebench. Пакет npm @vectorize-io/hindsight-coding-agents 0.8.4, опубликован 30.10.2026.
  • Цены — тарифы облачных операций, заявление о бесплатности self-hosting и строка в матрице планов для Memory Defense.
  • Memory Defense — политика sensitive_data на каждый банк, redact и block, 45 паттернов, выключено, пока не задана политика банка. Существующие воспоминания не сканируются.
  • Функции Enterprise, 03.09.2026 — базовый сканер описан как доступный во всех планах; дополнительные детекторы описаны как Enterprise.

Подписаться

Получайте новые материалы про системы, инфраструктуру и AI engineering.