Продвинутый

DietrichGebert/ponytail: AI‑агент как ленивый

Алексей Кузнецов
Алексей Кузнецов
Системный администратор12 ноября 2026 г.8 мин чтения

Узнайте, как настроить AI‑агента, который работает как ленивый, но опытный старший разработчик, и избавиться от лишних строк кода.

DietrichGebert/ponytail: AI‑агент как ленивый

Узнайте, как настроить AI‑агента, который работает как ленивый, но опытный старший разработчик, и избавиться от лишних строк кода.

Ленивый подход к разработке AI‑агентов

Имитация ленивого стиля

Во-первых, ленивый подход к разработке AI‑агентов — это не отсутствие усилий, а разумное отложительное выполнение рутинных задач. senior‑разработчик, которого можно назвать «ленивым», пишет минимум кода, полагаясь на возможности агента, а не на собственные ручные правки.

Пример: вместо того чтобы вручную создать скрипт для загрузки данных и их преобразования, достаточно сформулировать запрос агенту:

bash
# request to the AI‑agent
curl -X POST https://api.anthropic.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ANTHROPIC_API_KEY" \
  -d '{
        "role": "user",
        "content": "Сгенерируй bash‑скрипт, который скачивает CSV‑файл по URL, преобразует его в JSON и сохраняет в /data/result.json"
      }'

Агент, используя встроенный плагин claude‑code, генерирует готовый скрипт, который можно сразу запустить. Подробнее о настройке контекста для Claude Code см. Как создать CLAUDE.md для улучшения работы Claude Code.

Во-вторых, имитация ленивого стиля подразумевает использование готовых шаблонов и скриптов, которые уже покрывают типичные сценарии. Например, для автоматизации резервного копирования домашней лаборатории достаточно скопировать проверенный unit‑файл systemd и немного адаптировать пути:

ini
# /etc/systemd/system/backup-pictures.service
[Unit]
Description=Резервное копирование фотографий в TrueNAS

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup_pictures.sh
bash
# /usr/local/bin/backup_pictures.sh
#!/usr/bin/env bash
set -euo pipefail

SRC="/mnt/trueNAS/pictures"
DST="/backup/pictures/$(date +%Y-%m-%d)"
mkdir -p "$DST"
rsync -a --delete "$SRC/" "$DST/"

Эти файлы позволяют агенту выполнить всю работу без вмешательства человека, а самому разработчику остаётся лишь периодически проверять лог через journalctl -u backup-pictures.service.

Экономия кода и времени

Сохранение кода — это не только меньше строк, но и меньше точек отказа. При работе с AI‑агентом удобно выносить общие части в отдельные файлы‑шаблоны, а затем подставлять переменные.

Пример Docker‑Compose конфигурации, запускающей агент и необходимые сервисы:

yaml
# docker-compose.yml
version: "3.8"

services:
  claude-agent:
    image: ghcr.io/anthropic/claude-code:latest
    container_name: claude-agent
    restart: unless-stopped
    volumes:
      - ./agents:/app/agents
      - ./data:/data
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    command: ["--config", "/app/agents/config.yaml"]
yaml
# agents/config.yaml
model: claude-3-sonnet
timeout: 300
log_level: info

Запуск выглядит так:

bash
docker compose up -d

После старта агент готов принимать запросы через локальный API, а все зависимости (например, curl, jq) уже включены в образ, так что дополнительных установок не требуется.

Если нужно выполнить рутинную задачу ежедневно, удобно создать systemd‑таймер, а не писать отдельный скрипт:

ini
# /etc/systemd/system/agent-schedule.timer
[Unit]
Description=Запуск AI‑агента каждый день в 02:00

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
ini
# /etc/systemd/system/agent-schedule.service
[Unit]
Description=Запуск AI‑агента

[Service]
ExecStart=/usr/bin/docker compose -f /opt/agent/docker-compose.yml up --abort-on-container-exit
bash
systemctl enable --now agent-schedule.timer

Таким образом, минимум кода, проверенные шаблоны и автоматизация позволяют сконцентрироваться на решении реальных задач, а не на рутинных операциях. Если вы хотите узнать больше о локальных ИИ‑агентах и их инструментах, обратитесь к Локальные ИИ-агенты и инструменты.

Настройки ponytail для минимального вклада

Настройки ponytail для минимального вклада

Ponytail — это легковесный механизм, позволяющий задать «мозг» AI‑агента через несколько параметров. Чтобы агент работал как ленивый, но опытный старший разработчик, достаточно ограничить количество контекстных данных и задать чёткую системную инструкцию.

Минимальный файл конфигурации (ponytail.yml):

yaml
# ponytail.yml
context:
  - path: ./src
    include: ["*.py", "*.md"]
  - path: ./docs
    include: ["*.md"]
system_prompt: |
  Ты — опытный старший разработчик, который решает задачи с минимальными усилиями.
  Оцени текущий код, укажи проблемные места и предложи оптимизацию, не вдаваясь в лишние детали.
  Ответ должен быть лаконичным, содержать только необходимые команды и фрагменты конфигураций.

Почему так?
Во‑первых, ограничивая список файлов, мы уменьшаем объём передаваемого контекста, что ускоряет обработку и экономит токены.
Во‑вторых, системный промпт формирует поведение агента, заставляя его действовать как «ленивый, но опытный» специалист, а не как общие «инструктор».

Как создать CLAUDE.md для улучшения работы Claude Code — в этом руководстве описано, как оформить контекстные файлы, чтобы агент видел только то, что действительно важно.


Контекст и подсказки

Контекст — это «знание», которое агент получает до начала работы. Чем точнее и компактнее контекст, тем меньше «лишних строк» в ответе.

Пример передачи контекста через CLI (используем claude-code):

bash
# Передаём только файлы из каталога src, а остальные игнорируем
claude-code run --context src/**/*.py --prompt "Оптимизируй этот файл"

Подсказка в системе (system message) — короткая инструкция, которая задаёт тон:

text
You are a senior engineer who always looks for the simplest solution.
Focus on the most critical parts of the code and suggest only one‑line changes.

Что важно:

  • Контекст должен включать только те файлы, где планируется работа.
  • Подсказка (prompt) должна быть однострочной, без «все‑это‑и‑другое», и явно указывать, чего именно требуется (оптимизация, рефакторинг, исправление бага).

Локальные ИИ-агенты и инструменты описывают, как настроить локальный контекст и как избежать «заливания» лишних файлов.


Шаблоны и реюзабельность

Чтобы не писать одинаковые подсказки заново, удобно хранить шаблоны в отдельных файлах и подключать их через include. Это повышает реюзабельность и гарантирует одинаковый стиль ответов.

Шаблон prompt (templates/optimize_prompt.md):

markdown
# Задача
Оптимизировать код, сделав его более читаемым и эффективным, без изменения внешнего поведения.

# Требования
- Указать проблемные участки.
- Предложить минимум один конкретный изменений (одна строка, одна функция).
- Привести пример до/после в виде кода.

Использование шаблона:

bash
claude-code run \
  --context src/**/*.py \
  --prompt "$(cat templates/optimize_prompt.md)"

Почему это удобно:

  • Шаблон хранит только структуру запроса, а конкретные детали (файлы, задачи) подставляются динамически.
  • Реюзабельность достигается тем, что один и тот же шаблон можно применять к разным проектам, меняя лишь контекст.

Автономная разработка на Rust с помощью Claw-Code показывает, как similar подход применяется в Rust‑проектах, где шаблоны используют переменные ${PROJECT} и ${TASK}.


Итого:

  • Ограничьте контекст до нужных файлов.
  • Формулируйте системный промпт чётко и лаконично.
  • Сохраняйте шаблоны в отдельные файлы и подключайте их через include, чтобы избежать дублирования и поддерживать предсказуемость поведения агента.

Эти простые настройки позволяют получать от AI‑агента «ленивый, но опытный» результат без лишних строк кода и без излишних токенов.

Интеграция с Claude‑Code и CI/CD

Подключение к Claude‑Code plugin

Для работы с Claude‑Code необходимо подключить плагин к вашему редактору и оформить файл CLAUDE.md, где задаются правила поведения агента.

  1. Установите плагин. В VS Code это делается через маркетплейс:
bash
code --install-extension claude.code
  1. Создайте файл CLAUDE.md в корне проекта. Пример минимального конфигурационного файла:
markdown
# CLAUDE.md
## Общие правила
- Агент работает в режиме `auto` – он сам выбирает, какие файлы менять.
- При запросе `claude request` указывайте путь к файлу, который требуется изменить.
- Для уточнения контекста используйте `claude context add <путь_к_файлу>`.

## Пример запроса

claude request --file src/main.py --context add ./config.yaml


[Как создать CLAUDE.md для улучшения работы Claude Code](/guides/kak-sozdat-claudemd-dlya-uluchsheniya-raboty-claude-code-9aywoa)

Файл CLAUDE.md следует разместить в корне репозитория, иначе плагин не сможет его найти.

Важно: не храните в CLAUDE.md секретные токены. Для аутентификации используйте переменные окружения, например CLAUDE_API_KEY.

Автоматизация в пайплайнах

Интеграция Claude‑Code в CI/CD позволяет автоматизировать ревью кода и генерацию boilerplate‑кода. Ниже пример workflow для GitHub Actions, который запускает Claude‑CLI при каждом pull‑request.

yaml
name: AI‑review

on:
  pull_request:

jobs:
  claude:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install Claude CLI
        run: |
          curl -L https://github.com/claude/cli/releases/download/v1.2.0/claude-linux-amd64.tar.gz | tar xz
          sudo mv claude /usr/local/bin/

      - name: Run AI agent on PR description
        env:
          CLAUDE_API_KEY: ${{ secrets.CLAUDE_API_KEY }}
        run: |
          # Формируем описание PR в виде временного файла
          echo "${{ github.event.pull_request.description }}" > pr_description.md
          claude request --mode auto --file pr_description.md

В этом примере:

  • Install Claude CLI – скачивание и установка официального бинарника.
  • Run AI agent – передача описания PR в агент, который в responses‑е может предложить правки, а затем коммит‑бот может применить их автоматически (дополнительный шаг, не включён в базовый пример).

Для более продвинутой оптимизации работы агента рекомендуется использовать систему ECC, о которой подробно описано в статье Оптимизация ИИ‑агентов с помощью системы ECC.

Если требуется более тонкая настройка под конкретный стек, смотрите рекомендации в Локальные ИИ‑агенты и инструменты и Claw‑code: автономный музейный экспонат на Rust.

Во‑первых, подключение к Claude‑Code простое: установите плагин, создайте CLAUDE.md и задайте переменные окружения.
С продовольственной точкой зрения, автоматизация в пайплайнах экономит часы ручного ревью и обеспечивает предсказуемость конфигураций.
Если мы посмотрим на текущие практики, то видно, что большинство команд используют готовый CLI‑инструмент и лишь адаптируют его под свои нужды.
Если требуется дополнительная настройка, достаточно расширить CLAUDE.md правилами контекста и добавить скрипты‑обёртки в CI.

Часто задаваемые вопросы

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

Нужно указать в запросе полную цель и требуемый формат вывода, например «Сгенерируй bash‑скрипт, который скачивает CSV‑файл по URL, преобразует его в JSON и сохраняет в /data/result.json». Укажите, что скрипт должен быть самодостаточным, с shebang и обработкой ошибок, чтобы агент мог сразу использовать его в дальнейшем. При указании пути к данным используйте абсолютные пути, чтобы избежать проблем с текущим рабочим каталогом.

Что делать, если агент генерирует скрипт, который не работает из‑за отсутствия зависимостей?

Проверьте, включены ли в запрос все необходимые зависимости, например «установить пакет curl и jq». Если скрипт использует плагин claude‑code, уточните, что нужно добавить в контекст CLAUDE.md указание о необходимости проверять наличие утилит. После получения кода выполните dry‑run в терминале, чтобы убедиться, что все команды доступны.

Как обеспечить предсказуемость работы AI‑агента в автоматических задачах, например в CI/CD?

Оформите запрос как отдельный step в pipeline, где агент получает фиксированный набор входных параметров через переменные окружения. Добавьте проверку кода через flake8 или shellcheck перед запуском, а также логируйте вывод агента в отдельный файл для последующего анализа. При необходимости зафиксируйте версию плагина и образ Docker, чтобы исключить изменения в окружении.

Как правильно именовать ресурсы, связанные с AI‑агентом, чтобы избежать конфликтов с другими сервисами?

Используйте понятные имена, например ponytail‑loader‑script, ponytail‑backup‑service, а в системе Proxmox или k3s применяйте метки, связанные с проектом. При работе с домашними серверами ставьте префикс проекта и номер версии, например ponytail‑v1‑loader. Это упрощает поиск в логах и мониторинге, а также повышает предсказуемость конфигураций.

Поделиться:TelegramX / TwitterVK

Читайте также