OpenCode: контекст - не вся переписка. Как продолжить задачу

Опубликовано 09.11.20267 мин чтенияСредний
Артемий Миллер в кепке с логотипом OpenCode рядом с надписью «КОНТЕКСТ НЕ ВСЯ ПЕРЕПИСКА» и логотипами OpenCode.
Что узнаешь
  • Как сохранить сделанное и оставшееся в файле задачи
  • Когда использовать /compact, а когда открыть новую сессию
  • Как проверить продолжение до новых правок
Средний
2просмотров

Чтобы продолжить задачу в OpenCode без всей переписки, сохраните в файле, где остановились, что сделано и что осталось. Затем сожмите сессию через /compact или откройте новую через /new и добавьте файл через @. До следующих правок проверьте, что агент понял, откуда продолжать.

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

Чем история сессии отличается от контекста и файла задачи

Вернуться к разговору, добавить файл и передать правила проекта - разные действия.

Что этоДля чегоЧего не заменяет
История сессииВернуться к разговору, выбрать его из списка, экспортироватьКороткой актуальной записи о состоянии задачи
Контекст очередного запросаДать модели сведения для текущего действия; выбранный через @ файл добавляется в беседуАрхива всех разговоров
AGENTS.mdПередать постоянные инструкции проектаЗаписи о том, где остановилась текущая работа
Файл состояния задачиСохранить цель, решения, сделанное и оставшеесяИстории разговора и автоматической памяти

Плагин DCP перед отправкой модели заменяет удаляемое содержимое заполнителями. История сессии при этом остаётся прежней. Это описание DCP, не встроенного /compact - команды сжатия сеанса.

Агент должен читать только то, что ему нужно для задачи, которую вы ему поставили.

Context7 даёт документацию библиотек и примеры кода. Где вы остановились в своей задаче, записывайте отдельно.

Подключение MCP в OpenCode разобрано в отдельной статье.

Обсудить, как вы передаёте задачу между чатами, можно в канале:

Что записать в файл: где остановился, что сделано, что осталось

Агент обязан обновлять план после каждой сессии: отмечать сделанное, дописывать, что изменилось. Для Claude Code я формулирую это так: новый чат Клода не помнит, что было сделано в предыдущем, план помнит всегда.

В OpenCode сохраняйте состояние задачи в обычный файл в папке проекта. Здесь назовём его TASK.md - это выбранное имя, не обязательный файл OpenCode.

Перед сжатием или переходом дайте агенту запрос:

Обнови TASK.md: цель; ограничения и принятые решения; изменённые файлы; выполненные и невыполненные проверки с результатами; открытые вопросы; следующее действие. Не выдавай запланированное за сделанное. Не меняй остальные файлы.

Допустим, вы переделываете обработку CSV. Вот как может выглядеть запись:

markdown
## Состояние задачи
Цель: переделать обработку CSV и проверить, что она работает как раньше.
Ограничения и решения: не менять внешний формат результата;
отделить основную обработку от запуска программы.
Изменённые файлы: начата правка data_processor.py;
связанные файлы пока не трогали.
Результаты проверок: ещё не запускались, успешность не подтверждена.
Открытые вопросы: сохраняется ли прежнее поведение на пустом входном файле?
Следующее действие: посмотреть изменения data_processor.py,
затем выполнить подходящую проверку проекта.

Прочитайте TASK.md сами. Сверьте список файлов с реальными изменениями, результаты проверок - с их выводом. Если проверку только собирались запустить, так и запишите. Неизвестный результат оставьте открытым вопросом.

Как продолжить: сжать эту сессию или открыть новую

Работайте в папке проекта с обновлённым TASK.md. Через /compact продолжайте в той же сессии; через /new передавайте сохранённое состояние новому диалогу.

Если OpenCode ещё не установлен, начните с инструкции по установке и подключению модели.

Продолжить здесь через /compact

  1. Обновите и проверьте TASK.md: что изменено, что проверено, что осталось. После этого запись сохранена в файле, за пределами переписки.
  2. Введите /compact в интерфейсе OpenCode. Команда сжимает текущий сеанс. /summarize - её другое имя.
  3. После сжатия отправьте проверочный запрос:

Прочитай TASK.md. До новых правок назови цель, затронутые файлы, что уже проверено и следующий шаг. Если не хватает сведений - спроси. Не повторяй завершённую работу.

Сверьте ответ с записью. Если агент что-то пропустил, добавьте нужный файл через @ и повторите запрос.

Продолжить в новой сессии через /new

  1. Убедитесь, что TASK.md сохранён в папке проекта и содержит последние изменения и нерешённые вопросы.
  2. Введите /new в интерфейсе OpenCode. Откроется новый сеанс. /clear - другое имя той же команды, не удаление файлов проекта.
  3. В новом сообщении наберите @TASK.md и выберите файл в поиске по текущему рабочему каталогу. Его содержимое добавится в беседу. Отправьте тот же проверочный запрос, что после /compact.
  4. Сравните ответ с записью и проектом. Когда цель, файлы, проверки и следующий шаг совпали, поручайте следующее действие.

Помимо добавленного файла, в контекст включаются постоянные инструкции проекта.

Одна сессия, одна задача. Ошибки чините в том же чате: у агента уже есть контекст этой работы.

Если нужно вернуться в старый разговор

В интерфейсе введите /sessions и выберите сессию. /resume и /continue - другие имена этой команды.

В терминале opencode --continue продолжает последнюю сессию. Чтобы выбрать другую, выполните opencode session list, затем opencode --session SESSION_ID, заменив SESSION_ID идентификатором из списка. Вы вернётесь в сохранённый разговор, а не начнёте новый с короткой записью задачи.

/export экспортирует разговор в Markdown и открывает редактор из EDITOR. В терминале opencode export [sessionID] экспортирует данные в JSON, opencode import <file> импортирует JSON. Полный экспорт разговора не заменяет краткую запись: где остановились и что дальше.

Как проверить, что агент продолжает задачу без повторной работы

Когда заканчиваете задачу, просите краткое резюме на русском: как было и как стало, какую проблему решали и решили ли её. При передаче незаконченной работы проверьте, что агент отличает сделанное от того, что ещё предстоит.

КритерийС чем сравнитьЧто исправить при расхождении
Цель понята верноЦель и ограничения в TASK.mdУточнить потерянное ограничение
Названы нужные файлыЗапись и реальные изменения проектаДобавить отсутствующий файл через @
Выполненные проверки отделены от невыполненныхСохранённые результаты проверокИсправить статус; «всё прошло» без вывода не принимать
Следующий шаг не повторяет сделанноеОтметки сделанного и оставшегосяУказать незавершённое действие

Чтобы сравнить /compact и /new, возьмите одну незавершённую задачу и сохраните исходный TASK.md. В обоих продолжениях используйте одинаковый проверочный запрос. Сохраните ответы до новых правок: не давайте агенту в первом варианте менять проект до оценки второго.

Если ответы расходятся с проектом, остановите правки. Исправьте конкретный пункт записи или добавьте недостающий файл через @, затем повторите запрос. Весь проект на всякий случай прикладывать не нужно.

После сверки поручите следующий шаг. В примере с CSV - посмотреть изменения data_processor.py и проверить проект. После действия снова обновите запись.

Если вы собираете свои проекты с ИИ-агентами, посмотрите программу практикума СмыслоКода.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - инструменты, метод, первый проект
Старт 17–19 ноября  ·  2 000 ₽
Записаться →

Что оставить в AGENTS.md, а что - только в записи задачи

В AGENTS.md держите постоянные правила проекта: как менять файлы, какие проверки выполнять, каким должен быть результат. В TASK.md - текущие изменения, оставшиеся вопросы и действие, с которого продолжать.

Как написать постоянные инструкции, разобрано в отдельной статье.

Проектный AGENTS.md действует в своём каталоге и подкаталогах. Глобальный файл ~/.config/opencode/AGENTS.md - во всех сеансах. Договорённости конкретного проекта записывайте в проектный файл. Его можно написать вручную или создать командой /init.

Если в AGENTS.md написано имя TASK.md, это ещё не значит, что запись прочитана. Ссылки на внешние файлы автоматически не разбираются. Для продолжения явно добавьте файл через @.

Для подключения постоянных инструкций из файлов есть поле instructions в настройках OpenCode. Запись текущей задачи добавляйте, когда продолжаете именно её.

Как сократить расход токенов и что будет со счётом

Продолжать, продолжать, продолжать один диалог - значит снова передавать накопленные рассуждения и промежуточные решения. В новый чат передавайте проверенные решения и оставшуюся работу в файле, не всю эту переписку. Так мы экономим на токенах.

Но счёт зависит от модели, тарифа и кеша. Разработчик DCP предупреждает: очистка меняет сообщения, и начало запроса может перестать совпадать с кешированным. Промахов кеша может стать больше. Это оговорка о DCP, не замер экономии встроенного /compact.

У OpenCode есть настройки сжатия: compaction.auto включает автоматическое сжатие, compaction.prune удаляет старые результаты инструментов, compaction.reserved задаёт запас токенов на сжатие. Для передачи задачи через файл менять эти настройки не требуется.

limit.context - максимальное количество входных токенов модели, limit.output - максимальное количество генерируемых. Предел зависит от выбранной модели: произвольное число в настройке само по себе её окно не расширяет. Запас на сжатие в compaction.reserved - не размер этого окна.

Команда opencode stats показывает использование токенов и затраты по сеансам. Для сравнения берите одну исходную задачу и одинаковые условия. А продолжение проверяйте по записи: где остановились, что сделано, что осталось и какой следующий шаг.

А вы после сжатия или перехода в новый диалог проверяете, что агент помнит о сделанном и оставшемся? Расскажите в комментариях в канале, где у вас сбивается продолжение.

Частые вопросы

Источники

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - инструменты, метод, первый проект
Старт 17–19 ноября  ·  2 000 ₽
Записаться →

Новые материалы - дайджестом, без спама

Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

Была инструкция полезна?
Артемий Миллер
Автор
Артемий Миллер
Предприниматель и вайб-кодер

Артемий Миллер - предприниматель и вайб-кодер. Бывший программист, собирает продукты исключительно вместе с ИИ-агентами, без найма разработчиков.

Связанные инструкции

Figma MCP: передай макет и проверь цвета, шрифты, отступы

Figma MCP передаёт агенту компоненты, переменные и структуру макета. Дайте ссылку на нужный фрейм, укажите правила проекта и проверьте реализацию по коду и виду страницы.

10 мин

Claude Code 2.1.304: возврат к старому диалогу съедает 5-часовой лимит

В Claude Code 2.1.304 на Pro и Max появилось предупреждение: возврат к давно брошенному диалогу может забрать заметную долю 5-часового лимита. Выбирайте новый диалог и назовите в нём задачу или файл плана, Claude найдёт прошлый сам.

4 мин

Idle compaction в Claude Code: диалог сжимается сам, пока вы отошли

С версии 2.1.299 Claude Code сам сжимает диалог от 200K токенов, если вы отошли примерно на 54 минуты: сжатие успевает до конца часового кэша промпта. Порог меняет переменная CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS, выключает строка "idleCompaction": false в settings.json.

4 мин

Higgsfield MCP в Claude Code: даёшь задачу, получаешь видео

Higgsfield подключается к Claude Code командой claude mcp add с адресом mcp.higgsfield.ai/mcp и входом в аккаунт через браузер. Дальше агент сам генерирует картинки и ролики по задаче словами, а вы платите кредитами Higgsfield за генерации и лимитами Claude Code за сервер в контексте.

6 мин