Перейти к содержимому
Прогресс курса
0 из 8 модулей

Модуль 6

Грабли, токены, безопасность

Шесть повторяющихся проблем из практики команд и приём на каждую: сессии и контекст, счёт за reasoning, MCP-зоопарк, секреты в .env, непрочитанные диффы.

15 мин

Чему научишься

  • разобрать шесть типовых проблем в формате «симптом → приём»
  • применить /new, /compact, @файл и F2 к своим сессиям
  • закрыть .env правилами permissions
  • отклонять сомнительные правки до выбора always

Команды, которые работают с агентами по несколько месяцев, наступают на одни и те же грабли. Внутренний опрос таких команд дал шесть повторяющихся проблем: разросшиеся сессии, устаревший AGENTS.md, счёт за reasoning, MCP-зоопарк, секреты в контексте, правки, применённые без чтения.

Каждую проблему разбираем парой «симптом → приём». По симптому узнаёшь ситуацию у себя, приём применяешь в текущей сессии orders-api. Начни с честного ответа: сколько задач уже побывало в твоей рабочей сессии.

Сессия тормозит и дорожает

Симптом: сессия живёт второй день, в ней побывали баг отрицательного количества из модуля 2, скидки из модуля 5 и половина README. Каждый новый вопрос уносит всю историю в запрос: ответы замедляются, счёт растёт, агент смешивает условия разных задач.

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

Команды для сессийTUI: сессии и хоткеи
/new      # новая сессия под новую задачу
/compact  # сжать историю текущей сессии до выжимки
# Ctrl+O: список недавних сессий

Агент не видит новый файл

Симптом: ты добавил src/services/payments.ts, просишь дописать к нему тест, а агент правит старый модуль или спрашивает, где новый файл лежит. Частая причина рядом: раздела про этот сервис в AGENTS.md нет, либо структура в файле устарела после рефакторинга.

Приём: отдай файл явно через @, тогда агент прочитает его до ответа; диапазон строк задаётся решёткой. Затем сверь AGENTS.md с кодом: /init пересоберёт черновик по текущей базе, остальное допиши руками по инструкциям.

Файл в промптTUI: ссылки на файлы
Допиши тест к @src/services/payments.ts
# диапазон строк, когда нужен кусок файла
Где валидация количества: @src/routes/orders.ts#20-45

Счёт растёт на рутине

Симптом: вечер переименований и обновления двух README оплачен как рефакторинг архитектуры. Причина в варианте reasoning: #high размышляет над каждым шагом, и эти рассуждения тарифицируются как токены. Рутине такая глубина рассуждений ничего не добавляет.

Приём: вариант reasoning под задачу. F2 открывает недавние модели, вариант дописывается решёткой к идентификатору модели, например openai/gpt-5.2#low. Чистую рутину отправляй на бесплатную модель OpenCode (список смотри в /models): переименования и форматирование ей по силам, счёт за них не растёт.

Варианты reasoningМодели и варианты reasoning
# F2: недавние модели, у каждой варианты reasoning
openai/gpt-5.2#low    # рутина: переименования, README, форматирование
openai/gpt-5.2#high   # сложное: расследование бага, план рефакторинга

MCP-зоопарк в конфиге

Симптом: за месяц подключились Context7, Playwright, корпоративный трекер и пара серверов «на будущее». Каждый MCP-сервер приносит свои инструменты в контекст каждого запроса, даже когда задача про код заказов. Ответы дорожают, агент путается в похожих инструментах.

Приём: раз в месяц аудит /mcps. У сервера нет текущих задач, отключай его в opencode.jsonc полем enabled: false; вернёшь тем же полем, когда сервер понадобится.

Аудит MCPMCP-серверы
/mcps               # подключённые серверы и их инструменты
opencode mcp list   # тот же список из терминала

Агент лезет в .env

Симптом: агенту нужна переменная окружения, и он предлагает записать значение в .env или прочитать файл целиком. Токен попадает в контекст сессии и остаётся там: уходит в /compact, в логи, в следующий вопрос.

Приём: в OpenCode v2 чтение *.env и *.env.* уже по умолчанию спрашивает разрешение, *.env.example свободен. Закрепи защиту в opencode.jsonc: правку .env запрети, секреты вноси руками, агенту оставь чтение из process.env.

opencode.jsoncPermissions
{
  "permissions": [
    // чтение *.env в v2 уже ask; запрещаем правку
    { "action": "edit", "resource": "*.env", "effect": "deny" },
    { "action": "edit", "resource": "*.env.*", "effect": "deny" }
  ]
}
Секреты: как не надо и как надо

Вынеси токен эквайринга в .env, вот он: sk_test_51Kf9. И не спрашивай каждый раз про .env.

Задача понятна: создать .env с ACQUIRING_TOKEN=sk_test_51Kf9, подключить чтение в src/index.ts и добавить .env в .gitignore. Правка .env требует разрешения: once / always / reject.

build запрашивает разрешение: edit .env (для *.env по умолчанию действует ask)

Reject. Токен внесу в .env сам. Сделай остальное: плейсхолдер в .env.example и чтение через process.env в src/index.ts.

Принято. Создал .env.example со строкой ACQUIRING_TOKEN=<подставь свой токен>, в src/index.ts добавил чтение process.env.ACQUIRING_TOKEN с понятной ошибкой при отсутствии переменной. Файл .env не создавал.

Слепое доверие диффам

Симптом: третья правка за минуту, кнопка always нажимается уже без чтения, и удалённая проверка количества обнаруживается на красном CI. В опросе команд слепое доверие диффам назвали самой дорогой привычкой из шести проблем.

Приём: дифф читается до выбора. Правка непонятна, жми reject и спроси, что она делает. Лишнее уже применилось, откатит /undo: команда отменяет сообщение и все его изменения файлов. Отдельно проверяй правки вне задачи: рефакторинг рядом, переформатирование, удаление проверок. Потренируйся на текущей сессии: открой последний применённый дифф и найди строку, которую не запрашивал.

Аудит своей работы

  1. /new
  2. opencode mcp list
    MCP-серверы
  3. /init
    AGENTS.md
  4. { "action": "shell", "resource": "git push *", "effect": "deny" }
    Permissions
  5. F2 → вариант #low

Отмечено 0 из 6

Проверь себя

Вопрос 1 из 5

Сессия тянется второй день, ответы медленные, счёт растёт. Что делать?

Шпаргалка модуля

Контекст

/new
новая сессия на новую задачу
/compact
сжать историю сессии до выжимки
Ctrl+O
вернуться к недавней сессии
@файл
файл или диапазон @src/app.ts#20-45 в промпт

Деньги

F2
недавние модели и варианты reasoning, для рутины #low
/models
выбор модели, бесплатные модели OpenCode

Безопасность

/mcps
аудит подключённых MCP-серверов
/undo
откат сообщения и его правок
*.env
чтение ask по умолчанию v2, правку закрой deny