1c-develop - переносимая Docker-среда для разработки, проверки и агентной работы с 1С-проектами.
Идея простая: пользователь скачивает готовый image и сразу получает 1С runtime, VNC, OneScript, Vanessa, onec-hbk-bsl, OACS и 1C-aware context. Репозиторий 1c-develop нужен только для разработки самого образа; обычный пользователь может начать с одного контейнера.
Граница ответственности проекта — воспроизводимый контейнер, 1С runtime, VNC/RDP, тестовые утилиты и orchestration для запуска агентных инструментов. Актуальность локального code index и содержание platform help принадлежат другим слоям; их роли и deployment-сценарии описывает каноническая карта границ продукта.
- 1С:Предприятие
8.5.1.1343в desktop/runtime контейнере. - TigerVNC/Xfce на
127.0.0.1:5900и RDP на127.0.0.1:3389. - OneScript, Vanessa Runner, Vanessa Automation и
onec-hbk-bsl. onec-agentдля 1C-specific операций: bootstrap, MCP config, BSL diagnostics/formatting, skills.- OACS/ACS как прямой слой памяти, evidence и context capsules, плюс local Codex/OACS runtime skill.
- External 1C Context MCP contract. Для справки, стандартов, snippets и
metadata используйте
1c_hbk_helper/onec-context-mcp; image не встраивает context packs и не скачивает ITS/BSL docs во время сборки. - Опциональный PostgreSQL 1C для server/client-server сценариев.
Изюминка проекта: контейнер не просто запускает 1С. Он подготавливает корректный контекст для IDE-агента: где искать справку, какие skills читать, как строить OACS capsule, куда писать evidence и как не терять проектные решения между итерациями.
Минимальный путь не требует clone этого репозитория. Скачайте image, поднимите контейнер и выполните container-side quick start:
docker pull ghcr.io/mussolene/1c-developer:8.5.1.1343
mkdir -p .onec/data .onec/cache
docker run -d \
--name 1c-dev \
--platform linux/amd64 \
-p 127.0.0.1:5900:5900 \
-v onec-license-store:/var/1C/licenses \
-v "$PWD/.onec/data":/mnt/data \
-v "$PWD/.onec/cache":/home/usr1cv8/.1cv8/1C/1cv8 \
-e ONEC_RUNTIME_MODE=shell \
ghcr.io/mussolene/1c-developer:8.5.1.1343
docker exec -it 1c-dev onec-agent quickstartОткройте VNC: 127.0.0.1:5900. На рабочем столе будет штатный launcher 1С, а
quickstart зарегистрирует demo file DB в списке баз и попробует создать её
через ibcmd.
По умолчанию одновременно доступны TigerVNC на 127.0.0.1:5900 и RDP на
127.0.0.1:3389. Для RDP используйте пользователя usr1cv8 с паролем 1cdev,
либо задайте ONEC_RDP_USER / ONEC_RDP_PASSWORD.
Если используете сетевой HASP, сразу смонтируйте nethasp.ini:
docker run -d \
--name 1c-dev \
--platform linux/amd64 \
-p 127.0.0.1:5900:5900 \
-v onec-license-store:/var/1C/licenses \
-v "$PWD/.onec/data":/mnt/data \
-v "$PWD/.onec/cache":/home/usr1cv8/.1cv8/1C/1cv8 \
-v "$PWD/nethasp.ini":/opt/1cv8/conf/nethasp.ini:ro \
-e ONEC_RUNTIME_MODE=shell \
ghcr.io/mussolene/1c-developer:8.5.1.1343Без лицензии всё равно доступны VNC, launcher, OACS CLI,
OneScript, Vanessa tooling и onec-hbk-bsl. Лицензия нужна для действий, реально
запускающих 1С runtime: создание/загрузка ИБ, vrunner, ibcmd,
compileepf/decompileepf.
Полезные команды без mounted project:
docker exec -it 1c-dev onec-agent doctor
docker exec -it 1c-dev onec-agent context-mcp-config
docker exec -it 1c-dev vrunner version
docker exec -it 1c-dev onec-hbk-bsl --versionДля 1C knowledge lookup поднимите внешний 1c_hbk_helper / onec-context-mcp
и подключите IDE/MCP client к URL из onec-agent context-mcp-config:
по умолчанию http://localhost:8050/mcp.
Для работы с конкретным проектом смонтируйте его в /workspace/project и
запустите bootstrap:
docker run -d \
--name 1c-dev \
--platform linux/amd64 \
-p 127.0.0.1:5900:5900 \
-v onec-license-store:/var/1C/licenses \
-v "$PWD":/workspace/project \
-v "$PWD/.onec-runtime/data":/mnt/data \
-v "$PWD/.onec-runtime/cache":/home/usr1cv8/.1cv8/1C/1cv8 \
-e ONEC_RUNTIME_MODE=shell \
-e ONEC_PROJECT_ROOT=/workspace/project \
ghcr.io/mussolene/1c-developer:8.5.1.1343
docker exec -it 1c-dev onec-agent bootstrapПосле bootstrap дайте IDE-агенту прочитать .agent/bootstrap-report.md и
дальше выполняйте 1С-зависимые команды через docker exec.
Новые local OACS stores создаются без passphrase; если проект уже использует
passphrase-wrapped OACS state, передайте -e OACS_PASSPHRASE=... локально и не
коммитьте это значение.
Поддерживаются два чистых пути:
- локальная ручная активация: используйте Docker volume
onec-license-store(/var/1C/licenses) и не удаляйте его после активации; - сетевой HASP: подготовьте
nethasp.iniи смонтируйте его в контейнер.
По умолчанию контейнер включает поиск аппаратной лицензии 1С (UseHwLicenses=1)
для профилей root и usr1cv8. Это важно для VNC-сессии, vrunner,
ibcmd, compileepf/decompileepf и ручных команд через docker exec.
Запустить штатный UI для ручной активации:
docker exec -d -u usr1cv8 -e DISPLAY=:0 1c-dev /opt/1cv8/current/1cv8cПример для сетевого HASP:
chmod 644 ./nethasp.ini
docker run -d \
--name 1c-dev \
--platform linux/amd64 \
-p 127.0.0.1:5900:5900 \
-v "$PWD":/workspace/project \
-v "$PWD/.onec-runtime/data":/mnt/data \
-v "$PWD/.onec-runtime/cache":/home/usr1cv8/.1cv8/1C/1cv8 \
-v "$PWD/nethasp.ini":/opt/1cv8/conf/nethasp.ini:ro \
-e ONEC_RUNTIME_MODE=shell \
-e ONEC_PROJECT_ROOT=/workspace/project \
ghcr.io/mussolene/1c-developer:8.5.1.1343Файл nethasp.ini не коммитьте. Достаточно смонтировать его в
/opt/1cv8/conf/nethasp.ini; при старте контейнер синхронизирует этот файл в
профили root и usr1cv8, чтобы одинаково работали GUI, vrunner, ibcmd и
другие runtime-команды.
Если используете helper-команды из этого репозитория, задайте только локальный путь к файлу:
export NETHASP_INI_PATH=/absolute/path/to/nethasp.ini
make -C /path/to/1c-develop agent-up PROJECT_PATH="$PWD"NETHASP_INI_PATH можно положить в локальный .env, но сам nethasp.ini, его
содержимое и данные лицензии не должны попадать в git, OACS memory или
context capsule.
Агент остается в Cursor, Codex, VS Code или другом IDE на host. Контейнер дает
runtime, проверки и MCP config; 1C facts приходят из внешнего
onec-context-mcp.
onec-agent bootstrap создает в смонтированном проекте:
.agent/oacs/с project-local ACS state;.agent/bootstrap-report.mdи инструкции для IDE-агента;.agent/context-capsules/,.agent/mcp/и.agent/reports/с context/evidence артефактами.
Если .agent/AGENTS.md еще нет, bootstrap создаст IDE entrypoint. Если файл уже существует, bootstrap его не перезаписывает.
Полный список bootstrap-артефактов: bootstrap.md.
Правило работы:
- память и evidence пишутся напрямую через
acs; onec-agentиспользуется только как 1C adapter для MCP config, diagnostics и runtime checks;- контейнер не пересоздается для каждой задачи.
Подробнее: docs/agent-ready.md.
Если вы работаете из clone этого репозитория, доступны transport-команды:
| Команда | Назначение |
|---|---|
make env |
создать .env из .env.example, если его еще нет |
make doctor |
проверить Docker, image, staging, license volume и agent mode |
make pull |
скачать настроенный developer image |
make first-start |
запустить optional local license UI |
make up |
поднять shell/agent-ready runtime для самого 1c-develop workspace |
make up-file-db |
запустить file DB mode после настройки лицензирования |
make up-server |
запустить server mode вместе с PostgreSQL 1C |
make ui-smoke |
прогнать минимальный Vanessa UI smoke |
make xunit-smoke |
прогнать xUnit smoke по EPF |
make agent-context |
transport-helper для OACS context capsule внутри контейнера |
make agent-bsl-check |
запустить диагностику onec-hbk-bsl |
make agent-epf-roundtrip |
разобрать и собрать EPF внутри mounted проекта |
Пример из 1С-проекта:
make -C /path/to/1c-develop agent-up PROJECT_PATH="$PWD"
make -C /path/to/1c-develop agent-doctor PROJECT_PATH="$PWD"
make -C /path/to/1c-develop agent-context PROJECT_PATH="$PWD" TASK="текущая задача"
make -C /path/to/1c-develop agent-exec PROJECT_PATH="$PWD" CMD="onec-agent context-mcp-config"
make -C /path/to/1c-develop agent-epf-roundtrip PROJECT_PATH="$PWD" EPF_PATH=tests/xunit/epf/Test.epfДля сетевого HASP добавьте к agent-up NETHASP_INI_PATH=/absolute/path/to/nethasp.ini.
Обычный make up поднимает shell/agent-ready контейнер без окна добавления базы.
VNC поднимается по умолчанию и доступен только на localhost. 1С installer ставит
штатный launcher и иконки через компонент desktop_icons; при старте контейнер
копирует этот launcher на рабочий стол и готовит ibases.v8i для пользователя
usr1cv8. Имя и путь базы задаются через ONEC_FILE_DB_NAME и
ONEC_FILE_DB_PATH.
После ручного создания или восстановления файловой базы обновите список баз без перезапуска контейнера:
docker exec -it 1c-dev onec-agent ibase add --name "SmallBusiness30" --path /mnt/ib/sb30 --home /home/usr1cv8 --owner usr1cv8:grp1cv8Порты:
127.0.0.1:5900- TigerVNC;127.0.0.1:3389- RDP;5432- PostgreSQL 1C, только если поднятmake up-server.
Server ports 1C наружу по умолчанию не публикуются. Для локальной разработки и file DB они не нужны.
Runtime modes, platform staging, volumes, architecture и MCP-контракт описаны в docs/runtime-details.md.
Быстрая проверка agent-ready слоя:
docker exec -it 1c-dev onec-agent doctor
docker exec -it 1c-dev acs run --label "readiness" --scope project --json -- onec-agent doctor
docker exec -it 1c-dev acs resume --scope project --jsonВ репозитории есть минимальный Vanessa smoke для связки TestManager -> TestClient.
make ui-smokeRunner: scripts/run-ui-smoke.sh. Артефакты сохраняются в ./volumes/1c-dev/data/workspace/artifacts.
Для xUnit smoke:
make xunit-smokeRunner: scripts/run-xunit-smoke.sh. Скрипт пишет status.txt даже при ошибках раннера/таймаутах и сохраняет process snapshot в artifacts/xunit/processes.txt.
Для проверки, что контейнер умеет разобрать и собрать существующую обработку проекта:
make agent-epf-roundtrip PROJECT_PATH=/path/to/1c-project EPF_PATH=tests/xunit/epf/Test.epfRunner: scripts/agent-epf-roundtrip.sh. Он
использует mounted project в /workspace/project, вызывает
vrunner decompileepf и vrunner compileepf, затем оставляет результат в
.agent/runtime/epf-roundtrip/<имя-epf>/.
Для pull-based onboarding сборка не нужна: достаточно скачать image и выполнить onec-agent quickstart. onec-agent bootstrap нужен позже, когда смонтирован конкретный проект.
Если готового image нет или вы меняете Dockerfile:
make env
make buildДля локальной сборки с ITS нужны ITS_LOGIN и ITS_PASSWORD. Если они пустые, build targets запросят их один раз и сохранят в .env. Не коммитьте .env.
По умолчанию compose и helper-скрипты используют IMAGE_NAMESPACE=ghcr.io/mussolene. Для private registry задайте свой namespace в .env.
client/- developer image с 1С runtime, OneScript zip install и agent-ready слоем.base/- базовые Linux/Desktop images.pg/- PostgreSQL 1C image.agent/- container-sideonec-agent, registry и local OACS skill.scripts/- host transport commands и build/run helpers.artifacts/- runtime overlay, VNC services, configs и smoke assets.docs/- подробности по runtime, OACS workflow и agent-ready режиму.
Workflow .github/workflows/docker-publish.yml публикует:
linux-common-baselinux-desktop-basepostgresql1c-developer
Publish запускается вручную через workflow_dispatch или по git-тегам v*.
.env,.agent/,.local/,.onec-runtime/и локальные volume-данные не коммитятся.nethasp.ini, license data, ITS credentials и OACS DB не должны попадать в git или OACS memory.- Проект сейчас поддерживает 1С platform runtime в
linux/amd64mode. - Compose настроен под локальную разработку, не под production.