mandrock-files / ai

Щоб після агента лишалася робота

Навіщо агенту checkpoint, як повернути незавершену роботу й чому перевіряти restore потрібно до втрати оригіналу. Механіка, шість схем і чесні межі MVP.

Щоб після агента лишалася робота

Нова сесія з агентом часто починається з повторної роботи людини: пояснити задачу, відновити домовленості, знайти напівготовий результат. Якщо старе середовище вже зникло, одного «продовжуй» замало.

Checkpoint потрібен, щоб наступний агент отримав виконану частину роботи й точку продовження одним пакетом. agent-recovery уже перевіряє цю механіку на синтетичному агенті; adapter для справжніх сесій Codex/Claude ще потрібен.

Після втрати робочого середовища Без checkpointІз checkpointЗбирати контексті прогрес зновуСтан + артефакт+ наступний крок
Рис. 1. Наступному агенту потрібен стан роботи, а людині — вихід із професії папуги. Перевірено на synthetic adapter.

Як це працює

Перший adapter віддає чотири файли: пам’ять, інструкції, поточну задачу й артефакт. Його writer зупинений під час export, щоб позначка прогресу не роз’їхалася з результатом. Довільне копіювання живих файлів цієї гарантії не дає.

CLI додає manifest із версією формату, ID, часом, описом runtime, розмірами й hashes файлів. Поки запис і перевірка не завершились, пакет недоступний як придатний checkpoint.

Запис: коли пакет стає придатним WriterзупиненийПакеттимчасовийCheckpointперевірений→→
Рис. 2. Або весь checkpoint, або ще не checkpoint. Половина валізи — поганий багаж.

Restore перевіряє пакет до створення робочої теки. Пошкоджені файли, небезпечні шляхи, symlinks і hardlinks відхиляються. Наявна ціль не перезаписується навіть тоді, коли вона порожня.

Команди або інструкції з пакета під час restore не виконуються. Це дозволяє перевірити й розпакувати стан окремо від рішення продовжити роботу.

Restore не запускає агента Checkpointлише дані→Новий workspaceперевіреноResumeокрема явна дія
Рис. 3. Розпакувати валізу й виконати записку з неї — дві окремі дії. Restore робить тільки першу.

Що вже перевірено

У тесті агент рахує суму квадратів від 1 до 5. Після двох кроків записується checkpoint, проходить ZIP export/import, а початкова тека видаляється. У новому workspace adapter перевіряє попередній стан і завершує обчислення.

Фактичний результат synthetic drill До втрати5[1, 4]→Після restore55[1, 4, 9, 16, 25]Старий workspace видалено
Рис. 4. Це deterministic fixture. Відновлення сесії Codex або Claude цей тест не доводить.

Пройшли 17 тестів, зокрема пошкодження payload, відсутній файл, незавершений checkpoint, вихід через посилання й спроба перезапису цілі. Namespace isolation запустити не вдалося: доказ обмежений незалежністю від видалених вихідних файлів.

Секрети мають лишатися за межами export. Allowlist не знайде токен, вписаний у дозволений файл. Hashes підтверджують відповідність manifest, але не довіру до його автора. Передумова цієї версії — довірені батьківські теки без ворожих паралельних змін.

Які обіцянки вже мають доказ Synthetic станперевіреноСередовище й вагине упакованіВтрата VPSне перевірено
Рис. 5. Копія коду є в private GitHub repo. Off-host roundtrip checkpoints ще не виконаний.

Як спробувати — і навіщо стільки перевірок

Потрібні Python 3.12, Linux/glibc і доступ до private repo. Сторонніх Python packages немає. Команда drill сама створить fixture, збереже стан, видалить джерело й перевірить продовження; платний API чи живі credentials їй не потрібні.

gh repo clone 0mandrock1/agent-recovery
cd agent-recovery
python3 recovery.py drill

Для окремих операцій є --help і RUNBOOK.md. Реального агента можна підключати через документовані export/resume interfaces, після чого повторити сценарій втрати. Звичайній передачі нотатки між двома сесіями вистачить handoff.

Навіщо кожне ускладнення Атомарний запис↳ не видати обірвану копію за готовуПеревірка перед restore↳ не пошкодити нове середовищеDrill без джерела↳ знайти нестачу до справжньої втрати
Рис. 6. Backup потрібен тоді, коли оригіналу вже немає. Перевірку варто пережити раніше.

Заради цього й заморочка: помилку запису ще можна повторити, а невдале відновлення після втрати єдиної копії виправляти вже ні з чого. Користь вимірюється роботою, яку вдалося продовжити, — сам лічильник checkpoints цього не показує.

P.S. «Я безсмертний» можна записати в пам’ять агента. Restore drill попросить показати файл.