Skip to main content

bsl-ctx

Точная справка по платформе 1С:Предприятие для агента-разработчика.

bsl-ctx собирает из файлов справки .hbk установленной платформы 1С базу данных о типах, методах, свойствах, событиях, перегрузках, параметрах и доступности по средам — и отдаёт её агенту через MCP-сервер. Без запуска самой 1С.

Что это и чего не делает

Делает: поиск по естественным формулировкам («хеш SHA256 от файла»), карточки сущностей с сигнатурами и примерами, списки членов типа, связи типов (что возвращает / чем расширяется), самоориентацию агента (версия платформы, схема), пункты «Стандартов разработки 1С» по задаче, коду диагностики или фрагменту кода. Шесть платформенных инструментов MCP и два инструмента стандартов, CLI с теми же командами, и Markdown-, и JSON-ответ.

Не делает: не запускает 1С, не выполняет код, не подключается к информационной базе. Справка читается один раз из .hbk при сборке БД; агент работает с готовым read-only файлом.

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

Нужен uv и установленная платформа 1С:Предприятие (из неё читается справка .hbk). Пакет ставится из PyPI, клонировать репозиторий не нужно: сборка БД и подключение к агенту — одна команда.

1. Собрать БД одной командой

uvx bsl-ctx setup

bsl-ctx setup — единственная команда установки: находит установленную платформу 1С, собирает из её справки корпус и БД продукта, (опционально) обогащает данными «Инструментов разработчика» и печатает готовую команду подключения MCP. Артефакты ложатся в каталог данных — ~/.local/share/bsl-ctx/ на Linux (~/Library/Application Support/bsl-ctx на macOS, %LOCALAPPDATA%\bsl-ctx на Windows), не в рабочий проект и не в репозиторий.

uvx bsl-ctx setup --no-ir                  # без обогащения ИР
uvx bsl-ctx setup --platform 8.3.27.1688   # версий несколько
uvx bsl-ctx setup --rebuild                # пересобрать

Шаг ИР необязателен и не обрывает сборку: без сети или --no-ir БД всё равно собирается — теряется только обогащение (avail_ir, guid, расширения).

2. Подключить к агенту

setup печатает два варианта — claude mcp add … (Claude Code) и блок .mcp.json (любой клиент). Путь к собранной БД подставляется автоматически, номера версии пакета в команде нет — .mcp.json переживает обновления без правок.

claude mcp add bsl-ctx -- uvx --from bsl-ctx \
    bsl-ctx serve --db ~/.local/share/bsl-ctx/bsl-context-8.3.27.1688.sqlite

Проверить подключение — у агента вызвать platform_info (должен вернуть schema_version: 0.6.0). serve без --db сам найдёт единственную или свежую по версии БД в каталоге данных — абсолютный путь можно убрать.

Обновление

Номер новой версии знать не нужно — @latest ставит последнюю с PyPI:

uvx --from bsl-ctx@latest bsl-ctx setup --rebuild --platform 8.3.27.1688

.mcp.json проектов при этом не трогается: подключение живёт без номера версии, а незакреплённый uvx сам подхватывает новую версию пакета — serve обновится при следующем запуске агента. --rebuild пересобирает БД и при обновлении пакета не обязателен (формат БД стабилен, несовпадение схемы serve встретит внятной ошибкой с командой пересборки); --platform нужен, только если платформ несколько.

Каталог данных и сопровождение

команда что делает
bsl-ctx list собранные БД с версиями и размерами
bsl-ctx clean [--all] удалить промежуточное (corpus, дамп ИР); --all — и БД

Каталог данных переопределяется переменной BSL_CTX_DATA_DIR или флагом --data-dir.

Несколько проектов 1С

Файл БД — справочник по платформе, а не по конфигурациям: один bsl-context-8.3.27.1688.sqlite подключается к нескольким рабочим проектам (у каждого свой .mcp.json с тем же абсолютным путём), различаясь только целевой версией (BSL_CTX_TARGET_VERSION). Отдельная БД нужна лишь под другую версию платформыsetup соберёт её рядом, list покажет обе.

Ручная сборка (пошагово)

setup оркеструет те же команды; ниже — если нужен контроль каждого шага. Команды запускаются через uvx из пакета в PyPI (в клоне репозитория то же самое — uv run bsl-ctx …); артефакты по умолчанию пишутся в каталог данных.

# 1. корпус справки из установленной платформы → каталог данных/corpus.sqlite
uvx bsl-ctx capture /opt/1cv8/x86_64/8.3.27.1688

# 2. (опционально) дамп «Инструментов разработчика» → каталог данных/dump
uvx bsl-ctx ir-dump RDT1C/ -o ~/.local/share/bsl-ctx/dump
uvx bsl-ctx validate-dump ~/.local/share/bsl-ctx/dump

# 3. БД продукта (без шага 2 — уберите --dump)
uvx bsl-ctx build \
    --corpus ~/.local/share/bsl-ctx/corpus.sqlite \
    --db ~/.local/share/bsl-ctx/bsl-context-8.3.27.1688.sqlite \
    --dump ~/.local/share/bsl-ctx/dump

# 4. проверить и подключить
uvx bsl-ctx doctor --db ~/.local/share/bsl-ctx/bsl-context-8.3.27.1688.sqlite
uvx bsl-ctx serve --db ~/.local/share/bsl-ctx/bsl-context-8.3.27.1688.sqlite

Инструменты

У агента шесть платформенных инструментов и два инструмента стандартов (команды CLI зовут те же функции как bsl-ctx <name>; имена совпадают, кроме platform_info, который в CLI пишется через дефис — platform-info). Каждый отдаёт и компактный Markdown (content), и структурированный JSON (structuredContent) из одного результата.

инструмент что делает
search Поиск по естественной формулировке. Если все токены вместе ничего не находят, ослабляет запрос (отбрасывает служебные/частые слова) и помечает результат layer: "relaxed" с dropped: […] — агент видит, что ответ на укороченный вопрос.
describe Карточка сущности по ref или имени: описание, сигнатуры, доступность, пример, версии, устаревание. Поля ИР (guid, доступ по индексу, доступность по средам) — только когда есть.
members Члены типа (методы/свойства/события) с пагинацией и фильтром.
signature Перегрузки сигнатуры: параметры с типами, возвращаемое значение.
relations Связи типа: что возвращает, элементом какой коллекции является, какой тип расширяет (base) и кто его расширяет (extensions).
platform_info Самоориентация: версия платформы, схема, счётчики, стабильность ref, блок стандартов.
std_rules Какие пункты «Стандартов разработки 1С» применимы к задаче: запрос своими словами, фрагмент кода или код диагностики (acc:/bslls:/v8cs:). Карточки пунктов с парой «Правильно/Неправильно».
std_get Полный пункт стандарта по ref из std_rules; include=['toc'] — оглавление документа.

Поток работы агента: searchrefdescribe/members/signature/relations; перед обработчиком события, текстом запроса или серверным вызовом — std_rules (полный пункт — std_get по его ref).

Стандарты разработки едут готовой БД в колесе (контент зеркала zeegin/v8std, CC0) — эта часть не требует setup. ref стандартов (std437#7.1) стабилен между пересборками: номер пункта — из самого стандарта, а не из сборки.

Пример ответа search "хеш SHA256 от файла":

**7 найдено** (слой: relaxed; отброшено: «от») — показано 7
1. `member:6010` **SHA256** — member (ХешФункция) с 8.3.3  score 21
2. `type:1276` **ХешированиеДанных** — type с 8.3.1  score 18
…

Почему БД не в комплекте

Контент справки 1С:Предприятие проприетарен и не попадает в репозиторий. Модель распространения — «каждый генерит свою БД»: публичны только инструменты (этот проект), а не собранные данные. Поэтому распространять готовый bsl-context.sqlite нельзя — но собрать его из своей установки платформы можно командой setup выше.

Источник установки

Печатаемая setup команда подключения берёт значение --from в порядке: флаг --from самой команды, переменная BSL_CTX_INSTALL_SOURCE, умолчание — имя пакета в PyPI без закрепления версии (.mcp.json не меняется при обновлениях). Переменную задают для локальных проверок: путь к собранному колесу или git-URL — тогда и напечатанная команда подключения будет ссылаться на этот источник.

Лицензия и атрибуция

MIT — см. LICENSE. Проект опирается на знание формата .hbk, ранее разобранное в mcp-bsl-platform-context (MIT, © 2025 alkoleft). Данные описания платформы (девять таблиц: контексты, параметры, общие типы, коллекции, расширения, слова языка запросов, сокращения имён) и пары «единственное ↔ множественное» имя объекта метаданных берутся из макетов ирПлатформа/Templates и модуля ирКэш конфигурации «Инструменты разработчика» tormozit'ы (MIT, © 2007–2026 С. А. Старых, https://github.com/tormozit/RDT1C) — как статический снимок, без живого прогона 1С. ИР не модифицируется и её частью проект не является.


Разработка (для контрибьюторов)

uv sync                    # зависимости (включая dev-группу)
uv run pytest              # юнит-тесты на синтетических контейнерах
uv run pytest -m platform  # интеграционные на локальной платформе (опционально)
uv run ruff check          # линтер
uv run mypy                # строгая проверка типов (src/)

Полная архитектура — docs/architecture.md. Интеграционные тесты скипаются без каталога платформы (BSL_CTX_PLATFORM_DIR или pytest --platform-dir).

Выпуск релиза (для сопровождающего)

uv build      # dist/bsl_ctx-<версия>-py3-none-any.whl + sdist
uv publish    # токен: pypi.org → Account settings → API tokens

Токен передаётся флагом --token или переменной UV_PUBLISH_TOKEN. Перед выпуском поднять версию в pyproject.toml — единственный источник, __version__ читается из метаданных пакета — и добавить запись в CHANGELOG.md.

Стандарты разработки 1С (bsl_ctx/std.sqlite в колесе) собираются из зеркала zeegin/v8std, закреплённого по commit sha в src/bsl_ctx/std/build.py (MIRROR_COMMIT). Обновление зеркала — осознанный шаг: клонировать зеркало на новый sha, поправить константу, пересобрать и закоммитить файл вместе с константой:

git clone https://github.com/zeegin/v8std /tmp/v8std
git -C /tmp/v8std checkout <новый-sha>
$EDITOR src/bsl_ctx/std/build.py        # MIRROR_COMMIT = <новый-sha>
uv run bsl-ctx std-build --mirror /tmp/v8std --out src/bsl_ctx/std.sqlite

Release files for bsl-ctx 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bsl-ctx 1.5.0
File Size Uploaded
bsl_ctx-1.5.0.tar.gz 2.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for bsl-ctx 1.5.0
File Interpreter ABI Platform
bsl_ctx-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 5.2 MB

Release files / bsl_ctx-1.5.0.tar.gz

Download URL bsl_ctx-1.5.0.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
872703e857e33d13e19ebb6bff8fda1b0b1f13a6633dada570f8d2ae6b332a68
BLAKE2b-256 checksum
How to use checksums
16ad5adfd5b3d2841f4efb0360d3170441d027b3e5dfea40e6a638e6db9402e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / bsl_ctx-1.5.0-py3-none-any.whl

Download URL bsl_ctx-1.5.0-py3-none-any.whl
Size 2.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
7a292dcd5e4f504f49cfa3dd4a3156eb712e40f0ebfc967bfb2e3c9b94bd96b9
BLAKE2b-256 checksum
How to use checksums
660ac5a5172a2a252b2a09a1ccb914a0b285e8205b286e5faa7ac5fc255070b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

This release

1.5.0 This release

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page