ИИ‑агенты. Часть 1: Первые шаги. agents.md.. agents.md. Ai agents.. agents.md. Ai agents. DevOps.. agents.md. Ai agents. DevOps. fastapi.. agents.md. Ai agents. DevOps. fastapi. git flow.. agents.md. Ai agents. DevOps. fastapi. git flow. python.. agents.md. Ai agents. DevOps. fastapi. git flow. python. skills.md.. agents.md. Ai agents. DevOps. fastapi. git flow. python. skills.md. автоматизация разработки.. agents.md. Ai agents. DevOps. fastapi. git flow. python. skills.md. автоматизация разработки. агентная разработка.. agents.md. Ai agents. DevOps. fastapi. git flow. python. skills.md. автоматизация разработки. агентная разработка. ии-агенты.. agents.md. Ai agents. DevOps. fastapi. git flow. python. skills.md. автоматизация разработки. агентная разработка. ии-агенты. искусственный интеллект.. agents.md. Ai agents. DevOps. fastapi. git flow. python. skills.md. автоматизация разработки. агентная разработка. ии-агенты. искусственный интеллект. Программирование.

Всем привет! Сегодня я хочу рассказать вам про то, как я начал внедрять в процесс разработки ИИ‑агентов. Поделюсь своим опытом.

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

Что такое ИИ‑агент?

Я уже рассказывал, что такое нейронная сеть. И мы знаем, что LLM тоже нейронная сеть (Transfomer точнее). Однако, что из себя представляет ИИ‑агент я понял только сейчас.

ИИ‑агент — это автономная программная система на базе больших языковых моделей (LLM, БЯМ), способная самостоятельно ставить цели, планировать многоступенчатые действия и использовать внешние инструменты для решения задач без постоянного участия человека.

Основными компонентами ИИ‑агента являются:

1) Языковая модель (LLM), которая является мозгом агента, именно она генерирует шаги решения. Она выпускает мысли (reasoning traces) и указывает действия для выполнения.

2) Инструменты (Tools) — внешние функции или API, которые агент может вызывать для получения информации или выполнения операций.

Большинство ИИ‑сред разработки (AI IDE) и ИИ‑расширения для VS Code уже имеют встроенные инструменты для чтения и записи файлов, запуска команд в терминале и другие.

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

3) Исполнитель действий (Agent Executor) — принимает решение модели о действии, вызывает соответствующий инструмент и возвращает результат обратно модели.

4) Состояние агента (State) — накопленная история диалога и действий. Сюда входит запрос пользователя, сообщения модели (мысли/действия) и наблюдения (результаты инструментов). Состояние постоянно обновляется по мере выполнения шагов. 

И важно, что это состояние передается полностью с каждым новым промтом. Таким образом, чем больше контекст, тем больше токенов тратиться с новым запросом. Чтобы минимизировать эту проблему существует механизм кэширования и сжатия контекста.

Какие AI‑IDE, ИИ‑расширения и модели использую я?

Сразу скажу, что я делюсь своим путём. Поэтому то, что использую я, не обязательно будет лучшим и правильным.

Для того, чтобы попробовать разные модели, а также не платить сразу 20+ долларов за подписку на ChatGPT и прочие модели, я решил пополнить баланс на $5 в OpenRouter.

Хотя подписка будет выгоднее в большинстве случаев и расширения codex, Claude code и прочие достаточно удобны.

OpenRouter — это платформа‑агрегатор, которая предоставляет единый универсальный API для доступа к множеству различных моделей искусственного интеллекта через один API‑ключ.

Для использования ИИ‑агента я сначала решил использовать расширение Roo Code для VS Code, но с ним возникли трудности и я перешел на расширение Cline.

Первой тестовой дешевой моделью была Qwen 2.5 Coder 32B Instruct, но с ней была проблема: она не поддерживала инструменты или поддерживает их не так, как надо Cline (скорее всего из‑за конфликта XML и JSON).

Наконец‑то всё заработало с meta‑llama/llama-3.3–70b‑instruct. У неё копеечная стоимость на входной и выходной миллион токенов. Но мне она не сильно понравилась, об этом ниже. Спойлер: я сменил эту модель на Claude Haiku.

Как я организовал рабочее пространство?

Первым делом я подумал о безопасности и решил, что агент будет работать только в Docker‑контейнере. А доступ ему дам к папке в контейнере через расширение Remote ssh.

Для ИИ‑агента поднял следующий контейнер:

FROM python:3.12-slim

RUN apt-get update && apt-get install -y 
    openssh-server 
    curl 
    git 
    docker.io 
    docker-compose 
    && rm -rf /var/lib/apt/lists/*

RUN mkdir -p /var/run/sshd
RUN echo 'root:pxi' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
COPY ./PXILUM /PXILUM
WORKDIR /PXILUM
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Тут мы подняли ssh сервер, создали пользователя и разрешили подключаться к нему по паролю.

Однако, я хочу, чтоб он вёл разработку сам, используя контейнеризацию, поэтому я прокинул в его контейнер Unix‑сокет демона Docker с хост‑машины:

-v /var/run/docker.sock:/var/run/docker.sock

Благодаря этому он сможет создавать контейнеры на хосте, но это конечно небезопасно (root по сути дали), поэтому рекомендую работать с агентом на VPS.

Команда для создания образа:

docker build -t pxilum_agents .

Команда для запуска контейнера:

docker run -d -p 2222:22 -v var/run/docker.sock:/var/run/docker.sock  -v "${PWD}/PXILUM:/PXILUM" --name pxilum_sandbox pxilum_agents

Проброс порта не обязателен, но он нам позволяет подключиться по localhost:2222, а не вводить каждый раз новый IP. А также подключиться к контейнеру даже с другого устройства.

После того, как мы подключились по ssh через расширение VS Code, заходим в нашу рабочую папку и нажимаем на расширение Cline, далее нужно нажать кнопку, которая установит это расширение внутрь нашего контейнера.

Вставляем наш API‑ключ от OpenRouter в настройках Cline, выбираем модель и можем писать первый промпт. Режим act не забываем, для удобство ставим авто подтверждение действий агента.

Перед первым промтом я заранее создал другой моделью файлы agents.md и skills.md.

Что такое agents.md или AGENTS.md?

agents.md — это конфигурационный файл, который задает глобальный контекст, технический стек и правила игры для ИИ‑агента (или группы агентов) в рамках проекта. 

То есть туда можно написать абстрактно, что мы хотим, что нужно использовать (FastAPI, asyncio, Postgres). Какой роли должен придерживаться агент (архитектор, бэкенд‑разработчик, тестировщик). 

Можно написать условия разработки: используем контейнеры и.env, используем механизм router, обязательное тестирование перед сдачей и push в ветку dev.

Этот файл писать должны не вы, а другая модель (часто более умная, чем та, которая будет писать вам код). Вы лишь можете чуть корректировать его, если что‑то модель написала не так.

Используем Git

Я упомянул, про push в ветку dev. Это на самом деле очень удобная и важная вещь.

Я добавил следующее в agents.md:

Каждая подзадача должна завершаться отдельным коммитом.

Начинать строго с номера задачи и пару слов задачи на русском языке. Шаблон: Task‑[Номер задачи]: [Краткое описание изменений на русском].

После успешного тестирования задачи делать git push в GitLab репозиторий, я настроил ssh ключ. Создал для тебя ветку dev, работаешь только в ней. Для пуша: git push origin dev

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

Откат с удалением изменений:

git reset --hard <хеш_коммита>

Переходим к skills.md или SKILL.md

Skills.md — это файл, который определяет как ИИ‑агент должен выполнять конкретные задачи. 

Каждый скилл состоит из 4 компонентов:

0) Шапка из полей name и description, выделенных 3 дефисами, именно по ним модель выбирает скилл.

1) Name / Identifier — уникальное имя или ID скилла, по которому ИИ‑агент отличает этот скилл от сотен других.

2) Trigger — событие, по которому ИИ‑агент должен среагировать и вызвать этот скилл.

3) Execution Pipeline — пошаговая инструкция, какие функции вызвать, куда перенаправить поток данных и в какую базу записать логи или как надо мыслить(например, триггер это написание фронтенда, при его написании пиши оригинально, не как Ии и тд).

Опять же это все не обязательно, это РЕКОМЕНДАЦИЯ, так пишут свои скиллы сами создатели Claude и GPT. Иногда хватает только шапки и названия, а дальше вольный текст. Но по хорошему это используем разметку md файла и пишем, как в примерах.

Вот часть моего skills.md:

# PXILUM Agent Execution Skills & Pipelines

## Skill: Inbound Mesh Packet Relay (Radio → Web)

* Trigger: Коллбэк‑поток обнаружил входящий бинарный пакет или LXMF‑сообщение из радиоэфира.

* Execution Pipeline:

1. Перехватить сырые данные внутри синхронного коллбэка RNS.

2. Извлечь 16-байтный хэш криптографического Identity отправителя.

3. Безопасно передать payload в поток FastAPI через thread‑safe queue (asyncio.Queue).

4. Асинхронно прочитать очередь фоновой задачей и записать лог в PostgreSQL.

5. Моментально сдирижировать пакет в активные WebSocket‑соединения /ws для веб‑пользователей.

Вот начало скилла от Anthropic:

‑-

name: frontend‑design

description: Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don’t read as templated defaults.

license: Complete terms in LICENSE.txt

‑-

# Frontend Design

Approach this as the design lead at a design studio known for giving every client a distinct visual identity that is not mistaken for anyone else’s. This client has already rejected proposals that felt cliché or templated, and is paying for a distinctive point of view: make deliberate, opinionated choices about palette, typography, and layout that are specific to this brief, and take aesthetic risk if justified.

## Ground your designs in the subject matter

If the brief does not identify

Начало скилла от OpenAI:

‑-

name: figma‑use

description: “**MANDATORY prerequisite** — you MUST invoke this skill BEFORE every use_figma tool call. NEVER call use_figma directly without loading this skill first. Skipping it causes common, hard‑to‑debug failures. Trigger whenever the user wants to perform a write action or a unique read action that requires JavaScript execution in the Figma file context — e.g. create/edit/delete nodes, set up variables or tokens, build components and variants, modify auto‑layout or fills, bind variables to properties, or inspect file structure programmatically.”

‑-

# use_figma — Figma Plugin API Skill

Use use_figma MCP to execute JavaScript in Figma files via the Plugin API. All detailed reference docs live in references/.

Always pass skillNames: "figma-use" when calling use_figma. This is a logging parameter used to track skill usage — it does not affect execution.

If the task involves building or updating a full page, screen, or multi‑section layout in Figma from code, also load [figma‑generate‑design](../figma‑generate‑design/SKILL.md). It provides the workflow for discovering design system components via search_design_system, importing them, and assembling screens incrementally. Both skills work together: this one for the API rules, that one for the screen‑building workflow.

Before anything, load [plugin‑api‑standalone.index.md](references/plugin‑api‑standalone.index.md) to understand what is possible. When you are asked to write plugin API code, use this context to grep [plugin‑api‑standalone.d.ts](references/plugin‑api‑standalone.d.ts) for relevant types, methods, and properties. This is the definitive source of truth for the API surface. It is a large typings file, so do not load it all at once, grep for relevant sections as needed.

IMPORTANT: Whenever you work with design systems, start with [working‑with‑design‑systems/wwds.md](references/working‑with‑design‑systems/wwds.md) to understand the key concepts, processes, and guidelines for working with design systems in Figma. Then load the more specific references for components, variables, text styles, and effect styles as needed.

## 1. Critical Rules

1. Use return to send data back. The return value is JSON‑serialized automatically (objects, arrays, strings, numbers). Do NOT call figma.closePlugin() or wrap code in an async IIFE — this is handled for you.

2. **Write plain JavaScript

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

Вот пару ссылочек: 

OpenAI: https://github.com/openai/skills

Anthropic: https://github.com/anthropics/skills

Google: https://github.com/google‑gemini/gemini‑skills

Можно выделить 3 категории скиллов: пользовательские, навыки от организаций, навыки партнёров.

Пользовательские — созданные самостоятельно для личного использования.

Навыки от организаций — когда у сотрудников компании есть корпоративные аккаунты и организация может предоставить им свои скиллы.

Навыки партнёров — скиллы в связке с MCP от крупных компаний, например, от Notion, Figma, Atlassian.

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

А также универсальные, которые хранятся в специальной директории ИИ‑агента для скиллов и применяются ко всем проектам, с которыми работает агент.

Нужно ли явно указывать агенту на эти файлы?

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

💬 На этой ноте я бы хотел закончить. Обращу внимание, что переход на более умную модель Claude Haiku с llama-3.3–70b, написание хорошего agents.md и skills.md, а также хорошо продуманные промпты качественно улучшили разработку с ИИ‑агентом.

Автор: PXI

Источник