Редакция руководства: 22 сентября 2026. Поставка исходников: 0.3.6. Аудитория: системный администратор и команда внедрения.
В архиве — работающий веб-сервис с тремя исполнителями анализа на выбор, но без весов моделей и без Codex CLI. Локальное хранение не означает локальное выполнение AI-анализа: исполнитель задаётся при старте службы через DOCS_MODEL_PROVIDER и не переключается на работающем сервисе.
| Сценарий | Готовность и передача данных |
|---|---|
| Внутренний сервер + общий Codex | Реализовано. БД и оригиналы находятся у организации; текст анализируемого пакета передаётся в Codex. Нужны согласование такой передачи, совместимый CLI и доступ к учётной записи |
| Внутренний сервер + локальная модель, без подписок | Реализовано и подключено: DOCS_MODEL_PROVIDER=local (раздел 6.2). Codex CLI и аккаунт ChatGPT не нужны; исполнителю разрешены только внутренние адреса сети. Проверено на синтетическом vLLM-сервере, не на реальном vLLM с GPU и без оценки качества на русскоязычных договорах |
| Внутренний сервер + облачный вендор | Реализовано: DOCS_MODEL_PROVIDER=openai|deepseek|kimi|anthropic (раздел 6.3). Требуется API-ключ организации; текст пакета уходит выбранному вендору |
| Изолированный сервер без подключения модели | Можно проверять интерфейс, загрузку и хранение. AI-анализ не работает; результаты тестового исполнителя не являются анализом реального договора |
В пакет не входят веса моделей, Codex CLI, Node.js, системные пакеты, node_modules, TLS-сертификаты, пароли, данные пользователей и договоры. Это исходная поставка, не автономный air-gap-инсталлятор. Зависимости нужно получить из доверенного репозитория или перенести через разрешённый контур подготовки.
Скачайте архив, соседний файл SHA-256 и manifest.json со страницы «Локальная установка». На Linux в каталоге скачивания:
sha256sum -c contract-docs-0.3.6.tar.gz.sha256
tar -tzf contract-docs-0.3.6.tar.gzОжидается один верхний каталог contract-docs-0.3.6/. Файл SOURCE-REVISION.txt содержит commit исходников; MANIFEST.sha256 — хеши каждого включённого файла. SHA-256 подтверждает целостность, но не является цифровой подписью издателя; сам архив получать по доверенному HTTPS-каналу.
| Каталог | Назначение |
|---|---|
| server/ | HTTP-сервис, SQLite, анализ, извлечение, правила и нормативный корпус |
| public/ | Веб-интерфейс и опубликованные документы; без внешних шрифтов и CDN |
| deploy/onprem/ | Пример systemd-службы, параметров окружения, nginx и проверка извлечения в песочнице |
| references/, specs/ | Руководство установки, архитектура, описание ограниченной нормативной базы |
| scripts/, test/ | Проверки и синтетические фикстуры; тесты не используют реальные договоры |
Из публичной поставки исключены история Git, эксплуатационный журнал, конфигурация действующего VPS, его установочные скрипты, базы, загрузки, runtime, логи и секреты. Профили подрядчиков в server/rules.mjs — стартовые данные исходного продукта: перед применением в другой организации проверьте и адаптируйте их. Доступность исходников по ссылке не меняет лицензии внешних зависимостей и моделей.
- Linux x86-64 с systemd, локальным диском и работающими user namespaces/bubblewrap. Команды ниже рассчитаны на Debian/Ubuntu-подобную среду; другое размещение требует адаптации.
- Node.js не ниже 22.13 с
node:sqlite; поставляемая служба ожидает/usr/bin/node. Python 3, poppler-utils, antiword, bubblewrap, tar, curl и nginx. Установку Node.js выполняйте из одобренного организацией источника с проверкой дистрибутива; не используйте случайный install-скрипт из интернета. - Для пилота с внешним Codex: стартовый ориентир 2–4 vCPU, 4 ГБ RAM и диск по объёму оригиналов/backup. Это не измеренная ёмкость и не sizing GPU. Лимиты службы 1 ГБ/2 CPU нужно проверить на собственных пакетах.
- Внутреннее DNS-имя, сертификат доверенного УЦ, доступ пользователей по HTTPS. Порт приложения 3107 слушает только loopback; снаружи его не открывать.
- Один процесс приложения и один узел записи SQLite; БД не размещать на сетевой файловой системе. Каждый аккаунт имеет свой каталог договоров, общего пространства подразделения с ролями пока нет.
sudo apt-get update
sudo apt-get install python3 poppler-utils antiword bubblewrap nginx curl ca-certificates
/usr/bin/node --version
npm --versionНа действующем стенде проверены Ubuntu 22.04.5 x86-64, Node 22.23.2, npm 10.9.8, Python 3.10.12, bubblewrap 0.6.1 и Codex CLI 0.152.1. Это сведения о проверенном стенде, не рекомендация оставлять зависимости без обновлений безопасности.
Для воспроизводимости зафиксируйте версии OS, Node, npm, Python, bubblewrap, извлекателей и CLI в акте установки. Не подменяйте работоспособность песочницы отключением изоляции; на системах с ограничениями AppArmor/user namespaces подготовьте узкое согласованное правило, а не глобальное ослабление защиты.
GPU не нужна для текущего варианта с внешним Codex. После разработки локального исполнителя рекомендуем начать со следующих конфигураций; это ориентиры пилота, не подтверждённая производительность.
| Вариант | Аппаратная конфигурация | Модель для испытаний |
|---|---|---|
| Экономный | 8 физических CPU-ядер, 64 ГБ RAM, NVMe 1 ТБ, GPU 24 ГБ VRAM | Qwen3.5-9B, проверенная Q4–Q8; 1 активный запрос |
| Рекомендуемый | 12–16 физических ядер, 128 ГБ RAM, 2 × 2 ТБ NVMe RAID1, GPU 48 ГБ VRAM, backup отдельно | Qwen3.5-27B, Q4–Q6; два этапа последовательно; начать с контекста 32–64K |
| С запасом для подразделения | Inference: 24 ядра, 256 ГБ RAM, GPU 96 ГБ либо 2 × 48 ГБ; отдельные web/БД и backup | Проверить 27B/35B, длинный контекст и 2 запроса после доработки очереди |
Две GPU по 48 ГБ не превращаются автоматически в одну 96 ГБ. При двух разных моделях учитывать память обеих или задержку смены весов. 27B в BF16 — около 54 ГБ только полезных весов, поэтому для карты 48 ГБ нужна совместимая квантизация.
Дополнительно сравнить Qwen3.6-27B; Qwen3.6-35B-A3B — при приоритете пропускной способности; Mistral-Small-3.2-24B-Instruct-2506 — как другое семейство для ревью. Точные ID, первичные источники, лицензии, расчёт памяти, электропитание и приёмка приведены в разделе 9 архитектуры. Рекомендации не подтверждают качество на российских договорах: необходим размеченный контрольный набор.
Не закупайте оборудование до проверки полного комплекта и этапа ревью на выбранной модели. Недостаток контекста обрабатывается явно; существующая нумерация документа сохраняется.
Ниже — первая установка на отдельном хосте. Если служба, пользователь или каталог уже существуют, остановитесь и используйте процедуру обновления в разделе 8. Архив сначала проверьте из непривилегированного аккаунта.
tar -xzf contract-docs-0.3.6.tar.gz
cd contract-docs-0.3.6
sha256sum -c MANIFEST.sha256
npm ci --omit=dev --ignore-scripts
npm run check
npm test
node deploy/onprem/preflight.mjsnpm test использует искусственный исполнитель и проверяет механику, не качество модели. preflight.mjs дополнительно извлекает синтетический DOCX через настоящий bubblewrap; его нужно успешно выполнить и от пользователя службы после установки.
sudo useradd --system --home-dir /var/lib/contract-docs --shell /usr/sbin/nologin contract-docs
sudo install -d -m 0755 /opt/contract-docs/releases/0.3.6
sudo cp -a . /opt/contract-docs/releases/0.3.6/
sudo install -d -m 0755 /opt/contract-docs/releases/0.3.6/public/downloads
sudo install -m 0644 ../contract-docs-0.3.6.tar.gz ../contract-docs-0.3.6.tar.gz.sha256 ../manifest.json /opt/contract-docs/releases/0.3.6/public/downloads/
sudo chown -R root:root /opt/contract-docs/releases/0.3.6
sudo chmod -R a+rX /opt/contract-docs/releases/0.3.6
sudo install -d -m 0700 -o contract-docs -g contract-docs /var/lib/contract-docs
sudo ln -s /opt/contract-docs/releases/0.3.6 /opt/contract-docs/current
sudo -u contract-docs /usr/bin/node /opt/contract-docs/current/deploy/onprem/preflight.mjs
sudo install -d -m 0700 /etc/contract-docs
sudo install -m 0600 deploy/onprem/contract-docs.env.example /etc/contract-docs/contract-docs.env
sudoedit /etc/contract-docs/contract-docs.envАрхив не содержит сам себя. Три файла из каталога скачивания копируются отдельно в public/downloads/, чтобы ссылки публикации работали и на новой установке. Исходники внутри архива не зависят от доступа к приватному Git.
В параметрах замените DOCS_ORIGIN на реальный HTTPS origin без /docs и без завершающего слеша; DOCS_CODEX_ADMIN — на логин назначенного владельца приложения. Если анализ будет выполнять локальная модель или облачный вендор, вместо блока Codex раскомментируйте соответствующий блок примера и укажите DOCS_MODEL_PROVIDER (раздел 6). Пример change-me оставлять нельзя. .env в каталоге проекта автоматически не читается: параметры загружает EnvironmentFile службы.
| Параметр | Значение |
|---|---|
| DOCS_ORIGIN | Например, https://contracts.example.org; должен совпадать с адресом браузера, иначе сервер отклонит запись |
| DOCS_CODEX_ADMIN | Логин владельца общего подключения; не пароль и не системный пользователь |
| DOCS_MODEL_PROVIDER | codex (по умолчанию), local или облачный вендор; см. раздел 6. Задаётся один раз при установке |
| DOCS_CODEX | Только для режима codex: абсолютный путь к совместимому CLI. Без него интерфейс/хранилище доступны, анализ — нет |
| DOCS_DATA | /var/lib/contract-docs: БД, оригиналы, сохранённые задания и авторизация приложения |
| DOCS_RUNTIME | /run/contract-docs: systemd RuntimeDirectory на tmpfs для разовых пакетов |
| DOCS_PORT | 3107; при изменении синхронно поправить reverse proxy |
sudo install -m 0644 deploy/onprem/contract-docs.service /etc/systemd/system/contract-docs.service
sudo systemd-analyze verify /etc/systemd/system/contract-docs.service
sudo systemctl daemon-reload
sudo systemctl enable --now contract-docs
curl --fail http://127.0.0.1:3107/docs/health
sudo systemctl is-active contract-docsОжидается health со status=ok, version=0.3.6, а также provider и external — вид исполнителя и признак передачи текста наружу. Health не проверяет подключение модели, извлечение, качество анализа или наличие свободного диска.
- Настройте DNS и получите сертификат через одобренный внутренний УЦ. Не создавайте исключения проверки TLS в браузере.
- Возьмите
deploy/onprem/nginx.conf.example, замените имя сервера и пути сертификатов. Добавьте отдельный virtual host в принятую на сервере схему nginx; не перезаписывайте существующий конфиг. - Проверьте
sudo nginx -t, затемsudo systemctl reload nginx. - Пока доступ закрыт для остальных, зарегистрируйте в веб-интерфейсе логин, указанный в
DOCS_CODEX_ADMIN, и уникальный пароль от 10 символов. Только после этого откройте доступ сотрудникам: иначе чужой человек может занять логин владельца. - Проверьте вход, выход, повторный вход и изоляцию двух тестовых аккаунтов. Самостоятельная регистрация открыта всем, кто имеет сетевой доступ; ограничьте сервис VPN/внутренней сетью.
Конфигурация сохраняет префикс /docs/ до приложения, отключает буферизацию тела запросов и не пишет access log данного маршрута. Это часть защиты разовых пакетов; проверьте также WAF, аварийные журналы, swap и дампы ядра. Внешние proxy не должны добавлять контентные логи или складывать тела запросов на диск.
Документы и архив на маршрутах /docs/local-installation/ и /docs/downloads/ доступны без входа. Это намеренное свойство публикации, а не доступ к договорам. Если внутри организации эти материалы тоже закрытые, ограничьте маршруты на reverse proxy. Не кладите внутренние сведения в публикуемые документы.
Исполнитель один на процесс и фиксируется при старте: DOCS_MODEL_PROVIDER=codex (по умолчанию), local или один из облачных вендоров. Скрытая смена провайдера и запасной выход в облако запрещены архитектурой; смена режима — это остановка службы, правка EnvironmentFile и запуск. Прежние анализы хранят закреплённого исполнителя и не пересчитываются.
Для этого варианта нужен совместимый Codex CLI, установленный администратором из одобренного официального дистрибутива. Способ установки описан в официальном руководстве CLI; вход по коду — в официальном руководстве авторизации.
Перед использованием проверьте поддержку флагов, реально вызываемых server/codex.mjs: login --device-auth, exec --ignore-user-config --ignore-rules --ephemeral --output-schema, выключение инструментов и необходимые параметры конфигурации. Версии CLI различаются; наличие команды codex ещё не доказывает совместимость. Не удаляйте защитные флаги ради успешного запуска.
Войдите назначенным владельцем → «Настройки» → «Подключить общий Codex» → завершите вход на официальной странице. Авторизация относится ко всему приложению; сотрудникам не нужны API-ключи или личные входы Codex. Не копируйте auth.json с рабочего VPS, root или чужого аккаунта.
До работы согласуйте условия использования учётной записи и передачу документов с организацией. Первый реальный прогон выполняйте только на синтетическом договоре: убедитесь, что выполнены оба этапа, ссылки ведут на исходные пункты и можно выгрузить отчёт. Успешные автоматические тесты не заменяют этот прогон.
Режим local не использует Codex CLI, аккаунт ChatGPT и API-ключи: анализ выполняет внутренний inference-сервер с OpenAI-совместимым API vLLM. Владельцу не нужно ничего подключать в интерфейсе — конфигурацию задаёт администратор установки в EnvironmentFile.
| Переменная | Значение |
|---|---|
| DOCS_MODEL_PROVIDER | local |
| DOCS_LOCAL_ENDPOINT | Адрес vLLM. Разрешены только внутренние адреса: loopback, 10/8, 172.16/12, 192.168/16, fd00::/8. Путь — / или /v1, без параметров, логина и пароля в URL |
| DOCS_LOCAL_MODEL | Идентификатор модели, который сервер отдаёт в /v1/models; ответ с другим id отклоняется |
| DOCS_LOCAL_MODEL_REVISION | Закреплённая ревизия весов; расхождение с ответом сервера переводит исполнителя в состояние ошибки |
| DOCS_LOCAL_TOKENIZER_REVISION | Закреплённая ревизия токенизатора |
| DOCS_LOCAL_CHAT_TEMPLATE_FILE | Файл chat template; читается при старте службы |
| DOCS_LOCAL_CHAT_TEMPLATE_SHA256 | SHA-256 этого файла; несовпадение останавливает запуск |
| DOCS_LOCAL_CONTEXT_WINDOW | Размер контекста; /tokenize сервера должен сообщать max_model_len не меньше этого значения |
| DOCS_LOCAL_API_KEY | Необязательный bearer-токен внутреннего сервера |
| DOCS_LOCAL_TIMEOUT_MS | Необязательный лимит этапа, не больше 30 минут |
| DOCS_LOCAL_TEMPORARY_POLICY | Необязательно; memory-only-attested фиксирует заявление администратора, что сервер не пишет запросы на диск. Это заявление, а не проверка |
Перед каждым обращением адрес endpoint резолвится и проверяется: если хоть один полученный адрес не внутренний, запрос не отправляется (endpoint_forbidden), а проверенный адрес закрепляется за соединением — подмена DNS между проверкой и запросом исключена. Имя вида api.openai.com в DOCS_LOCAL_ENDPOINT не пройдёт эту проверку. Это защита от ошибки конфигурации, а не замена сетевым правилам: default-deny egress на уровне узла остаётся задачей организации (LOC-07).
Что меняется для пользователя: поиск организации по ИНН недоступен и скрыт из карточки, вход Codex в настройках не предлагается, на экране «Исполнитель анализа» показаны закреплённые модель, ревизия весов и контекст, а разовая проверка сообщает, что текст не покидает контур установки.
DOCS_MODEL_PROVIDER=local
DOCS_LOCAL_ENDPOINT=http://10.0.0.15:8000/v1
DOCS_LOCAL_MODEL=Qwen/Qwen3.5-27B-Instruct
DOCS_LOCAL_MODEL_REVISION=<sha весов>
DOCS_LOCAL_TOKENIZER_REVISION=<sha токенизатора>
DOCS_LOCAL_CHAT_TEMPLATE_FILE=/etc/contract-docs/chat-template.jinja
DOCS_LOCAL_CHAT_TEMPLATE_SHA256=<sha256 файла>
DOCS_LOCAL_CONTEXT_WINDOW=65536Измерить срабатывание правил на своей модели: DOCS_MODEL_PROVIDER=local … npm run rules:eval. Отчёт называет исполнителя и модель.
Проверено: запуск службы без Codex CLI, health, статус исполнителя, отказ входа Codex и отказ ИНН-поиска, полный прогрессивный цикл и контроль контекста — на синтетическом vLLM-сервере (test/local-provider.test.mjs, test/local-runner.test.mjs). Не проверено: реальный vLLM с GPU, пропускная способность и юридическое качество на русскоязычных договорах. До такой приёмки режим считается пилотным.
Режим для организаций, которые готовы работать по договору с вендором, но не через общий аккаунт ChatGPT: DOCS_MODEL_PROVIDER принимает openai, deepseek, kimi или anthropic. Нужны DOCS_CLOUD_API_KEY и DOCS_CLOUD_MODEL; DOCS_CLOUD_BASE_URL переопределяет адрес вендора (например, корпоративный шлюз), DOCS_CLOUD_CONTEXT_WINDOW задаёт контекст, DOCS_CLOUD_API_VERSION — версию API Anthropic.
Текст пакета в этом режиме покидает контур организации: условия обработки данных определяет договор с вендором, а не это приложение. Поиск организации по ИНН, как и в локальном режиме, недоступен. Проверено на синтетических HTTP-серверах вендорских протоколов; промышленные прогоны на реальных ключах не выполнялись.
В разделе «Организации» создайте карточку подрядчика. Для ручного ввода обязательно только название; ИНН, если указан, проверяется по контрольным разрядам. Карточки изолированы по аккаунтам, повторный ИНН в одном аккаунте не допускается.
«Заполнить по ИНН через LLM» доступно только в режиме Codex и запускает отдельный поиск через общий вход. В режимах local и облачного вендора кнопка скрыта, а запрос к API отклоняется до расхода часовой квоты. В запрос передаётся только ИНН, не договоры и не содержимое карточки. Поиск ограничен тремя минутами и шестью попытками в час на пользователя; если исполнитель занят, можно заполнить вручную. Веб-поиск разрешён только для этой операции; при анализе договоров он по-прежнему отключён. Настройка CLI: web_search.
Результат — черновик с цитатами, ссылками и датой поиска. LLM может ошибаться: ссылки и совпадение ИНН не доказывают актуальность реестра. Заполненные вручную поля не заменяются. Проверьте реквизиты, раздельно укажите юридический адрес и фактическое расположение команды, затем сохраните карточку. Наличие лицензий и ресурсов требует первичных документов. Поиск можно отменить; при недоступности интернета доступен ручной ввод.
Для Codex CLI 0.152.1 поиску нужен штатный codex-code-mode-host из официального пакета: приложение включает features.code_mode_host только для поиска по ИНН. При анализе договоров он отключён вместе с web_search. Не снимайте ограничения shell, плагинов и браузера, если поиск недоступен. Опциональный живой тест test/organization-live.mjs запускается администратором только с DOCS_LIVE_ORGANIZATION_SMOKE=1 и явно заданным DOCS_SHARED_CODEX_HOME для авторизации этого приложения. Он ищет публичный тестовый ИНН, не сохраняет организацию, печатает runId и типы событий без токенов или пользовательских документов. Такой отчёт отличает недоступность инструментов от корректно выполненного поиска, но не подтверждает юридическую достоверность найденного.
После обновления старые встроенные профили не предлагаются. В существующем договоре нажмите «Выбрать организацию подрядчика». Новые анализы используют выбранную карточку; история, документы, риски и прежние снимки не переписываются. Разовой проверке также нужна организация, но её документы и результаты не сохраняются в хранилище.
Для air-gap-размещения интернет-поиск должен быть отключён; карточки заполняются вручную или из отдельно проверенного offline-справочника. Локальная модель сама по себе не получает доступ к реестрам.
| Проверка | Ожидаемый результат |
|---|---|
| Без входа GET /docs/api/bootstrap | 401; публичные руководство и архив остаются доступны |
| PDF/DOC/DOCX | Текст извлекается изолированно; исходные пункты сохранены. OCR-модуль включён в исходники, но не активирован в интерфейсе; скан без текстового слоя в рабочем режиме требует ручной обработки |
| Повторная загрузка | Точный дубликат не создаёт второй файл в той же области; похожий текст не объединяется автоматически |
| Два этапа | Первичный результат и ревью различаются; сбой ревью не выглядит завершённой проверкой |
| Редакции/риски | Новый комплект не переписывает старые источники риска; принятие решения остаётся за сотрудником |
| Разовый пакет | Нет договора/анализа в постоянной БД; удаление, TTL или перезапуск очищают пакет; скачанный отчёт вне контроля сервиса |
| Нормы | Видны версия и reference_only. Корпус содержит 29 пунктов в шести модулях, актуальность редакций не подтверждена юристом; нельзя заявлять полную правовую проверку |
| Ресурсы | /run на tmpfs, каталог службы 0700, нет core dumps/swap для службы; достаточно диска и RAM |
| Backup/restore | Восстановленная копия содержит согласованные БД и оригиналы; случайные документы других аккаунтов недоступны |
Диагностика: systemctl status contract-docs, journalctl -u contract-docs --since today, свободное место и состояние песочницы. Не публикуйте журналы целиком: сначала проверьте, нет ли в них конфиденциального содержимого. 403 при записи обычно требует сверить HTTPS origin и настройки proxy; ошибка извлечения — проверить bubblewrap от пользователя службы; ошибка модели — совместимость CLI и общий вход.
Перед остановкой согласуйте окно работ, завершите загрузки и анализы, предупредите о потере разовых пакетов. Простой cp contracts.sqlite работающего WAL-хранилища не является согласованной резервной копией.
Для небольшого пилота — остановить службу и сохранить весь каталог данных вместе с конфигурацией в защищённый backup. Архив содержит и учётные данные Codex: храните его зашифрованным, ключ отдельно; никогда не публикуйте рядом с исходниками.
sudo sh -eu -c '
test ! -e /var/backups/contract-docs/before-update.tar.gz
systemctl stop contract-docs
trap "systemctl start contract-docs" EXIT
install -d -m 0700 /var/backups/contract-docs
umask 077
tar -czf /var/backups/contract-docs/before-update.tar.gz -C / var/lib/contract-docs etc/contract-docs
'test должен завершиться успешно; при существующем backup выберите новое уникальное имя, не перезаписывайте его. Если копирование завершилось ошибкой, не продолжайте обновление. Этот backup целостный благодаря остановке; шифрование и перенос в отдельный внутренний контур выполняются по политике организации.
Обновление: проверить новую поставку → распаковать в новый каталог releases → установить зависимости и прогнать тесты без подключения к рабочей БД → проверить миграции на копии → backup → остановить службу → атомарно заменить current → запустить → проверить health, вход и синтетический сценарий. Старый release сохраняется. Зависимости и код не обновляются поверх работающего каталога.
Откат: если схема данных обратно совместима, остановить службу, вернуть current на предыдущий release и запустить. Если нет — на изолированном стенде восстановить согласованную БД и оригиналы из backup, проверить, затем выполнить согласованное переключение. Не накладывать восстановление поверх новых данных вслепую. Восстановление ведёт к потере изменений после backup; это требует отдельного решения владельца данных. Регулярно проверяйте восстановление на отдельной машине и фиксируйте фактические RPO/RTO.
Запуск режима описан в разделе 6.2 — здесь перечислено то, что остаётся сделать организации, чтобы считать локальный контур принятым в эксплуатацию. Пункты 1 и 2 прежнего плана выполнены в поставке 0.3.4: провайдер подключён к очереди, снимок анализа закрепляет исполнителя, таймауты, отмена, переполнение контекста и запрет внешнего fallback покрыты тестами на синтетическом сервере.
- Проверить связку на реальном vLLM: оба этапа, формулировку правки, отмену, OOM, неверную схему и неверную цитату.
- Измерить срабатывание правил на выбранной модели:
DOCS_MODEL_PROVIDER=local npm run rules:eval, затем разобрать каждое расхождение. - В контуре подготовки закрепить веса, лицензии, tokenizer/chat template, runtime и драйверы; измерить память обоих этапов и подобрать GPU по реальному комплекту, не только размеру весов.
- Разместить модель отдельно от БД и оригиналов; закрыть её endpoint от пользователей. Отключить prompt/response logging, disk cache, телеметрию и внешние соединения; временные запросы не включать в backup.
- Переносить нормативные выпуски проверенным пакетом, с ответственным за редакции и даты. Шесть текущих положений не покрывают требования всей организации.
- Прогнать оба этапа и формулировку при заблокированном интернете; проверить отмену, OOM, неверную схему/цитату, исходные номера, отсутствие межпользовательских утечек и следов разовых пакетов.
- Провести юридическую оценку качества на размеченных русскоязычных договорах и измерить P50/P95 под нагрузкой. До прохождения этих проверок не объявлять установку готовой к промышленной эксплуатации.
Полная схема компонентов, границы данных, оборудование и критерии приёмки: архитектурный документ. Нормативные ограничения: спецификация базы.
Автотесты проверяют механику на синтетических данных; публикация и архив проверяются отдельно. Полная установка на чистой корпоративной ОС, подключение реальной модели, подбор GPU, air-gap-режим и эксплуатационные SLA требуют приёмки в организации. Эта инструкция не является актом прохождения этих испытаний.
- 2026-09-22: поставка 0.3.4 — локальный исполнитель и облачные вендоры подключены к рабочему runner за
DOCS_MODEL_PROVIDER; добавлены раздел 6.2, раздел 6.3 и параметры окружения. Интерфейс, отказы иrules:evalбольше не считают Codex единственным исполнителем. Реальный vLLM/GPU по-прежнему не испытан. - 2026-09-07: поставка 0.3.3 — в исходники добавлены тестируемые основы локального провайдера, opt-in OCR и импорта подписанных нормативных пакетов. Они не подключены к рабочему runner или интерфейсу; активным остаётся общий Codex.
- 2026-09-05: поставка 0.3.0 — личные организации и отдельный интернет-поиск по ИНН; встроенных профилей больше нет. Условия закупки оборудования и готовность локального inference не изменились.
| Дата | Изменение |
|---|---|
| 2026-09-22 | Локальный и облачные исполнители подключены и документированы; offline-инсталлятор и приёмка на реальном GPU ещё не выполнены |
| 2026-09-07 | Подготовлены модульные основы локального провайдера, OCR и доверенного импорта нормативных пакетов; полная локальная установка ещё не готова |
| 2026-09-05 | Добавлены аппаратные конфигурации, кандидаты локальных моделей и ссылка на расчёт VRAM; исходная поставка обновлена до 0.3.0 |
| 2026-09-05 | Выпущены руководство, примеры конфигурации и проверяемый исходный архив; текущий вариант с Codex отделён от проекта локальных моделей |