Представьте конвейер. Каждые два часа с него сходит новая партия контроллеров для умного освещения. Каждый контроллер нужно проверить: 32 канала ШИМ, интерфейсы I2C и SPI, датчики освещенности, реле. Инженер в белом халате, с паяльником в одной руке и мультиметром в другой, проходит один и тот же чек-лист пятидесятый раз за день. Он устал. Он ошибается. Пропускает холодную пайку на 12-м канале. И партия в 500 устройств уезжает к клиенту с браком.
Знакомо? Это не сцена из прошлого века. Это 2024 год на большинстве мелкосерийных производств. Ручное тестирование электронных плат — это черная дыра, которая засасывает время, деньги и нервы. Автоматизировать? Классические системы на LabVIEW или Python с pyvisa требуют месяцев разработки и тонны хрупкого кода. Любое изменение в плате — и недели переписывания тестов.
А что если вместо тысячи строк кода написать один промпт? «Протестируй этот контроллер, как это сделал бы опытный инженер». И чтобы агент сам решил, как подключиться к плате, какие команды отправить, как интерпретировать ответы и где искать аномалии. Звучит как фантастика? С Claude Projects 2.1 (последняя версия на январь 2026) это рабочая реальность.
Почему Claude Projects, а не очередной Python-скрипт?
Claude Projects — это не просто интерфейс для чата. Это среда для создания автономных AI-агентов, которые умеют работать с инструментами. Через Model Context Protocol (MCP) агент получает доступ к чему угодно: к последовательному порту, к API измерительного оборудования, к базе данных дефектов. Вы не пишете алгоритм, вы описываете задачу на естественном языке и даете агенту доступ к «рукам» — программам и железу.
На январь 2026 года актуальная версия Claude Projects — 2.1. Ключевое нововведение — нативная поддержка MCP-серверов для оборудования через протоколы SCPI (Standard Commands for Programmable Instruments). Это значит, что агент может напрямую общаться с осциллографами Keysight, источниками питания Rohde & Schwarz и другими приборами без написания драйверов.
В чем фишка? Классический автотест для платы — это жесткий сценарий: «подай 5В на вход, измерь ток, считай регистр 0x12». Если плата отвечает не так, тест падает. AI-агент ведет себя иначе. Он видит, что регистр 0x12 вернул 0xFF, и думает: «Это значение означает все включенные биты. Возможно, произошел сброс. Нужно проверить регистр состояния сброса 0x0A». Он исследует проблему, а не констатирует провал.
Это похоже на подход, который я описывал в статье про автономного агента QA для бэкенда, но здесь агент работает не с API, а с физическим миром.
Архитектура: что нужно, чтобы AI увидел плату
Собрать стенд для AI-тестирования проще, чем кажется. Вам не нужен робот с манипулятором (хотя это круто). Достаточно компьютера с Claude Projects и оборудования, которое уже есть в любой лаборатории.
| Компонент | Роль в системе | Примеры |
|---|---|---|
| AI-агент (Claude 3.7 Sonnet) | Мозг. Принимает решения на основе данных от инструментов. | Claude Projects 2.1 с моделью Claude 3.7 Sonnet (последняя на 2026 год, с улучшенным пониманием технических мануалов). |
| MCP-сервер для оборудования | Переводчик. Превращает команды агента в SCPI, Modbus, простые serial команды. | Самописный сервер на Python с библиотеками pyvisa, pyserial, или готовые серверы из репозитория Anthropic. |
| Измерительное оборудование | Глаза и руки. Подает напряжения, считывает токи, сигналы. | Источник питания, мультиметр, осциллограф, программатор. |
| Испытываемая плата (UUT) | Объект тестирования. Подключена через fixture или щупы. | Контроллер освещения на STM32 с силовыми ключами. |
Самое сложное здесь — не собрать железо, а написать MCP-сервер. Но и это не rocket science. В отличие от настройки локальных агентов для смартфонов, где нужно работать с экраном, здесь все протоколы документально описаны.
1 Готовим окружение: от виртуальной среды до токенов
Первая ошибка — запустить Claude Projects в системе, где нет нужных библиотек. Создаем изолированное окружение. Я предпочитаю uv (он быстрее pip на порядок).
# Устанавливаем uv, если нет
curl -LsSf https://astral.sh/uv/install.sh | sh
# Создаем директорию проекта
mkdir claude-pcb-tester && cd claude-pcb-tester
# Создаем виртуальное окружение и активируем
uv venv
source .venv/bin/activate # для Windows: .venv\\Scripts\\activate
# Устанавливаем Claude Projects CLI (актуально на 2026)
uv pip install anthropic-projects
Далее нужен API-ключ от Anthropic. Получаем его в консоли Anthropic. Не храните ключ в коде. Используйте переменные окружения.
export ANTHROPIC_API_KEY='ваш_ключ'
# Или создаем файл .env
echo "ANTHROPIC_API_KEY=ваш_ключ" > .env
Внимание: Claude Projects 2.1 использует модель Claude 3.7 Sonnet по умолчанию. Убедитесь, что ваш аккаунт имеет доступ к этой модели. На январь 2026 года это самая новая версия для Production-задач. Не используйте старые модели типа Claude 3.5 — они хуже справляются с анализом схем и протоколов.
2 Пишем MCP-сервер для нашего оборудования
MCP-сервер — это просто HTTP-сервер, который общается с Claude Projects по специфическому протоколу. Но писать его с нуля не нужно. Используем официальный SDK.
uv pip install mcp
Создаем файл instrument_server.py. Для примера сделаем сервер, который управляет источником питания через SCPI (предположим, это Keithley 2230).
import asyncio
from mcp.server import Server, stdio_server
import pyvisa
# Инициализируем менеджер ресурсов VISA
rm = pyvisa.ResourceManager('@py')
class InstrumentServer(Server):
def __init__(self):
super().__init__("pcb-instrument-server")
self.psu = None # источник питания
self.dmm = None # мультиметр
async def connect_psu(self, address):
"""Подключаемся к источнику питания"""
try:
self.psu = rm.open_resource(address)
self.psu.timeout = 5000
# Задаем начальные параметры
self.psu.write("*RST")
self.psu.write("OUTP OFF")
return {"status": "connected", "model": self.psu.query("*IDN?")}
except Exception as e:
return {"status": "error", "message": str(e)}
async def set_voltage(self, channel, voltage):
"""Устанавливаем напряжение на канале"""
if not self.psu:
return {"status": "error", "message": "PSU not connected"}
self.psu.write(f"SOURce{channel}:VOLT {voltage}")
actual = self.psu.query(f"SOURce{channel}:VOLT?")
return {"status": "set", "channel": channel, "voltage_actual": float(actual)}
# ... другие методы для мультиметра, осциллографа и т.д.
async def main():
server = InstrumentServer()
async with stdio_server() as (read_stream, write_stream):
await server.run(read_stream, write_stream)
if __name__ == "__main__":
asyncio.run(main())
Это упрощенный пример. В реальности нужно добавить инструменты, обработку ошибок, логирование. Но идея ясна: каждый метод сервера становится «инструментом», который агент может использовать.
3 Создаем проект в Claude Projects и загружаем контекст
Запускаем Claude Projects в терминале:
projects run
Откроется веб-интерфейс. Создаем новый проект «PCB Tester». Теперь нужно загрузить контекст — всю информацию, которая понадобится агенту.
- Даташит на микроконтроллер (PDF). Агент будет знать распиновку, регистры.
- Схема тестируемой платы (желательно в PDF или изображении).
- Протокол обмена (документ с командами UART/I2C).
- Чек-лист тестирования от инженеров (текстовый файл).
Загружаем файлы через интерфейс или CLI. Чем больше контекста, тем умнее будет агент. Но не перегружайте его мусором — только нужные документы.
4 Настраиваем инструменты (Tools) в проекте
В настройках проекта добавляем инструмент «Instrument Server». Указываем путь к нашему MCP-серверу. Claude Projects подключится к нему через stdio (как в коде выше).
Теперь в чате проекта у агента появятся доступные инструменты: connect_psu, set_voltage, measure_current и т.д. Он может их вызывать сам, без вашего указания.
5 Пишем промпт-инструкцию для агента
Вот где магия. Не нужно писать код. Пишем инструкцию в чате:
Ты — автономный инженер по тестированию электронных плат. Твоя задача — проверить контроллер освещения модели LC-32 v2.1.
Порядок действий:
1. Подключись к источнику питания Keithley 2230 (адрес USB0::0x05E6::0x2230::...).
2. Подай 12В на разъем VIN платы, ограничив ток 1А.
3. Через последовательный порт (COM4, 115200 8N1) отправь команду *IDN? и убедись, что плата отвечает версией прошивки >2.0.
4. Протестируй каждый из 32 каналов ШИМ: установи duty cycle 50%, измерь напряжение на выходе мультиметром. Ожидаемое напряжение ~2.5В.
5. Если на любом канале напряжение вне диапазона 2.4-2.6В, отметь этот канал как дефектный и продолжай тест.
6. По окончании сгенерируй отчет в формате JSON с перечнем дефектов и общим вердиктом (PASS/FAIL).
Используй инструменты, которые тебе доступны. Если оборудование не отвечает, попробуй переподключиться. Если плата ведет себя странно, исследуй проблему глубже — проверь напряжения на стабилизаторах, считай регистры статуса.
И нажимаем Enter. Агент начнет работать. Он будет самостоятельно вызывать инструменты, анализировать ответы, принимать решения. Вы можете наблюдать за его мыслями в реальном времени.
Где собака зарыта: нюансы, которые не покажут в туториалах
В теории все гладко. На практике агент может сделать странные вещи. Вот типичные грабли:
- Агент слишком много думает. Вместо того чтобы быстро пройти чек-лист, он может углубиться в исследование аномалии, которая на самом деле — погрешность измерения. Нужно четко указывать в промпте: «Если отклонение менее 5%, считай тест пройденным».
- Проблемы с временными задержками. Агент отправит команду на включение питания и сразу запросит измерение. Но плате нужно 100 мс для запуска. В MCP-сервере добавляйте
time.sleep(0.1)или умные ожидания. - Стоимость. Claude 3.7 Sonnet — не дешевая модель. Один сеанс тестирования может стоить $2-5. Но сравните с зарплатой инженера за день работы. Для массового производства это все равно выгодно.
Кстати, о стоимости: если нужно тестировать тысячи плат, возможно, стоит использовать локальную модель через Ollama. Но здесь есть подвох. Локальные модели (даже Llama 3.2 90B) хуже понимают техническую документацию и чаще галлюцинируют с протоколами. Риск пропустить брак выше.
А что если…? Ответы на частые вопросы
Можно ли использовать для тестирования аналоговых плат (усилители, фильтры)?
Да, но нужен более сложный MCP-сервер, который умеет работать с осциллографом и генератором сигналов. Агент может подавать синус, измерять АЧХ и сравнивать с эталоном.
Как интегрировать это в CI/CD для производства?
Claude Projects имеет API. Вы можете запускать агента из скрипта после сборки каждой партии. Результаты теста — JSON — отправлять в базу данных или Jira.
Что делать, если оборудование уникальное и для него нет драйверов?
Напишите простой MCP-сервер, который отправляет сырые команды по RS-232. Агент разберется. В этом его сила — он работает с абстракцией «инструмент», а не с конкретным протоколом.
Агент ошибается. Кто виноват?
Всегда. Виноват промпт. Или недостаточный контекст. Или «творческий» подход модели. Всегда нужен человек для аудита результатов первых партий. Но после настройки агент работает стабильнее уставшего инженера в пятницу вечером.
Если вы хотите глубже погрузиться в автоматизацию тестирования, не только железа, но и ПО, посмотрите профессию Инженер по автоматизации тестирования. Там учат не только Selenium, но и современным подходам, включая AI.
Итог: зачем это все?
Потому что будущее тестирования — не в более умных скриптах, а в более умных агентах. Скрипт проверяет, соответствует ли поведение ожидаемому. Агент исследует, почему поведение не соответствует, и находит корневые причины. Он читает даташиты, которых вы не видели. Он помнит, что на прошлой партии была проблема с конденсатором C12, и проверяет его в первую очередь.
Claude Projects — не панацея. Это инструмент, который перекладывает нагрузку с инженера на AI. Вы тратите не недели на написание кода, а часы на настройку контекста и промптов. И когда приходит новая ревизия платы, вы не переписываете 80% тестов. Вы просто загружаете новую схему и говорите агенту: «Вот что изменилось, адаптируйся».
Следующий шаг? Мультиагентные системы. Один агент тестирует цифровую часть, другой — аналоговую, третий — тепловые режимы. Они спорят между собой и приходят к консенсусу. Но это уже тема для другой статьи. Как и то, как Claude Code может генерировать код для таких систем.
А пока — подключите свой первый источник питания к Claude Projects. И наблюдайте, как AI впервые в жизни щупает реальный мир. Это стоит того.