🏗️ От QA-бота к Task Agent: руководство по архитектуре
TL;DR: Перестаньте создавать чат-ботов, которые только отвечают на вопросы. Начните создавать агентов задач, которые действительно выполняют работу.
В этом руководстве объясняется архитектурный переход от монолитных ботов контроля качества к агентам задач, использующим статические правила, динамические навыки и детерминированные перехватчики, с конкретными примерами кода и ссылками на открытый исходный код.

1. Основное изменение: QA Bot → Task Agent
Большинство систем искусственного интеллекта сегодня по-прежнему представляют собой контекстно-наполненные боты для контроля качества:
• Они хорошо отвечают на вопросы
• У них галлюцинации под давлением
• Им не хватает гарантий исполнения, безопасности и последовательности.
💡 Ключевой вывод: не масштабируйте контекст. Структурируйте это.
2. Трехуровневая архитектура
🧱 1. Статический контекст — правила (всегда включено)
- •Ментальная модель: справочник сотрудника.
- •Всегда загружено
- •Определяет идентичность, стандарты кодирования, поведенческие ограничения.
- •Предотвращает галлюцинации и дрейф стиля.
- •Маленький, стабильный, редактируемый человеком
🛠️ 2. Динамический контекст — навыки (по требованию)
- •Ментальная модель: Ящик с инструментами
- •Загружается только при необходимости
- •Каждый навык представляет собой самостоятельную способность
- •Сохраняет контекстное окно чистым
⚓ 3. Детерминированные крючки — ограждения
- •Ментальная модель: уровень безопасности + соответствие требованиям.
- •Не вероятностный
- •Выполняется до/после рассуждения LLM
- •Обеспечивает соблюдение правил, которые никогда не должны нарушаться
3. Рекомендуемая структура проекта
мой-задачный-агент/ ├──.cursorrules ├── main.py ├── инструменты/ │ └── linear_mcp.py └── README.md
4. Пример статического контекста:.cursorrules
# РОЛЬ Вы старший Python инженер, специализирующийся на системах промышленного уровня. # ПРАВИЛА - НИКОГДА не используйте print() для отладки. - ВСЕГДА функции подсказки типа – Предложите план, если коснетесь >3 файлов. # ПОВЕДЕНИЕ - Будьте кратки - При необходимости задавайте уточняющие вопросы. Ссылка: https://github.com/PatrickJS/awesome-cursorrules
5. Пример динамического навыка (MCP)
из mcp.server.fastmcp импортировать FastMCP
mcp = FastMCP("Инструменты разработчика")
@mcp.tool()
def create_linear_ticket(title: str, Priority: str = "low") -> str:
Ticket_id = f"LIN-{hash(title) % 10000}"
return f"Создан билет {ticket_id} с приоритетом={priority}"
если __name__ == "__main__":
mcp.run()
Ссылка: https://github.com/modelcontextprotocol/python-sdk6. Пример детерминированного крючка
def compliance_check_hook(state):
user_input = state["messages"][-1].content.lower()
if "password" in user_input or "api_key" in user_input:
return {"error": "Обнаружено нарушение безопасности"}
return agent_node(state)
Ссылка: https://langchain-ai.github.io/langgraph/Если ваш агент отвечает только на вопросы, это чат-бот. Если он надежно выполняет работу, это агент задачи.


