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

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

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

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

  • 1C:EDT с открытым проектом – либо позвольте edt-bridge-mcp поднять headless EDT.
  • Установленная локально платформа 1С:Предприятие, совместимая с версией проекта. Она нужна для edt_dump_external_object (сборка .epf и .erf) и для edt_update_infobase: 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 со страницы Releases – там же лежит SHA256SUMS.txt – или соберите его, как описано ниже.
  2. Скопируйте jar в 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, без окна: scripts/run-headless.ps1 -Workspace <ws> на Windows либо scripts/run-headless.sh --workspace <ws> на macOS и Linux. scripts/toggle-headless.ps1 включает и выключает его одним действием, а запущенную EDT с интерфейсом это никогда не трогает. Запустить интерфейс на рабочей области: 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, а исключение – сообщением об ошибке инструмента. Несработавшая точка расширения, повтор имени инструмента и имя, затеняющее собственные инструменты обвязки, громко отвергаются при обнаружении: молча пропавший плагин оставил бы агента без инструментов и без объяснения.

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

Последнее обновление 12 сентября 2026 г.

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