/
Вопросы и ответы
/
AI-агенты
/

Как использовать ИИ-агентов для дебага?

Как использовать ИИ-агентов для дебага?

11 часов назад

Никита Вихров

Ответы

1

Как использовать ИИ-агентов для дебага

Обычный дебаг выглядит так: смотришь на стектрейс, гуглишь ошибку, читаешь Stack Overflow, пробуешь — не работает, гуглишь снова. Агент меняет этот процесс: он сам читает логи, анализирует код, выдвигает гипотезы и проверяет их.


Базовый паттерн: агент с доступом к логам и коду

from anthropic import Anthropic
import subprocess

client = Anthropic()

tools = [
    {
        "name": "read_file",
        "description": "Читает содержимое файла",
        "input_schema": {
            "type": "object",
            "properties": {"path": {"type": "string"}},
            "required": ["path"]
        }
    },
    {
        "name": "run_command",
        "description": "Запускает команду в терминале и возвращает вывод. Используй для запуска тестов, проверки переменных окружения, анализа процессов.",
        "input_schema": {
            "type": "object",
            "properties": {
                "command": {"type": "string", "description": "Команда для выполнения"},
            },
            "required": ["command"]
        }
    },
    {
        "name": "search_in_files",
        "description": "Ищет строку в файлах проекта через grep",
        "input_schema": {
            "type": "object",
            "properties": {
                "pattern": {"type": "string"},
                "directory": {"type": "string", "default": "."}
            },
            "required": ["pattern"]
        }
    }
]

def execute_tool(name: str, input: dict) -> str:
    if name == "read_file":
        try:
            return open(input["path"]).read()
        except Exception as e:
            return f"Ошибка: {e}"

    elif name == "run_command":
        result = subprocess.run(input["command"], shell=True, capture_output=True, text=True)
        return result.stdout + result.stderr

    elif name == "search_in_files":
        result = subprocess.run(
            ["grep", "-r", input["pattern"], input.get("directory", ".")],
            capture_output=True, text=True
        )
        return result.stdout or "Совпадений не найдено"

Пример сессии дебага

Допустим, падает тест с непонятной ошибкой:

AssertionError: Expected status 200, got 500 Response body: {"error": "Internal Server Error"}

Передаёшь агенту:

bug_report = """
Падает тест test_create_booking в tests/test_api.py.
Ошибка: Expected status 200, got 500, body: {"error": "Internal Server Error"}.
Последние изменения — в файле app/models/booking.py.
Найди причину.
"""

messages = [{"role": "user", "content": bug_report}]

while True:
    response = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=2048,
        system="Ты — опытный разработчик. Дебажишь систематически: читаешь тест, смотришь код, проверяешь логи. Выдвигаешь гипотезы и проверяешь их инструментами.",
        tools=tools,
        messages=messages
    )

    if response.stop_reason == "end_turn":
        print(response.content[0].text)
        break

    if response.stop_reason == "tool_use":
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                messages.append({"role": "assistant", "content": response.content})
                messages.append({
                    "role": "user",
                    "content": [{"type": "tool_result", "tool_use_id": block.id, "content": result}]
                })

Агент прочитает тест, откроет booking.py, посмотрит на последние изменения, запустит тест с verbose-флагом — и скажет, что именно сломалось.


Что агент делает лучше человека

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

Агент умеет удерживать много файлов одновременно. Баг часто живёт на стыке трёх файлов — человеку приходится прыгать между вкладками, агент держит всё в контексте.


Что агент делает хуже

Агент не знает бизнес-контекст. «Почему здесь должно быть именно 200, а не 201» — это к тебе. Агент найдёт где сломалось, но не всегда поймёт почему так было задумано.

Агент иногда идёт по неправильному следу и уверенно объясняет несуществующую проблему. Проверяй его выводы.


Дебаг с агентами, рефакторинг, проектирование архитектуры — это практические навыки, которые разбираются на курсе «ИИ для разработчиков» на Хекслете. Курс ведёт Кирилл Мокевнин — разработчик с 18-летним опытом. Формат: текстовые уроки плюс еженедельные воркшопы с живым кодингом.

11 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845