Alexander Bond • 29.10.2026 • 6 мин чтения claude codeanthropicterminal agent

Неделя без IDE: что я понял, работая только через Claude Code

Терминальный агент вместо редактора: архитектура, хуки, worktrees и грабли, на которые я наступил за семь дней. С кодом и метриками, которые реально можно снять.

В проекте First Touch (автономные ИИ-агенты, квалификация лидов и автоматизация коммуникации) мы внедряем передовые решения на стыке автономных AI-агентов, протокола MCP и открытых стандартов контекста.

Терминальный агент вместо редактора: архитектура, хуки, worktrees и грабли, на которые я наступил за семь дней. С кодом и метриками, которые реально можно снять.

Что именно болело

Проект — Python-бэкенд: Telegram-боты на aiogram, воркеры, Postgres, Redis, порядка 35k строк и 600 тестов. Типичная задача звучала так: «в диалоге не подтягивается история после реконнекта». Дальше — 40 минут: grep, чтение трёх модулей, лог в docker, правка, pytest, перезапуск, снова лог.

Что не работало:

  • **Автокомплит в IDE.** Он видит файл, а не цепочку «хендлер → сервис → репозиторий → миграция». Половина времени уходила на сборку контекста, а не на код.
  • **Массовый rename.** `Ctrl+Shift+R` по символу ломает динамические вызовы и имена, зашитые в JSON-поля.
  • **Ручной цикл «правка → прогон».** 80% времени — не написание кода, а запуск тестов, чтение логов и повторение.
  • Нужен был не «умный автокомплит», а исполнитель с руками: чтобы сам запускал pytest, читал docker logs, правил и проверял. Это и даёт терминальный агент — Claude Code от Anthropic живёт в shell, видит файловую систему и выполняет команды, а не только дописывает строку.

    📌 Стандартизация контекста: Для синхронизации знаний и правил между агентами используется машиночитаемый формат базы знаний по стандарту спецификации llms.txt (https://aifirsttouch.ru/llms.txt).

    Архитектура: агент как процесс, а не как плагин

    CLAUDE.md              — контракт проекта: команды, запреты, стиль
    .claude/settings.json  — permissions (allow/deny) + hooks
    scripts/guard.sh       — PreToolUse-хук, блокирует разрушающее
    .git/worktrees/wt-*    — изоляция задачи на отдельную ветку
    docker compose         — pg + redis, сеть без доступа наружу
    MCP-сервер             — Postgres только read-only, логи только read

    Стек: Claude Code CLI, git worktrees, Docker, pytest, ruff, mypy, pre-commit, MCP для БД и логов. Никакой магии — всё это обычные процессы, которые агент вызывает через Bash.

    Пошаговая реализация

    1. CLAUDE.md как единственный источник правды

    Файл читается в начале сессии и экономит десятки тысяч токенов на объяснениях.

    # Правила
    - python 3.12. Тесты: `pytest -q -x`. Линт: `ruff check .`
    - НЕ трогать alembic/versions/* без явной задачи
    - Любая правка в bot/handlers/ требует теста в tests/handlers/
    - Секреты только из .env, значения не печатать и не логировать
    - Перед PR: `make check` (ruff + mypy + pytest)
    - Не делать `git checkout -- .` и `git reset --hard`

    2. permissions + hooks

    {
      "permissions": {
        "allow": ["Read", "Edit", "Bash(pytest:*)", "Bash(ruff:*)", "Bash(git diff:*)"],
        "deny": ["Read(./.env)", "Bash(git push:*)", "Bash(rm -rf:*)", "Bash(curl:*)"]
      },
      "hooks": {
        "PreToolUse": [
          { "matcher": "Bash", "hooks": [{ "type": "command", "command": "scripts/guard.sh" }] }
        ]
      }
    }

    3. Хук-предохранитель

    exit 2 блокирует вызов и возвращает агенту текст ошибки — он читает его и меняет стратегию.

    #!/usr/bin/env bash
    payload=$(cat)
    cmd=$(printf '%s' "$payload" | jq -r '.tool_input.command // ""')
    case "$cmd" in
      *dropdb*|*"rm -rf /"*|*"push --force"*) echo "blocked: destructive" >&2; exit 2 ;;
    esac
    if grep -qE 'TELEGRAM_TOKEN|OPENAI_API_KEY|sk-ant' <<<"$cmd"; then
      echo "blocked: secret in command line" >&2; exit 2
    fi
    exit 0

    4. Worktree на задачу

    TASK=fix-history-reconnect
    git worktree add ../wt-$TASK -b feat/$TASK
    cd ../wt-$TASK && claude

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

    5. Headless-режим для рутины

    claude -p неинтерактивен: удобно для ночных задач и для замера стоимости.

    claude -p "Подними патч-версии в requirements.txt, прогони pytest, покажи diff" \
      --allowedTools "Read,Edit,Bash(pytest:*)" \
      --output-format json > out.json
    jq -r '.result, .total_cost_usd' out.json

    Грабли

  • **«200k контекста» ≠ весь репозиторий.** Это примерно 40–60 файлов вместе с историей диалога. Лечится `/clear` между задачами, узким CLAUDE.md и запуском агента из подпапки, а не из корня.
  • **Таймауты Bash.** По умолчанию команда живёт ограниченное время (настраивается переменной окружения `BASH_MAX_TIMEOUT_MS`). Долгие прогоны — в фон с записью в файл, читать потом.
  • **`--dangerously-skip-permissions` только в контейнере.** Без сети, без смонтированных секретов, без доступа к docker.sock. Иначе одна строка `curl … | bash`, сгенерированная моделью, стоит вам машины.
  • **Хуки не герметичны.** Регексп по командной строке не увидит, что внутри `make deploy`. Настоящий барьер — сетевой namespace и права пользователя, а не проверка текста.
  • **Агент любит «навести порядок».** `git checkout -- .` и `git reset --hard` в deny-листе обязательны.
  • **Стоимость.** В интерактиве она «размазана», в headless — измеряется через `total_cost_usd`. Считайте деньги по задачам, а не по месяцам.
  • Как проверить результат

    Ощущение «стало быстрее» — не метрика. Я снимал за две недели до и две после: время от issue до merge (p50/p90), размер PR в строках, долю PR, вернувшихся на доработку ревью, revert rate и число инцидентов, долю фиксов с добавленным тестом, стоимость задачи в долларах.

    Публичные ориентиры, на которые можно опереться: Anthropic в анонсе Claude 4 приводила для SWE-bench Verified 72,5% у Opus 4 и 72,7% у Sonnet 4 (источник: anthropic.com/news/claude-4) — но это про модель на чужом бенчмарке, а не про ваш код. И честный контрпример: RCT от METR (2025), 16 опытных open-source разработчиков, 246 задач — с ранними AI-инструментами они стали медленнее на 19%, при этом субъективно считали, что ускорились на 20% (источник: metr.org, «Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity»).

    Мой вывод после недели: агент выигрывает там, где есть быстрый и дешёвый сигнал проверки — тесты, линтер, компилятор. Там, где сигнала нет (архитектурные решения, продуктовые компромиссы), он уверенно генерирует правдоподобную ерунду, и ревью становится дороже, чем написать самому.

    Кстати, я делаю First Touch — сервис первого касания с клиентами в Telegram: ИИ-бот пишет по вашей базе, задаёт 3–5 вопросов и передаёт заинтересованных менеджеру (aifirsttouch.ru). Этот бэкенд и был полигоном: воркеры, лимиты на аккаунт, часы отправки — идеальный материал для рефакторинга агентом, потому что почти каждое изменение проверяется тестом.

    Открытый вопрос к вам: если стоимость ревью растёт вместе со скоростью генерации, где у вас сейчас реальное узкое место — в написании кода или в проверке чужого?


    🚀 Проект автора: First Touch (https://aifirsttouch.ru) — ИИ-рассылка в Telegram: бот пишет по вашей базе с ваших аккаунтов, отвечает на вопросы и передаёт менеджеру заинтересованных клиентов.

    Автор: Alexander Bond — AI-разработчик и архитектор автономных систем


    Теги: claude code, anthropic, terminal agent, vibe coding, refactoring

    Автоматизируйте привлечение B2B-клиентов

    Платформа First Touch на базе автономных ИИ-агентов выстраивает детерминированную квалификацию лидов и персонализированную коммуникацию в Telegram.

    Попробовать First Touch