SSD Nodes Learn 8GB RAM — $66/рік
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-08-01

Recall: пам’ять для Claude Code на VPS

Дізнайтеся, як налаштувати Recall 0.4.0 на VPS: локальний плагін зберігає сеанси Claude Code у Markdown без API-токенів і мережевих викликів.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

Як Recall працює з пам’яттю Claude Code

Recall — це плагін Claude Code, який зберігає пам’ять кожного проєкту між сеансами. Він записує два файли Markdown у папку .recall/ всередині проєкту: журнал, доступний лише для додавання, із записами про виконані дії та короткий підсумок поточного стану. Обидва файли створюються локальним Python-сумаризатором на машині, на якій ви працюєте. Тому сама пам’ять не використовує токени API.

Recall усуває невелику, але постійну проблему. У вівторок ви завершуєте сеанс на VPS. У середу Claude Code нічого не знає про події вівторка. Ви повторно пояснюєте проєкт вручну або дозволяєте моделі знову прочитати половину репозиторію, щоб відновити контекст. Обидва варіанти використовують токени, а другий — значну їх кількість.

Станом на July 2026 актуальною є версія Recall 0.4.0. Проєкт поширюється за ліцензією MIT. Це плагін. Він не виконує мережевих викликів.

Що потрібно на VPS

Перехоплювачі Recall — це скрипти Python, які постачаються разом із плагіном. Сторонніх залежностей немає, тому фактично потрібен лише інтерпретатор.

python3 -V

Ubuntu 24.04 відповідає Python 3.12.3. Recall підтримує Python 3.9 і новіші версії. Мінімальні образи контейнерів іноді взагалі не містять інтерпретатора. У такому разі оболонка відповідає python3: command not found. Установіть інтерпретатор, перш ніж продовжувати.

sudo apt update && sudo apt install -y python3

NumPy — необов’язковий прискорювач для одного кроку роботи сумаризатора. Він вам не потрібен.

python3 -c "import numpy"

ModuleNotFoundError: No module named 'numpy' — прийнятна відповідь у цьому випадку. Сумаризатор має шлях на чистому Python, а набір тестів проєкту перевіряє, що обидва шляхи вибирають однакові речення.

Пам’ять сеансу важливіша на сервері, ніж на ноутбуці, оскільки робота на сервері надходить під час коротких візитів, розподілених протягом кількох днів. Якщо ви вже запускаєте Claude Code у tmux на VPS, Recall переносить учорашній сеанс у сьогоднішній.

Встановлення Recall із marketplace плагінів

Дві команди, введені в сеанс Claude Code:

/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall

Друга команда читає plugin@marketplace. Обидві назви тут мають вигляд recall, що схоже на помилку під час копіювання та вставлення, але це не помилка.

Перевірте встановлення, виконавши одну з власних команд плагіна:

/recall:show

/recall:show виводить поточний підсумок. У щойно створеному проєкті ще немає даних для виведення, тому фактично перевіряється наявність самої команди. Якщо Claude Code не розпізнає /recall:show, плагін не завантажено, і жоден hook не спрацює.

Щоб запускати плагін із локальної копії, клонуйте репозиторій і спочатку перевірте його:

git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .

claude plugin validate . читає маніфест у .claude-plugin/ і повідомляє, чи правильно сформовано плагін. Потім запустіть Claude Code з каталогу проєкту за допомогою claude --plugin-dir ~/recall.

Що записують hooks і коли

Recall реєструє три hooks для Claude Code. Кожен із них запускає скрипт Python із каталогу plugin.

  • SessionStart спрацьовує під час запуску, відновлення та очищення. Він показує context.md, щоб під час відкриття сеансу перед вами був ваш підсумок.
  • Stop спрацьовує щоразу після завершення відповіді Claude. Він додає цей хід до log.
  • SessionEnd спрацьовує під час завершення сеансу та може повторно створити підсумок.

У результаті створюються два файли, обидва в .recall/.

  • history.md — це журнал лише для додавання: запити, відповіді, змінені файли та виконані команди.
  • context.md — це згенерований дайджест: мета, підсумок, наступні кроки, змінені файли, виконані команди та контекст git.

Після одного реального сеансу перегляньте каталог.

ls -la .recall/

Ви повинні побачити history.md із вмістом. context.md може бути відсутнім. Це стандартна поведінка, а не помилка. auto_save_context має значення off, якщо його не встановити, тому підсумок записується лише за вашим запитом:

/recall:save

Ця команда запускає локальний summarizer для history.md і перезаписує context.md. Алгоритм використовує оцінювання TF-IDF (частота термінів, обернена частота документа), а потім ранжування речень за TextRank. Він детермінований і екстрактивний, тобто вибирає речення, які вже є у вашому log. Модель не викликається, тому цей етап безкоштовний і працює на машині в автономному режимі.

Налаштування Recall для одного проєкту

Конфігурація зберігається у файлі recall.config.json у корені проєкту. Це стандартні параметри:

{
  "output_dir": ".recall",
  "capture_history": true,
  "summary_sentences": 8,
  "redact": true,
  "include_git": true,
  "max_input_chars": 200000
}
  • output_dir визначає розташування двох файлів. Зберігайте їх у проєкті.
  • capture_history вмикає та вимикає журнал history.md.
  • auto_save_context приймає off або on_end. Значення за замовчуванням — off.
  • summary_sentences визначає, скільки речень зберігається у context.md. Більше значення збільшує обсяг підсумку та дещо підвищує навантаження під час запуску сеансу.
  • redact видаляє поширені шаблони секретів до запису будь-яких даних на диск.
  • include_git додає до підсумку поточний diff і нещодавні коміти.
  • max_input_chars обмежує обсяг history.md, який сумаризатор читає за один прохід.

Для проєкту на VPS корисно ввімкнути автоматичне збереження, оскільки сеанс на сервері часто завершується через закриття термінала, а не тоді, коли ви вирішуєте його зупинити.

{
  "auto_save_context": "on_end",
  "summary_sentences": 12
}

Щоб тимчасово зупинити запис без зміни конфігурації, створіть маркер паузи. Видаліть його, щоб знову почати запис.

touch .recall/.capture-paused

Зробіть це перед сеансом, під час якого ви працюватимете з обліковими даними production, оскільки редагування — це лише фільтр, а не гарантія. Та сама причина лежить в основі зберігання секретів поза межами AI-агентів загалом: безпечний секрет — це той, якого агент ніколи не бачить.

Скільки токенів заощаджує Recall?

Це залежить від альтернативи. Завантаження підсумку на початку сеансу потребує мало токенів. Альтернатива може бути дорогою, оскільки модель без пам’яті про ваш проєкт повторно вивчає його, читаючи файли.

ChartTypical cost of resuming work, per session
The data behind this chart
[
  {
    "label": "Recall context.md",
    "char_count": "4,800",
    "est_tokens": "1,200"
  },
  {
    "label": "Hand-written CLAUDE.md",
    "char_count": "3,200",
    "est_tokens": "800"
  },
  {
    "label": "Re-reading the repo",
    "char_count": "120,000",
    "est_tokens": "30,000"
  },
  {
    "label": "Full transcript replay",
    "char_count": "340,000",
    "est_tokens": "85,000"
  }
]

Це типові показники для проєкту середнього розміру, а не вимірювання для вашого проєкту. Підсумок Recall завантажується приблизно на 1,200 токенів. Це відповідає опублікованій оцінці проєкту — від однієї до двох тисяч токенів для відновлення роботи. Повторне відтворення повної попередньої розмови завантажує весь діалог — близько 85,000 токенів. Якщо модель повторно вивчає проєкт, читаючи файли, результат займає проміжне положення — приблизно 30,000 токенів. Це число зростає разом із розміром репозиторію. Рядок CLAUDE.md наведено для порівняння: він потребує менше токенів, оскільки є коротким і статичним, та повідомляє моделі ваші постійні правила, а не те, що відбулося під час попереднього сеансу.

Виміряйте власні показники. Один токен — це приблизно чотири символи англомовного прозового тексту й трохи менше для коду.

wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))

У межах сеансу /context показує, що зараз завантажено у вікно контексту, а /cost повідомляє підсумкові показники сеансу. Запустіть один сеанс без попереднього контексту, а наступний — із готовим підсумком, і порівняйте результати. Повний розподіл використання токенів у сеансі наведено в матеріалі як Claude Code витрачає токени.

Є одне застереження. Підсумок завантажується на початку кожного сеансу, тому підсумок, який ви не використовуєте, є невеликими додатковими витратами, а не заощадженням. Залишайте summary_sentences близько до значення за замовчуванням, якщо ваші сеанси не є тривалими.

Перебудувати підсумок без сеансу

Якщо ви клонували репозиторій, засіб створення підсумків має власну точку входу командного рядка. Це корисно на VPS, якщо сеанс завершився разом із терміналом, але підсумок все одно потрібно отримати.

python3 ~/recall/scripts/make_context.py --help

У довідці перелічено підтримувані прапорці: --cwd для кореневого каталогу проєкту, --transcript для явного файлу стенограми, --quiet для вимкнення виводу та --harness для вибору між claude і opencode. Передайте йому шлях до проєкту:

python3 ~/recall/scripts/make_context.py --cwd /srv/projects/api

Засіб читає стенограму сеансу та history.md, а потім записує context.md у вказаний вами каталог. Якщо ви встановили плагін через marketplace, він зберігається в каталозі, яким керує Claude Code, а /recall:save є підтримуваним способом виконати те саме завдання.

Чому нічого не записується

Після повного сеансу немає каталогу .recall/. Хуки не запускалися. Виконайте /recall:show, щоб перевірити, чи завантажено плагін, а потім виконайте python3 -V. Команда хука спочатку намагається використати python3, а потім python, тому система, у якій немає жодного з них, нічого не записує і не повідомляє про це.

history.md збільшується, але context.md не змінюється. Типове значення auto_save_contextoff. Виконайте /recall:save або встановіть для ключа значення on_end і дозвольте хуку SessionEnd виконати цю дію.

Файли з’являються в іншому проєкті. Claude Code записує дані за відносним шляхом від каталогу, з якого його запущено. Тому запуск сеансу з домашнього каталогу зберігає пам’ять там. Запускайте сеанс із кореня проєкту та використовуйте ls -la .recall/, щоб знайти фактичне розташування файлів.

Збирання даних припинилося, але система не показала попередження. Перевірте наявність маркера паузи за допомогою ls -a .recall/. Файл .capture-paused, створений вами минулого тижня, і далі виконує свою функцію.

Після тривалого сеансу підсумок надто короткий. max_input_chars обмежує вхідні дані для підсумовувача 200000 символами, тому дуже довгий журнал обрізається. Виконайте його ротацію.

mv .recall/history.md .recall/history-2026-07-30.md

Після цього виконайте один короткий сеанс і знову перевірте ls -la .recall/, щоб підтвердити появу нового history.md.

Де Recall припиняє працювати

Recall — це журнал і засіб створення стислих підсумків. Важливо чітко розуміти, чого він не робить.

Засіб створення підсумків працює методом екстракції. TextRank вибирає речення, які вже є у history.md, тому не визначає, чи було рішення правильним. Неправильний крок, записаний у вівторок, виглядає так само, як правильне рішення, записане в середу. Якщо наслідки важливі, прочитайте context.md і виправте його вручну. Це markdown-файл, тому ніщо не заважає редагувати його.

Пошуку немає. Для кожного проєкту ви отримуєте один поточний підсумок і один журнал, що постійно доповнюється, а не пам’ять із запитами між проєктами. Якщо потрібно дізнатися, що ви вирішили щодо бази даних три тижні тому, виконайте пошук у history.md за допомогою grep.

Це не допомагає в межах сеансу. Заповнення контекстного вікна під час сеансу — інша проблема, яка має інші способи розв’язання. Їй присвячено супутній матеріал керування контекстним вікном у межах одного сеансу.

За задумом підсумок розглядається як ненадійний вхід. context.md вставляється в екранований блок із позначкою, а Claude запитує підтвердження перед використанням цього вмісту. Такий підхід потрібен тому, що каталог .recall/ у репозиторії з комітами — це місце, де будь-хто з доступом на внесення змін може записати текст, який прочитає ваш агент. Один раз визначте, чи є .recall/ особистим або спільним: додайте його до .gitignore для особистої пам’яті або зафіксуйте в репозиторії та перевіряйте його як будь-який інший внесок. Якщо агент працює без нагляду, матеріал безпечний запуск Claude Code на VPS охоплює ширші межі безпеки.

Редагування конфіденційних даних виконується за принципом найкращих зусиль. Воно виявляє поширені шаблони, зокрема ключі API, токени, блоки PEM і присвоєння .env. Прочитайте .recall/ перед фіксацією змін у репозиторії.

Номер версії чесно відображає рівень зрілості. У версії 0.4.0 за July 2026 ключі конфігурації та структура файлів ще можуть змінюватися між випусками, тому перед оновленням залежної від цього конфігурації прочитайте журнал змін.

FAQ

Чи надсилає Recall мій код або транскрипції кудись?

Ні. Хуки захоплення та засіб створення резюме є скриптами Python, які виконуються на вашій машині. Плагін не містить ключа API і не виконує мережевих викликів. Для створення резюме використовуються TF-IDF і TextRank, а не модель, тому цей етап нічого не коштує та працює в автономному режимі. Недолік полягає в тому, що резюме є екстрактивним: воно вибирає речення з вашого журналу, а не створює нові.

Чому мій .recall/context.md відсутній або застарілий?

auto_save_context за замовчуванням має значення off, тому резюме генерується повторно лише після запуску /recall:save. Установіть "auto_save_context": "on_end" у recall.config.json, щоб переписувати його після завершення кожного сеансу. Якщо history.md також відсутній, хуки взагалі не виконуються: перевірте, чи завантажено плагін, за допомогою /recall:show, а потім перевірте, чи повертає python3 -V відповідь на цьому сервері, оскільки хуки є скриптами Python.

Скільки Recall заощаджує за сеанс?

Завантаження резюме коштує приблизно 1,200 токенів, тоді як типовий обсяг становить 30,000 токенів для моделі, якій потрібно знову прочитати ваш репозиторій, щоб визначити поточний стан. Це типові значення. Виміряйте власні показники за допомогою wc -c .recall/context.md і команди /context у сеансі, порівнявши холодний запуск із запуском, який відновлюється з резюме.

Чи все ще потрібен файл CLAUDE.md?

Так, ці два файли виконують різні завдання. CLAUDE.md — це те, що ви навмисно записуєте: постійні правила та команди збирання. context.md генерується на основі того, що фактично відбулося під час попереднього сеансу, тому містить незавершену міграцію, про яку ви ніколи не здогадалися б записати. Зберігайте обидва файли.

Чи може один VPS зберігати пам’ять для кількох проектів?

Так. Recall зберігає пам’ять у .recall/ в межах кожного каталогу проекту, тому два проекти на одному сервері мають окремі журнали та окремі резюме. Завжди запускайте Claude Code з кореневого каталогу проекту, оскільки файли прив’язані до робочого каталогу, а не до облікового запису користувача.