Архитектура сервиса
Как устроен AI Agent for 1C: какие компоненты участвуют в обработке задачи, какие у агента есть инструменты, как обеспечивается безопасность и куда мы движемся. Для большинства пользователей знать эти детали не обязательно — нужны тем, кто хочет понять «как именно» и «что под капотом».
1. Где живут ваши данные
Сервис состоит из двух физических контуров. Ваш контур — ваша 1С:Предприятие и оборудование. Наш контур — облачные серверы оператора. Граница между ними жёстко контролируется.
На стороне 1С
База данных, конфигурация, документы, регистры. Расширения «Адаптер» и «Панель Агента» работают внутри 1С, в адресном пространстве вашего сервера приложений 1С. Конфигурация целиком на наши серверы не передаётся — на индексацию уходят только производные данные (имена объектов, типы, связи).
Облачные сервисы
Управляющие сервисы (identity / skill / worker / шлюз / портал / админка), PostgreSQL с per-tenant изоляцией, edge-Caddy с Let's Encrypt. Пароли от ваших 1С и ключи AI-провайдеров хранятся зашифрованными; вне сессии работы агента они не используются.
2. Компоненты
На стороне 1С (BSL-расширения)
Адаптер 1С
HTTP-сервис в 1С — точка входа для запросов агента (/hs/mcp/...).
Один файл на все базы клиента, ничего не зашивается внутрь. Реализован на BSL.
Внутри 1С виден как обычное расширение «Конфигурация → Расширения».
Панель Агента
Управляемая форма со списком задач, чатом, событиями в реальном времени, прогрессом и подтверждениями. Уникальна для каждой базы — в неё прошиты адрес сервиса и ваш ключ доступа.
В нашем облаке (Docker-сервисы)
identity-server
Control plane: учётные записи клиентов, пользователи кабинета, выпуск JWT-токенов (RS256 + JWKS), шифрованное хранилище кредов 1С-баз и BYOK-ключей AI-провайдеров, лимиты, аудит, привязка demo-пользователей к клиенту.
skill-server
Навыки агента (skills) с семантическим поиском по pgvector, кэш знаний на задачу (TaskKnowledge), внешний веб-поиск через Tavily, конфигурации 1С для подсказок агенту.
worker
Менеджер задач. Принимает задачи из Панели, запускает Claude Code Agent SDK (или альтернативный runtime: Cursor / opencode) как подпроцесс, держит WebSocket с Панелью для live-обновлений, ведёт историю запусков.
mcp-gateway
SSE-шлюз протокола MCP (Anthropic Model Context Protocol). По JWT-токену клиента определяет доступные scope и регистрирует инструменты per-сессии. Точка входа для внешних AI-инструментов (Cursor / Claude Code / n8n / свой код).
client-portal
Личный кабинет: регистрация, базы, ключи для интеграций, BYOK, расход AI, скачивание расширений с прошитыми кредами под каждую базу.
admin (backend + frontend)
Админ-панель для оператора: CRUD клиентов, выпуск токенов, выдача демо-доступа, просмотр демо-логинов, лимиты, тарифы, live-дашборд задач, отчёт по расходу AI, аудит-лог.
claude-auth-broker
Используется на тарифах с встроенной AI-подпиской вместо BYOK. Держит OAuth-токены подписки, безопасно рефрешит их и раздаёт сервисам по защищённому каналу. На чистом BYOK не требуется.
PostgreSQL · Caddy · WireGuard
PostgreSQL 16 с pgvector в роли основной СУБД, Caddy 2 с Let's Encrypt на входе, WireGuard-туннель для контролируемого outbound к AI-провайдерам в подписочном режиме.
3. Как агент работает с вашей 1С
Полный путь одной задачи — от того момента, когда вы написали её в Панели, до результата:
-
Постановка задачи
Вы пишете задачу в Панели Агента. Панель шлёт её в
workerпо HTTPS (через edge-Caddy) с JWT-токеном, который сидит внутри расширения. -
Подготовка контекста
workerсоздаёт запись задачи в БД, формирует системный промпт (роль агента, правила безопасности, описание конфигурации вашей 1С), запрашивает уskill-serverпохожие навыки и подгружает TaskKnowledge. -
Запуск AI-агента
workerзапускает Claude Code SDK (или Cursor / opencode — выбирается в настройках). Агенту даётся MCP-сервис с 14 инструментами и переменные окружения с идентификацией клиента и базы. -
Обращение в вашу 1С
Когда агент вызывает MCP-инструмент (
query_1c,batch_1cи т.п.),mcp-gatewayпо JWT понимает, к какой базе обращаться, получает изidentityрасшифрованные креды и шлёт HTTP-запрос на ваш Адаптер 1С. -
Выполнение в 1С
Адаптер на BSL внутри вашей 1С выполняет запрос от имени того пользователя, под которым он работает, и возвращает результат. Если у этого пользователя 1С нет прав на эти данные — агент получит отказ.
-
События в Панель
Параллельно
workerшлёт события в Панель через WebSocket: что агент сейчас делает, какие документы создаёт, какие запросы выполняет. Вы видите всё в реальном времени. -
Подтверждения перед записью
Перед операциями, изменяющими данные (создание, проведение, удаление), Адаптер может потребовать вашего подтверждения — это настраивается на стороне 1С.
-
Завершение и история
Когда задача готова, агент формирует краткую сводку. История запуска сохраняется и доступна в Панели и в кабинете.
4. Инструменты агента (14 шт.)
Это набор MCP-инструментов (по стандарту Anthropic Model Context Protocol), которые
mcp-gateway предоставляет агенту. Перечень фиксирован — агент не может
«придумать» свой инструмент. Каждый инструмент требует определённого scope в JWT.
| Инструмент | Назначение | Scope | Куда обращается |
|---|---|---|---|
session_info_1c | Информация о текущем сеансе 1С | mcp:read | Ваша 1С через Адаптер |
metadata_1c | Метаданные объектов: реквизиты, типы, ссылки | mcp:read | Ваша 1С через Адаптер |
query_1c | Запрос на встроенном языке 1С / выборка данных | mcp:read | Ваша 1С через Адаптер |
batch_1c | Создание / изменение / проведение объектов (батч) | mcp:write | Ваша 1С через Адаптер |
invoke_1c | Вызов произвольного метода/процедуры в 1С | mcp:write | Ваша 1С через Адаптер |
get_skill | Поиск похожего навыка по семантике | mcp:read | skill-server |
get_run_history | История событий текущего запуска | mcp:read | worker |
skill_report | Запись нового навыка по результатам задачи | mcp:write | skill-server |
invalidate_knowledge | Пометить устаревшее знание (после правки конфигурации 1С) | mcp:write | skill-server |
run_task | Запустить подзадачу (рой агентов) | mcp:tasks | worker |
task_status | Узнать статус подзадачи | mcp:read | worker |
task_stop | Остановить подзадачу | mcp:tasks | worker |
web_search | Поиск в интернете (внешняя документация 1С, ИТС) | mcp:web | skill-server → Tavily API |
sleep | Пауза в работе агента (служебная утилита) | — | — |
5. Жизненный цикл задачи
Статусы задачи в системе:
| Статус | Что значит |
|---|---|
pending | Задача создана, ожидает свободного worker'а |
running | Агент выполняет задачу |
paused | Задача приостановлена пользователем |
completed | Задача успешно завершена |
failed | Ошибка выполнения |
cancelled | Задача отменена пользователем |
В Панели Агента вы дополнительно увидите визуальные фазы — это отображение того, чем агент сейчас занят:
- «План генерируется» — LLM строит план шагов в начале задачи.
- Дерево событий — live-прогресс по шагам плана (MCP-вызовы, ответы 1С).
- Чат и подтверждения — реплики агента и кнопки «подтвердить / отказать».
- «Финализация» — финальная анимация перед показом результата (LLM пишет сводку).
6. Безопасность
Аутентификация и авторизация
- Все обращения внутри облака — по JWT RS256.
identity-serverподписывает, остальные сервисы проверяют публичным ключом из JWKS. - В Панели токен прошит внутрь расширения; время жизни — 1 год; компрометация → отзыв в портале без переустановки 1С.
- Каждый токен ограничен scope — что разрешено делать с ним. Сейчас в
self-service выпускается 4 scope:
mcp:read,mcp:write,mcp:tasks,mcp:web.
Шифрование данных
- Логин/пароль вашей 1С и BYOK-ключи AI-провайдеров шифруются AES-GCM с привязкой к идентификатору клиента и базы (AAD-binding). Расшифровка возможна только в контексте задачи именно этого клиента и этой базы.
- Пароли из портала и админки назад не возвращаются — виден только статус «сохранены / не заданы». Для демо-сценария — отдельное исключение, чтобы клиент мог открыть базу в браузере (для администратора — отдельная страница «Демо-доступы»).
- HTTPS на входе — Let's Encrypt с автоматическим обновлением.
Учёт и квоты
- Каждый запрос к AI-модели пишется в журнал расхода с разбивкой по входным/выходным токенам и токенам кэша.
- Лимиты считаются на session-окно 6 часов и 168 часов (неделя): окно открывается с первой задачи и закрывается через установленный интервал, потом счётчик обнуляется. Это привычно для тех, кто пользуется Claude Pro.
- При работе в демо-базе действия учитываются по реальному пользователю кабинета —
через заголовок
X-1C-Userи привязку 1С-логина к вашему клиенту. Так лимиты и аудит не «смешиваются» между разными тестирующими.
Изоляция
- Один клиент не может обратиться к данным другого: проверка идёт по
client_idв JWT и в шифровании AAD. - PostgreSQL на отдельной VM, наружу не публикуется.
- Outbound к AI-провайдерам в подписочном режиме идёт через выделенный WireGuard-туннель, который даёт предсказуемый IP, отдельный от прочей инфраструктуры.
7. Технологический стек
| Слой | Технологии | Назначение |
|---|---|---|
| 1С-расширения | BSL, .cfe | Адаптер (HTTP-сервис) и Панель Агента (управляемая форма) |
| Backend-сервисы | Python 3.10+ · FastAPI · uvicorn | identity / skill-server / mcp-gateway / client-portal / admin-backend |
| Worker | Python · Django ORM · Claude Code SDK · WebSocket | Запуск агентов, события в Панель, история запусков |
| Admin-frontend | Next.js 15.5 · React 19 · TanStack Query · Tailwind | Админ-панель оператора |
| Portal-frontend | HTMX · Tailwind · Jinja2 | Личный кабинет клиента |
| База данных | PostgreSQL 16 · pgvector | Хранение всех данных сервиса с per-tenant изоляцией |
| AI-стек | Claude Code SDK · Cursor · opencode · Anthropic API · OpenAI · Google · OpenRouter | Запуск агентов (выбор runtime) и BYOK на разные провайдеры |
| Эмбеддинги | intfloat/multilingual-e5-large |
Семантический поиск навыков на pgvector (русский+английский) |
| Веб-поиск | Tavily API | Внешний поиск (ИТС, документация) |
| Edge / TLS | Caddy 2 · Let's Encrypt | Reverse-proxy и автосертификаты |
| Outbound | WireGuard | Туннель к AI-провайдерам в подписочном режиме |
| Orchestration | Docker · docker compose | Развёртывание и обновления |
8. Дорожная карта
Что планируем сделать дальше — крупными мазками.
В ближайших планах
Деперсонализация данных
Встроенный механизм маскирования ФИО, ИНН, телефонов, расчётных счетов на стороне 1С перед отправкой запросов агенту. Настраиваемый список полей. Обратный словарь — только на машине клиента; в облако уходят токены.
Аудит-лог изменений и откат
Вкладки «Изменения» и «Объекты» в Панели: что и когда менял агент, гиперссылки на изменённые объекты 1С, возможность отката — поштучно или целиком по задаче с контролем хронологии и конфликтов.
Память агента между задачами
Поиск по саммари прошлых задач — «сделай как в прошлый раз», поиск аналогичных
решений. Оперативная память в разрезе пользователя — инструменты
remember / recall и инъекция в контекст при старте.
Файлы, скриншоты, табличные документы
Прикрепление файлов к задаче (ТЗ, исходники), скачивание готовых результатов. Вставка скриншота из буфера прямо в чат — агент распознаёт через vision-модель. Формирование результата как табличный документ 1С (СКД / программная генерация).
Управление навыками
Инвалидация по TTL и сигналам от неудачных применений. Дедупликация семантических дублей. Таксономия по конфигурациям 1С (БП / ЗУП / ERP / УТ). Мониторинг полезности: реально ли навык помог.
Тарифы и оплата
Платёжный шлюз для приёма оплаты, ежемесячные тарифные планы с разными лимитами, автосписание/продление, выгрузка закрывающих документов в кабинете клиента.
Закрытый контур (полная локальная работа)
Локальные LLM-модели
Полностью автономная работа агента без облачных API — данные не покидают контур заказчика. Связка исполнитель + аналитик: Qwen3-Coder для кодинга и tool use, DeepSeek-R1-Distill для reasoning. Запуск через Ollama, переключение под тип задачи.
On-premise развёртывание
Полный комплект для установки сервиса на инфраструктуре заказчика: docker-compose, инструкции, обновления. Целевое оборудование для локальных моделей — рабочая станция с RTX 4090 24GB или эквивалент (≈2-3 тыс. руб./мес. электричества, интернет не нужен после первичной загрузки моделей).
Air-gapped режим
Поддержка работы без интернета вообще — с фильтрованным outbound только до разрешённого списка endpoint'ов либо с полностью изолированной сетью. Все обновления приходят через подписной канал доставки артефактов.