Установка Answer42
Python-пакет
Рекомендуемая установка из PyPI:
pipx install 'answer42[screenshot,linux-window-control]'
# или без pipx:
python3 -m venv .venv
. .venv/bin/activate
pip install 'answer42[screenshot,linux-window-control]'
Windows запускать из интерактивной desktop-сессии:
pipx install "answer42[screenshot,windows-window-control]"
# или:
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install "answer42[screenshot,windows-window-control]"
Установка для разработки из git checkout:
git clone https://gitlab.com/platform42/answer42-mcp.git answer42
cd answer42
python3 -m venv .venv
. .venv/bin/activate
pip install -e '.[screenshot,dev,linux-window-control]'
Сборка конфигураций 1С
Сборка через временную файловую ИБ: ibcmd infobase config import и ibcmd config save (приоритетный способ, не требует Конфигуратора). Такой путь создаёт переносимый .cf с compatibility mode XML-исходников:
python scripts/build_cf.py src/cf build/MCPTestManager.cf
Сборка тестовой конфигурации:
python scripts/build_cf.py src/client_cf build/MCPTestClient.cf
Скрипт сам добавляет src в sys.path, поэтому PYTHONPATH=src не нужен. Если ibcmd отсутствует, скрипт автоматически переключается на Конфигуратор/DESIGNER через 1cv8. На PowerShell синтаксис PYTHONPATH=src python ... не работает; если когда-нибудь нужно задать переменную окружения вручную, используйте $env:PYTHONPATH="src"; python ....
В Git хранятся только XML-исходники; CF — генерируемые артефакты. В локальном checkout start_session использует build/MCPTestManager.cf только при точном совпадении content fingerprint с src/cf/; иначе пересобирает его выбранной локальной платформой. Для встроенной demo-базы действует то же правило для build/MCPTestClient.cf и src/client_cf/. Релизный wheel получает CF из GitLab CI, где они собираются закреплённой платформой 1С 8.3.27.2342.
На Linux без серверных компонентов Answer42 может запускать менеджер и клиент напрямую через файловую базу (/F). На Windows это также поддерживается; запускайте MCP из интерактивной пользовательской сессии, потому что UI automation и screenshots требуют desktop session.
Фоновый режим на Windows (скрытый рабочий стол)
По умолчанию на Windows менеджер и клиент тестирования открываются на текущем рабочем столе пользователя. Чтобы они работали в фоне и не мешали работе (аналог Xvfb на Linux), задайте:
$env:ONEC_MCP_WINDOWS_DESKTOP = "hidden"
или в MCP-конфиге "env": {"ONEC_MCP_WINDOWS_DESKTOP": "hidden"}. Для каждой сессии Answer42 создаёт в WinSta0 два скрытых рабочих стола (Answer42-<scope>-<session>-manager и ...-client) и запускает 1cv8c на них через STARTUPINFO.lpDesktop. Окна 1С не появляются на экране, не забирают фокус и не видны в панели задач. Screenshots снимаются через PrintWindow, auto-maximize работает на скрытом рабочем столе.
Ограничения: процесс MCP по-прежнему должен работать в интерактивной сессии пользователя (скрытый рабочий стол принадлежит его window station); Windows service в session 0 не подходит. Посмотреть окна на скрытом рабочем столе можно только через screenshot.
Рекомендации для агентов
Answer42 больше не поставляет bundled skills. Рабочие рекомендации находятся в descriptions MCP-инструментов и встроенных MCP prompts. Команды answer42 install-skills и answer42 skills-install сохранены как совместимые no-op и ничего не копируют.
MCP-сервер в OpenClaw
OpenClaw хранит MCP-серверы в mcp.servers. Добавьте Answer42 как stdio server:
/mcp set Answer42={"command":"answer42","args":[],"env":{"ONEC_MCP_CREDENTIALS_FILE":"/secure/path/credentials.json"},"enabled":true,"timeout":600,"connectionTimeoutMs":30000,"toolFilter":{"exclude":["credentials_list"]}}
Для OpenClaw новых инсталляций задавайте внешний MCP request timeout для Answer42 с запасом: рекомендуемое значение — 600 секунд (timeout: 600 или эквивалентный requestTimeoutMs: 600000). Не ставьте его равным самым длинным внутренним timeout'ам tools: например, если агент вызывает wait_client_idle(timeout=180) или tabular_document_save(watchdog_timeout=180), внешний MCP timeout должен быть больше этого значения и покрывать накладные расходы транспорта, сериализацию результата, диагностику и медленные ответы web-клиента 1С. Для тяжёлых отчётов, сохранения больших табличных документов или очень медленных web-баз допустимо увеличить внешний timeout до 900–1200 секунд, но обычные интерактивные действия лучше держать с меньшими watchdog_timeout, чтобы зависания диагностировались структурированным ответом, а не обрывались внешним MCP timeout.
ONEC_MCP_CREDENTIALS_FILE указывает на локальный JSON с логинами и паролями. В штатном режиме агент вызывает start_session(base_url="...") без username/password, а Answer42 сам подставляет креды внутри MCP-процесса. Для сохранения или обновления записи используйте tool credentials_save(url="...", username="...", password="..."), для удаления — credentials_remove(url="..."), для проверки наличия записи — credentials_check(base_url="..."); эти tools не возвращают ни логин, ни пароль, ни маску пароля. credentials_list рекомендуется скрывать через toolFilter.exclude, чтобы агент не видел список URL-шаблонов. Если в start_session/connect_test_client передан пароль вида ***, Answer42 считает это плейсхолдером и выдаёт явную ошибку вместо попытки авторизации.
После изменения MCP config перезапустите или перезагрузите OpenClaw gateway, если hot reload не подхватил конфигурацию.
Smoke checks
python -m pytest -q
python scripts/build_cf.py src/cf build/MCPTestManager.cf
python scripts/build_cf.py src/client_cf build/MCPTestClient.cf
Полный E2E:
# Linux/X11: DISPLAY=:99 python scripts/e2e_stable.py
# Windows: python scripts/e2e_stable.py