Перейти к содержимому
EDT-Bridge
Русский
Esc
navigateopen⌘Jpreview
На этой странице

Установка и сборка

Требования, установка вручную без обвязки и сборка плагина из исходников.

Чтобы пользоваться мостом

  • 1C:EDT с открытым проектом – либо позвольте edt-bridge-mcp поднять headless EDT.
  • Для edt_dump_external_object (сборка .epf/.erf) и edt_update_infobase: установленная локально платформа 1С:Предприятие, совместимая с версией проекта – EDT управляет ею для компиляции бинарника и обновления информационной базы.

Чтобы собрать плагин из исходников (для участников разработки – конечные пользователи ставят через pipx)

  • JDK под бандлы EDT – EDT 2026.2 поставляется с class-файлами Java 25, поэтому для компиляции против них нужен JDK 25 (скрипт сборки определяет уровень по пулу и сам находит подходящий JDK, в том числе установленный рядом с EDT). Байткод jar по-прежнему нацелен на Java 17, поэтому одна сборка грузится и в версиях EDT, работающих на Java 17.
  • Локальный пул бандлов EDT. На Windows p2-пул %USERPROFILE%\.p2\pool\plugins; на macOS пул внутри установленного компонента .../1C/1CE/components/1c-edt-<ver>-x86_64/1cedt (<ver>).app/Contents/Eclipse/plugins (shell-сборка определяет его сама).

Установка вручную (без обвязки)

Обвязка pipx доставляет jar и запускает EDT за вас. Чтобы запускать плагин самому:

  1. Возьмите jar – со страницы ReleasesSHA256SUMS.txt) или соберите (ниже).
  2. Скопируйте в dropins/ EDT – Windows .../installations/<EDT>/1cedt/dropins/, macOS .../1c-edt-<ver>-x86_64/1cedt (<ver>).app/Contents/Eclipse/dropins/ (создайте, если нет). Держите там только один jar EDT-Bridge – два заставят Equinox взять произвольный.
  3. Перезапустите EDT. Плагин поднимает MCP-сервер на http://127.0.0.1:8770/mcp (или на следующем свободном порту, если 8770 занят).

Запустить EDT headless (без GUI): scripts/run-headless.ps1 -Workspace <ws> (Windows) или scripts/run-headless.sh --workspace <ws> (macOS / Linux); scripts/toggle-headless.ps1 включает/выключает одним действием. Запущенную GUI EDT это никогда не трогает. Запустить GUI на рабочей области: scripts/run-gui.ps1 -Workspace <ws>.

Оба лаунчера отказываются поднимать вторую EDT на уже занятой рабочей области и не снимают блокировку, которую держит живой экземпляр, – общая проверка лежит в scripts/edt-common.ps1. Запуск 1cedt.exe руками эту проверку минует: второй экземпляр падает с “рабочая область уже используется”, а если сделать так дважды – остаётся ворох недозапущенных окон.

MCP-клиент может говорить с плагином и напрямую по HTTP (без обвязки) – добавьте { "edt-bridge": { "type": "http", "url": "http://127.0.0.1:8770/mcp" } } в его .mcp.json. Сервер говорит простым JSON-RPC по HTTP (initialize / tools/list / tools/call).

Переменные окружения

Настройки у обвязки и у плагина называются одинаково – EDT_BRIDGE_*, – но читают их разные стороны: обвязка при своём запуске, плагин внутри EDT. У большинства настроек обвязки есть флаг-двойник, он описан в Командах.

Читает обвязка edt-bridge-mcp

Переменная Флаг По умолчанию Что задаёт
EDT_BRIDGE_PORT --port 8770 порт, на котором обвязка ищет мост
EDT_BRIDGE_PORT_SCAN 20 сколько портов подряд начиная с этого просматривать: занятый порт плагин отдаёт следующему свободному, и в этом же окне мост потом ищется
EDT_BRIDGE_TOKEN пусто токен инструментов записи: уходит заголовком Authorization: Bearer и передаётся в JVM headless-экземпляра
EDT_BRIDGE_WORKSPACE --workspace воркспейс EDT, который поднимать при автозапуске headless
EDT_BRIDGE_EDT_DIR --edt-dir самая свежая установка каталог установки EDT (.../1cedt)
EDT_BRIDGE_START_TIMEOUT --start-timeout 360 сколько секунд ждать поднимающийся мост
EDT_BRIDGE_AUTOSTART --no-autostart включён 0 – не поднимать ничего и работать только прокси
EDT_BRIDGE_WINDOW_WAIT 90 сколько секунд команда gui ждёт появления окна EDT: большой воркспейс грузится минутами, поэтому промах не ошибка, а повод повторить команду
EDT_BRIDGE_LANG язык системы язык справки и сообщений обвязки (ru / en)
EDT_BRIDGE_NO_PLUGINS выкл 1 – не искать плагины обвязки: запуск только со штатными возможностями
EDT_BRIDGE_PLUGIN_INDEX адрес реестра пакетов, который self-update передаёт pip для плагинов, установленных по имени проекта (у установок из git источник свой)

Читает плагин внутри EDT

Переменная Свойство запуска По умолчанию Что задаёт
EDT_BRIDGE_PORT -Dedt.bridge.port 8770 порт MCP-сервера; занят – берётся следующий свободный
EDT_BRIDGE_TOKEN -Dedt.bridge.token со страницы параметров общий секрет, который требует каждый инструмент записи
EDT_BRIDGE_ALLOW_EVALUATE выключено 1 разрешает edt_evaluate – исполнение произвольного BSL против живой информационной базы; то же самое включается на странице параметров
EDT_BRIDGE_AGENT_IDLE_MINUTES -Dedt.bridge.agent-idle-minutes 30 через сколько минут простоя агент конфигуратора останавливается сам; off – держать вечно

Заданное при запуске сильнее сохранённого: переменные окружения и свойства -Dedt.bridge.* имеют приоритет над страницей параметров EDT – так обвязка и управляет headless-экземпляром.

Сборка из исходников

Без Maven (быстрее всего – локальный JDK + пул EDT, без сети):

# Windows – по умолчанию: -Pool %USERPROFILE%\.p2\pool\plugins, -JdkHome %JAVA_HOME%
powershell -ExecutionPolicy Bypass -File scripts/build-nomaven.ps1
# macOS / Linux – --pool автоопределяется из пула установленного 1C:EDT
./scripts/build-nomaven.sh

Даёт build/io.github.keyfire.edtbridge_<версия>.<таймстамп>.jar. Maven + Tycho (mvn -f pom.xml clean verify, сначала правьте edt-bridge.target) доступен для CI.

Релизы собираются из локально построенного jar – CI не может его скомпилировать (SDK-бандлы 1C:EDT проприетарны и не скачиваются анонимно). Мейнтейнер запускает scripts/build-nomaven.ps1 -Dist, кладёт jar в dist/, ставит тег vX.Y.Z и пушит тег; .github/workflows/release.yml прикладывает jar + контрольную сумму. Проверить приложенный файл можно пересборкой из тегированного исходника и сравнением.

Плагины обвязки

Не всё, что живёт рядом с мостом, годится для публичного репозитория – справочные материалы под чужой лицензией, инструменты, завязанные на внутренний сервис. Такое живёт в отдельных пакетах, установленных в окружение самой обвязки, а обвязка находит их через группу точек расширения edt_bridge.tools: объявленные ими инструменты перечисляются рядом с инструментами моста и выполняются самой обвязкой – то есть отвечают даже тогда, когда ни одна EDT не запущена.

Установка:

pipx inject edt-bridge-mcp <пакет>

Когда pipx работает поверх uv (pipx >= 1.15)

pipx на uv собирает окружение БЕЗ pip, и три привычных приёма перестают работать так, как читаются:

  • --pip-args="--no-deps" одним словом доезжает до uv уже разобранным и падает его экраном использования. Флаг передаётся отдельным аргументом: pipx inject edt-bridge-mcp <пакет> --pip-args "--no-deps".
  • <venv>/Scripts/python -m pip отвечает “No module named pip”. pipx runpip edt-bridge-mcp при этом РАБОТАЕТ – pipx сам уходит в uv pip – и остаётся штатной дорогой к окружению.
  • переустановка плагина БЕЗ --no-deps переустанавливает и ядро и не может заменить edt-bridge-mcp.exe, пока его держит живая MCP-сессия (“failed to persist … Отказано в доступе”). Сам плагин при этом обычно успевает встать – итог смотреть по edt-bridge-mcp plugins, а не по коду выхода.

Форма обновления плагина руками, не трогающая занятое ядро:

python -m pipx runpip edt-bridge-mcp -- install --upgrade --no-deps <пакет>

(если плагин живёт в закрытом реестре – добавить --index-url <адрес индекса>).

edt-bridge-mcp self-update проходит этой же дорогой по всем установленным плагинам сам (--plugins-only – только плагины): каждый обновляется из источника своей установки – git-репозитория либо реестра пакетов по имени проекта; адрес реестра задаёт переменная EDT_BRIDGE_PLUGIN_INDEX.

edt-bridge-mcp plugins показывает, что подключено, – пакеты, точки расширения и добавленные ими инструменты, – а при сломанном плагине печатает сообщение загрузчика. EDT_BRIDGE_NO_PLUGINS=1 выключает поиск плагинов.

Плагин объявляет инструменты в pyproject.toml:

[project.entry-points."edt_bridge.tools"]
package-name = "my_package.tools:tools"

Значение – Tool (из edt_bridge_mcp.plugins), их список либо функция без аргументов, возвращающая то или другое. Tool несёт дескриптор MCP – name, description, JSON-схему аргументов – и обработчик, который вызывает обвязка; строка становится текстовым результатом, любое другое JSON-сериализуемое значение печатается как JSON, а исключение – сообщением об ошибке инструмента. Несработавшая точка расширения, повтор имени инструмента и имя, затеняющее собственные инструменты обвязки, громко отвергаются при обнаружении: молча пропавший плагин оставил бы агента без инструментов и без объяснения.

Обработчик, объявивший ещё и параметр bridgehandler(arguments, bridge), – получает функцию bridge(имя_инструмента, аргументы) -> str: один вызов к живому мосту, в ответе текст его результата. EDT ради этого не запускается: без работающего моста функция поднимает RuntimeError с внятным сообщением, и плагин отвечает запиской вместо того, чтобы повесить вызвавшего на минуты headless-старта. Старая обвязка зовёт такой обработчик одним аргументом, как раньше, – дайте bridge значение по умолчанию None.

Последнее обновление 28 августа 2026 г.

Эта страница была полезной?