Начало работы

Настройте Datarim за 5 минут

Устанавливаете через ИИ-агента?

Дайте ему адрес репозитория и попросите установить Datarim — агент действует по INSTALL.md. Первый шаг агента: запустить ./install.sh --project <path> без флагов-ответов и ни о чём не спрашивать вас до этого запуска. Без терминала установщик останавливается с сообщением STOP, печатает шесть вопросов с ответами по умолчанию и одноразовый токен ответов и велит агенту передать вам вопросы дословно, ничего не советуя. Затем агент запускает установщик снова с вашими ответами и этим токеном.

# репозиторий
https://github.com/Arcanada-one/datarim

# руководство целиком, в исходном виде (пересказ веб-страницы теряет большую часть)
https://raw.githubusercontent.com/Arcanada-one/datarim/v4.3.7/INSTALL.md
Эта страница пересказывает каноническое руководство по установке — INSTALL.md на GitHub. Если они расходятся, прав INSTALL.md.

1 Что нужно заранее

  • Python 3.10 или новее и git.
  • Хотя бы один установленный клиент-агент, в который вы уже вошли: Claude Code (claude), Codex CLI (codex) или Cursor CLI (cursor-agent или agent). Datarim не заводит учётные записи клиентов и не читает ключи провайдеров моделей: каждый клиент авторизуется сам.
  • Каталог проекта. Лучше, если это git-репозиторий: тогда установщик скрывает свои файлы через .git/info/exclude.
  • Только для советов маршрутизации Jev: API-ключ Jev. Его выдаёт провайдер Jev API, TypeSafe (api.typesafe.ai). Нужен один ключ на компьютер — его используют все клиенты на этой машине. Без ключа Jev всё равно держит локальный пол безопасности; не будет только советов маршрутизации.

2 Получите исходники

git clone https://github.com/Arcanada-one/datarim.git ~/src/datarim
cd ~/src/datarim
git checkout "$(git describe --tags --abbrev=0 --match 'v*')"   # последний релизный тег

Не удаляйте этот клон: из него потом запускаются update.sh и --uninstall. Держите его в постоянном месте, например ~/src/datarim, — не в /tmp и не внутри проекта. Оставаться на main тоже можно. Установленный коммит записывается в <project>/.datarim-runtime/installation.json (source_sha). Чтобы закрепить проект на релизе, переключитесь на его тег (git checkout vX.Y.Z) перед установкой или обновлением. Jev для всей машины не ставится из клона с незакоммиченными изменениями.

Язык ответов и язык документов проекта

По умолчанию оба языка — английские. Можно один раз задать личные предпочтения или выбрать общие и приватные настройки проекта. Правила языка документов проекта имеют приоритет над личным выбором документов; личный язык ответов — над общим языком общения проекта. Родные правила и защита клиента сохраняют приоритет.

python3 .datarim-runtime/skills/human-outcome-reporting/scripts/language.py configure --scope user --replies fr --artifacts en
python3 .datarim-runtime/skills/human-outcome-reporting/scripts/language.py resolve --project "$PWD"

Запускайте после установки проекта. Для отдельной отчётности используйте помощник в каталоге установленного навыка, например ~/.agents/skills/human-outcome-reporting/scripts/language.py для Codex. Личные настройки: $XDG_CONFIG_HOME/datarim/config.yaml, иначе ~/.config/datarim/config.yaml. Настройки проекта: datarim/config.yaml и приватный datarim/config.local.yaml; установщик исключает datarim/ из git, поэтому совместное хранение настроек — явное решение команды.

При разрешении предпочтения читаются заново; переустановка не нужна. Если сохранился старый контекст, начните новый разговор, особенно при использовании хука начала сессии Cursor. Допустимы безопасные языковые теги без ограничения двумя языками. Для фиксированных подписей отчёта нужен доступный каталог; при его отсутствии явно сообщается об английском варианте. Цитаты, существующий текст, код и машинные значения сохраняются.

Ближайший приватный datarim/config.local.yaml выбирает свой проект, даже внутри родительского фреймворка. Ошибочные настройки или повреждённый приватный указатель вызывают ошибку, а не успешное наследование родительского проекта. Используйте configure --scope local --project /absolute/path/to/project для приватных предпочтений; не публикуйте этот файл.

Настроить языки · Приоритет и ограничения · Попробовать

Понятная отчётность без Datarim

Ветка main версии 4.2.3 начинается с нового подписанного корневого коммита. Сохраните прежние локальные ветки и правки; создайте отдельную чистую копию исходников, не объединяя старую и новую истории. Инструкция перехода.

Выберите этот вариант, если нужна понятная отчётность во всех проектах без установки фреймворка. Отдельный навык версии 0.3.3 входит в Datarim 4.3.7 и работает независимо от фреймворка. Скачайте отдельный ZIP и подписанные контрольные суммы из релиза, проверьте их по инструкции релиза и распакуйте архив:

human-outcome-reporting.zip · Скачать файлы релиза

До распаковки скачайте ZIP, контрольную сумму .sha256 и подпись .cosign.bundle. Проверьте контрольную сумму, подпись доверенного процесса сборки и аттестацию GitHub; все три проверки должны пройти. Проверить пакет.

python3 install.py install --agents claude,codex,cursor --dry-run
python3 install.py install --agents claude,codex,cursor
python3 install.py check --agents claude,codex,cursor

Из клона релиза: python3 scripts/human_reporting_install.py install --agents claude,codex,cursor. Нужен Python 3.9 или новее на macOS или Linux; дополнительные проверки отчётов требуют Python 3.10 или новее. Каталоги навыков: ~/.claude/skills, ~/.agents/skills для Codex и ~/.cursor/skills. Установщик добавляет навык выбранным клиентам и постоянное правило их средствами: стиль ответа Claude, управляемый блок AGENTS.md для Codex и контекст начала сессии Cursor. Чужие правила и хуки сохраняются; конфликтующий путь отклоняется. Перезапустите клиент и проверьте новую сессию. В Cursor начните новый разговор: возобновление прежнего чата не запускает хук начала сессии повторно. Стиль ответа Claude, выбранный в проекте, может иметь приоритет. Настройки Cursor действуют для этого пользователя; на другом хосте или в удалённой учётной записи установка выполняется отдельно. Проверка установки подтверждает файлы и настройки, а не соответствие любого будущего ответа.

Версия 0.3.3 также регистрирует синхронные хуки SessionStart для поддерживаемых Codex и Claude Code. Они читают актуальные предпочтения для рабочей папки клиента до первого сообщения о ходе работы, в том числе при новом запуске или возобновлении; изменение настроек не требует переустановки. В Codex проверьте точное новое или изменённое определение хука через /hooks штатными средствами доверия. Установщик не выдаёт доверие, не обходит подтверждение и не меняет разрешения. Чужие хуки и защитные правила сохраняются. Если хук не поддерживается, отключён или не доверен, проверка файлов не подтверждает стартовый контекст. Проверьте штатную активацию, затем в новой сессии наблюдайте первое сообщение о ходе работы, итоговый ответ и документ.

Claude обновляет предпочтения перед запросом через UserPromptSubmit и после завершённых или ошибочных вызовов инструментов через PostToolUse и PostToolUseFailure. Обычные сообщения о ходе работы и инструментах используют язык ответа; создаваемые заметки — язык документа. Явная просьба изменить язык документа влияет только на этот документ, а язык ответа — только на обычное объяснение. Синхронные хуки добавляют контекст, сохраняя вывод инструмента, решения и разрешения. Вход после инструмента ограничен 1 МиБ; при запуске и отправке запроса — 64 КиБ. Ошибочные или слишком большие данные вызывают уведомление о неразрешённых предпочтениях. Хук ошибки не охватывает отказ в разрешении, проверку до выполнения и отмену. Передача контекста не гарантирует соответствие модели. Этот установщик не добавляет Codex хук для каждого запроса; если остался прежний стартовый контекст, начните новый разговор. Изменение предпочтений не требует переустановки; изменённые хуки нужно проверить в новой сессии.

Создаваемые хуки выполняют актуальный исходник помощника настроек вместо существующего bytecode-кэша. Они сохраняют чужие кэши и не записывают bytecode помощника. Команда check проверяет целостность файлов; runtime_behavior, startup_context, per_turn_context и post_tool_context остаются not_measured. Первое сообщение о ходе работы, итоговый ответ и сохранённый документ проверяются отдельно.

Заметка Markdown или фрагмент документа, создаваемые внутри ответа в чате, остаются артефактом. Текст и примеры используют язык документа; объяснение за его пределами — язык ответа. Незапрошенный перевод примера не добавляется. Явные двуязычные запросы или перевод, цитаты, код и машинные идентификаторы сохраняют свои исключения; родные правила клиента сохраняют приоритет.

Для проектов Datarim установите или обновите фреймворк по инструкции ниже; команды автоматически загружают тот же навык отчётности. Правила для всей машины не включают Datarim в других проектах. python3 install.py uninstall --agents claude,codex,cursor удаляет только артефакты отдельной установки, которыми владеет установщик.

Human Outcome Reporting · /dr-explain

3 Сначала решите

Установка включает шесть решений из таблицы ниже: пять настроек и выбор исходной версии. В терминале установщик запрашивает настройки по очереди (Enter выбирает ответ по умолчанию) и напоминает о выборе версии. Без терминала (агент, скрипт) новая установка останавливается с сообщением STOP. Nothing was installed., завершается с кодом 2 и ничего не пишет — даже с --dry-run. Установщик перечисляет вопросы с ответами по умолчанию, велит агенту передать их дословно, ничего не советуя, и печатает одноразовый --answers <token>: токен действует 60 минут, только для этого проекта и расходуется успешной установкой; каждый новый отказ заменяет его. Для повторного запуска нужны все ответы (Jev, --client, --permissions) и этот токен. ИИ-агент никогда не выбирает ответы сам; ответы по умолчанию принимаются, только если пользователь так сказал.

# Вопрос По умолчанию
1 Ставить Jev? нет / в проект (только этот проект) / на машину (все проекты этого пользователя на этой машине) нет
2 Какими клиентами вы пользуетесь: Claude Code, Codex, Cursor? Передайте --client на каждый (или список через запятую); команды и, с --with-jev, хуки пишутся только для них. те, что установлены на машине
3 Запускать клиентов через лаунчеры jev* (они есть в каждой установке) без запросов разрешений? Ответ — --permissions ask или --permissions full: обязателен при новой установке и запоминается при обновлении; позже его меняет jev permissions. Прямой запуск клиента это не меняет. нет (ask)
4 Создать пустые файлы задач datarim/tasks.md и datarim/backlog.md сразу (--init)? да
5 Выставить все скиллы фреймворка в автоматическое обнаружение клиентов (--expose-skills)? Их описания попадут в каждую сессию. нет
6 Ставить последний релизный тег или main? последний релизный тег

Вложенные git-репозитории: если они есть в проекте и Datarim должен работать внутри них, добавьте по одному --context <relative/path> на репозиторий. Найти их: find "$PROJECT" -mindepth 2 -name .git -not -path '*/node_modules/*'.

4 Установка

Задайте путь к проекту один раз (абсолютный), затем запустите установщик только с путём к проекту, без флагов-ответов. Агент ни о чём не спрашивает пользователя до этого запуска.

PROJECT=/absolute/path/to/project
./install.sh --project "$PROJECT"   # в терминале задаёт вопросы; иначе печатает их, флаг для каждого ответа и одноразовый токен

Без терминала: задайте пользователю напечатанные вопросы, дождитесь ответов, затем запустите установщик снова с флагами, которые дают ответы (см. ниже), и --answers с напечатанным токеном — в течение часа. Чтобы сначала увидеть план, добавьте к этому запуску --dry-run. Флаги-ответы, переданные без действующего токена, установщик перечисляет как проигнорированные. Не выбирайте ответы сами: пол безопасности Jev работает без ключа, так что отсутствие ключа — не причина отвечать «без Jev».

Вариант A — только Datarim (по умолчанию)

Пользователь ответил «без Jev» → флаг --without-jev, выбранный им список --client и ответ --permissions.

Не передавайте его за пользователя: отсутствие ключа — не причина отказываться от Jev, защита работает без ключа.

Вариант B — Datarim и Jev на уровне проекта

Пользователь ответил «Jev для этого проекта» → флаг --with-jev, выбранный им список --client и ответ --permissions.

Хуки Jev регистрируются только в этом проекте и только для выбранных клиентов (.claude/settings.local.json, .codex/hooks.json, .cursor/hooks.json), и создаётся пустой файл ключа config/credentials/jev/api-key (права 0600). Не выбирайте этот вариант на машине, где уже стоит Jev для всей машины: сработают оба набора хуков. Используйте вариант C.

Вариант C — Jev на всю машину и Datarim в этом проекте

Пользователь ответил «Jev на всю машину» → флаги --with-jev --host-jev, список --client и ответ --permissions. Только в этом случае сначала поставьте Jev на машину:

# только если пользователь выбрал Jev на всю машину
python3 scripts/jev_host_install.py --client claude --client codex --client cursor \
  --datarim-project "$PROJECT" --dry-run
python3 scripts/jev_host_install.py --client claude --client codex --client cursor \
  --datarim-project "$PROJECT"

Jev для всей машины ставится один раз на пользователя и действует во всех каталогах, которые он открывает. Он пишет ~/.config/jev/, ~/.local/share/jev/, ~/.local/state/jev/, лаунчеры ~/.local/bin/{jev,jevclaude,jevcodex,jevcursor} (этот каталог должен быть в PATH) и добавляет свои хуки в пользовательскую конфигурацию каждого выбранного клиента, сохраняя все существующие хуки. --datarim-project заменяет список проектов с Datarim на машине: добавляя проект позже, перечислите все проекты заново. Файл ключа — ~/.config/jev/credentials/api-key.

Вариант D — Jev без Datarim

python3 scripts/jev_host_install.py --client claude --client codex --client cursor --dry-run
python3 scripts/jev_host_install.py --client claude --client codex --client cursor

Тот же установщик для машины, без --datarim-project и без установки в проект. Подробнее — Use Jev on its own.

Другие параметры установки

--client <name> claude, codex, cursor или all; повторяйте флаг или дайте список через запятую. Файлы команд и (с --with-jev) хуки получают только эти клиенты. Обязателен при новой установке; сохраняется при обновлениях. Клиент, не указанный при обновлении, теряет свои файлы команд и хуки Jev.
--claude-import / --no-claude-import Устарели с 4.1: принимаются с предупреждением и ничего не делают. Claude Code читает AGENTS.md самостоятельно; ссылка на файл инструкций не создаётся.
--permissions ask|full Ответ о режиме разрешений (вопрос 3). Обязателен при новой установке и запоминается при обновлении. Задаёт тот же переключатель, что и jev permissions, — для проекта или, при Jev на машину, для машины.
--answers <token> Одноразовый токен, который печатает отказ. Нужен при новой установке без терминала вместе с ответами; действует 60 минут, только для этого проекта и расходуется успешной установкой. Каждый новый отказ заменяет его. Обновлениям токен не нужен.
--init Создаёт datarim/tasks.md и datarim/backlog.md, если их нет. Существующие файлы сохраняются.
--expose-skills Дополнительно пишет все скиллы фреймворка в .agents/skills/, .claude/skills/, .cursor/skills/. Их описания загружаются в каждую сессию.
--context <relative/path> Разрешает вложенному git-репозиторию пользоваться этой установкой. Повторяйте на каждый репозиторий; повторная передача заменяет список; --no-context очищает его.
--without-jev, --no-host-jev --without-jev — ответ «без Jev», которого требует новая установка. При обновлении флаги отключают записанный --with-jev или --host-jev; --without-jev при этом убирает хуки Jev проекта и jev-config.json, файл ключа остаётся.
--dry-run Печатает план в JSON и ничего не пишет. При новой установке без терминала отказывает так же, как сама установка, пока нет ответов и токена.

Только если пользователь сказал «по умолчанию»: --without-jev, --client с клиентами, установленными на машине, --init и --permissions ask.

Установка из скрипта (CI)

Переключателя, который обходит токен ответов, нет. Конвейер с заранее проверенными ответами делает два шага: первый запуск отказывает и печатает токен в строке повторного запуска, второй передаёт этот токен с теми же ответами. Замените <flags> проверенными флагами-ответами, одинаковыми в обоих запусках:

out="$(./install.sh --project "$PROJECT" <flags> 2>&1)"
token="$(printf '%s\n' "$out" | sed -n 's/.*--answers \([0-9a-f][0-9a-f]*\) .*/\1/p' | tail -n 1)"
[ -n "$token" ] || { printf '%s\n' "$out" >&2; exit 1; }
./install.sh --project "$PROJECT" --answers "$token" <flags>

ИИ-агент, который ставит Datarim для человека, так не делает: он передаёт человеку вопросы, напечатанные первым запуском, и использует его ответы.

Отчёт после установки

После каждой установки или обновления установщик печатает строки отчёта внутри блока кода, перед которым стоит фраза «Copy the block below into your reply to the user unchanged (you may add your own text after it):». Агент копирует весь блок в свой ответ без изменений и без пересказа; свой текст он может добавить после блока. Строки в блоке:

  • режим разрешений и файл, в котором он хранится: FULL_PERMISSIONS в каталоге состояния (есть файл — full, нет — ask; меняется командой jev permissions full|ask);
  • при установке с Jev — путь к файлу ключа с пометкой, что пол безопасности Jev работает без ключа; ключ вставляется в редакторе, никогда не через echo или printf;
  • never in .zshrc/.bashrc: JEV_* or DATARIM_* variables (e.g. JEV_PERMISSIONS) or the key; set them per shell or per launch — переменные JEV_* и DATARIM_* (например, JEV_PERMISSIONS) и ключ никогда не кладутся в .zshrc / .bashrc, а задаются для одной оболочки или одного запуска;
  • если в проекте есть AGENTS.md: AGENTS.md is not modified by the installer (установщик не меняет AGENTS.md);
  • при Codex с Jev — как одобрить хуки Codex; при Codex или Cursor — что .agents/skills/dr-* / .cursor/skills/dr-* — это команды /dr-*, упакованные для них, а не дополнительные скиллы фреймворка.

Установка проектная: закреплённый снимок фреймворка ложится в .datarim-runtime/, команды /dr-* — туда, где их находит каждый клиент (Claude Code → .claude/commands/, Codex → .agents/skills/, Cursor → .cursor/skills/), а всё записанное скрывается от git status через .git/info/exclude. Установка не трогает домашний каталог, файлы запуска оболочки, AGENTS.md и .gitignore. С версии 4.1 Claude Code читает AGENTS.md самостоятельно; установщик никогда не создаёт CLAUDE.md. Подробности по клиентам — на странице Среды.

5 Ключ Jev, режим разрешений и настройки

Jev необязателен. Он добавляет детерминированный пол безопасности — хук, который отклоняет разрушительные команды оболочки и не требует ни ключа, ни сети, — а с API-ключом ещё и советы по уровню модели. Совет остаётся советом: он не переключает работающую модель и не выдаёт разрешений.

Куда положить ключ Jev

Откройте файл ключа вашей установки в редакторе, вставьте ключ одной строкой и сохраните. Файл уже создан с правами 0600 — не меняйте их. Установка с --with-jev печатает точный путь.

Установка Файл ключа
Jev в проекте (вариант B)<project>/config/credentials/jev/api-key
Jev на машину (вариант C или D)~/.config/jev/credentials/api-key
$EDITOR ~/.config/jev/credentials/api-key   # Jev на машину; в проекте: config/credentials/jev/api-key
  • Один ключ на компьютер, общий для всех клиентов; на каждом компьютере — свой ключ.
  • Никогда не записывайте ключ через echo или printf: команда останется в истории оболочки. Не кладите ключ в коммит, файл настроек или чат.
  • export TYPESAFE_API_KEY=... не работает: лаунчеры и хуки удаляют эту переменную и читают только файл.
  • При Jev на машину собственный файл ключа проекта остаётся пустым и не читается — так и должно быть.

Режим разрешений (только для лаунчеров Jev)

jev permissions          # показать текущий режим
jev permissions full     # лаунчеры jev* запускают клиентов без запросов разрешений
jev permissions ask      # вернуть запросы самого клиента (по умолчанию)

full добавляет --dangerously-skip-permissions (Claude Code), --dangerously-bypass-approvals-and-sandbox (Codex) или --force --approve-mcps (Cursor) к запускам через jev, jevclaude, jevcodex, jevcursor, если вы не передали свой параметр разрешений. Ответ установщику --permissions ask|full задаёт тот же переключатель. Режим хранится для проекта (установка в проект) или для машины (Jev на машину). Пол безопасности работает и в режиме full. Прямой запуск claude, codex или cursor-agent это не меняет. jev off / jev on останавливают и возобновляют обращения к API; пол безопасности работает в обоих случаях.

Настройки и секреты

Ничего из этого не коммитится: пути проекта скрыты через .git/info/exclude, пути машины лежат в домашнем каталоге. Переменные окружения из таблицы задаются для одной оболочки или одного запуска, никогда не в .zshrc, .bashrc или другом файле запуска: например, JEV_PERMISSIONS=full там отключил бы запросы разрешений для каждого запуска через jev*. У постоянных настроек есть свои переключатели: jev permissions, jev on / jev off и файл настроек. Какой код читает каждую настройку — в INSTALL.md.

Настройка Где Обязательна По умолчанию
Ключ Jev API (Jev в проекте) файл <project>/config/credentials/jev/api-key, права 0600 только для советов маршрутизации создаётся пустым
Ключ Jev API (Jev на машину) файл ~/.config/jev/credentials/api-key, права 0600 только для советов маршрутизации создаётся пустым
Настройки Jev (проект) <project>/.datarim-runtime/jev-config.json: адрес API, тайм-ауты, повторы, режимы маршрутизации, переключатели хуков, телеметрия нет копия plugins/dr-jev-control/config/jev-control.json
Настройки Jev (машина) ~/.config/jev/config.json, в том числе datarim_projects (проекты, которым разрешён Datarim) нет те же значения; api.base_url должен оставаться https://api.typesafe.ai/v1/systemone
Включение/выключение jev off / jev on: файл DISABLED в .datarim-runtime/state/jev/ или ~/.local/state/jev/ нет включено
Режим разрешений jev permissions full|ask: файл FULL_PERMISSIONS в том же каталоге состояния; переменная JEV_PERMISSIONS=full|ask переопределяет его на один запуск нет ask
Отключить советы Jev в оболочке переменная JEV_DISABLE=1 или DATARIM_JEV_DISABLE=1 (пол безопасности продолжает работать) нет не задана
Модель Codex для уровня Jev переменные DATARIM_CODEX_MODEL_HAIKU, _SONNET, _OPUS нет модель аккаунта Codex, уровень задаёт effort
Модель Cursor для уровня Jev переменные DATARIM_CURSOR_MODEL_HAIKU, _SONNET, _OPUS нет модель Cursor по умолчанию
Исполняемый файл клиента переменные CLAUDE_BIN, CODEX_BIN, CURSOR_BIN нет claude, codex, cursor-agent (или agent) из PATH
Автоматическое доверие Codex переменная JEV_NO_AUTO_TRUST=1 запрещает jevcodex (Jev на машину) заново доверять собственным хукам Jev нет не задана
Карта машин исполнения переменная DATARIM_EXEC_HOSTS_MAP — YAML-карта того, какая машина может выполнять задачи рабочего пространства нет $HOME/.claude/local/config/execution-hosts.yml; без карты проверка пропускается

Задаются точками входа, не вручную: DATARIM_RUNTIME (через source .datarim-runtime/activate.sh, вместе с PATH), а также DATARIM_ROOT, DATARIM_PROJECT_ROOT, DATARIM_JEV_CONFIG, DATARIM_JEV_HOME, DATARIM_JEV_STATE, TYPESAFE_API_KEY_FILE, JEV_STATE_DIR, JEV_HOST_STATE (через jev* и хуки). Ключи провайдеров моделей (ANTHROPIC_API_KEY, OPENAI_API_KEY и подобные) не читают ни установщик, ни команды Datarim, ни Jev; клиенты авторизуются сами.

6 Проверка

cd "$PROJECT"
git status --short                       # ожидается: ничего от Datarim
source .datarim-runtime/activate.sh      # только для текущей оболочки
jev doctor --agent=claude                # или --agent=codex / --agent=cursor

Ожидаемый вывод jev doctor (JSON), код выхода 0:

  • "scope": "project" (или "host" с --host-jev), "datarim_enabled": true;
  • "findings": [] — каждая находка называет, чего не хватает (например, claude: executable missing или cursor: Jev hook file missing (...)), и делает код выхода 1. Без --agent проверяются все три клиента, так что неиспользуемый клиент тоже станет находкой;
  • "hook_clients" — клиенты, для которых эта установка зарегистрировала хуки Jev;
  • "config_path" — файл настроек Jev, который реально читается (.datarim-runtime/jev-config.json или ~/.config/jev/config.json при Jev на машину); null без Jev;
  • "native_agents_live" — для каждого клиента "state": "live" с числом доставок и временем последней, как только в журнале появится запись hook_delivery от этого клиента; not_measured (с причиной), пока клиент не запускал хук. Если зарегистрировано несколько клиентов, показываются все, а не только указанный в --agent; у клиента без доставок будет «no deliveries yet»;
  • "key_ready": false, пока вы не добавили ключ (true значит лишь, что файл не пуст, а не что ключ верен);
  • "api": "not_measured" — офлайн-проверка не ходит в сеть; это ни успех, ни провал;
  • "source_sha" — установленный коммит.

После добавления ключа jev doctor --api должен завершиться с кодом 0 и блоком "api": {"ok": true, "model": "...", ...}; без ключа будет "reason": "key missing" и код 1.

Проверки без ключа

Пол безопасности, если Jev установлен. Запускайте в проекте; разрушительная команда — лишь текст внутри JSON, ничего не выполняется:

printf '{"tool_name":"Bash","tool_input":{"command":"rm -rf /"},"cwd":"%s","session_id":"check"}' "$PWD" \
  | python3 .datarim-runtime/scripts/jev_hook.py claude PreToolUse      # Jev в проекте
# Jev на машину: подайте тот же JSON в  ~/.local/share/jev/bin/jev-hook claude PreToolUse

Ожидается: "permissionDecision": "deny" с причиной Jev deterministic safety floor: recursive delete of a protected path.

Вопрос Проверка Ожидается
Вызывают ли клиенты хуки? Проведите в проекте одну короткую сессию клиента, затем tail -n 3 .datarim-runtime/state/jev/ledger.jsonl записи hook_delivery с именем клиента. Отказы пола безопасности не записываются. Jev на машину хранит журналы в ~/.local/state/jev/projects/.
Правильно ли установлен Jev и его область? jev doctor --agent=<client> поля выше; после той сессии native_agents_live показывает клиента как live
В порядке ли файлы задач? bash .datarim-runtime/scripts/datarim-doctor.sh --root="$PWD" или /dr-doctor в клиенте OK: datarim/ structure compliant

jev doctor отвечает за Jev (клиенты, регистрация хуков, файл ключа, область, доверие Codex, доставка хуков); datarim-doctor.sh и /dr-doctor — только за структуру файлов задач в datarim/.

Codex выполняет хуки только после одобрения

С Jev первая сессия Codex спрашивает дважды: доверять ли рабочему каталогу, затем Hooks need review → Trust all and continue. Отказ проходит молча: Codex по-прежнему показывает хуки активными, но не запускает их. jev doctor --agent=codex сообщает codex_hook_trust: trusted, untrusted или not_measured — по одобрениям, которые Codex хранит в ~/.codex/config.toml.

Jev на машину: проверяются хуки в ~/.codex/hooks.json. Если другой инструмент переписал этот файл, jev trust заново доверяет только собственным хукам Jev; jevcodex делает это сам, если не задан JEV_NO_AUTO_TRUST=1. Jev в проекте: проверяются хуки в <project>/.codex/hooks.json; jev trust, запущенный в проекте, доверяет ровно им, а jevcodex автоматически этого не делает. Если установка меняет команду хука (например, путь к интерпретатору), Codex покажет хуки изменёнными; одобрите их снова через jev trust или запрос Codex.

7 Обновление

cd ~/src/datarim
git fetch --tags origin
git checkout "$(git describe --tags --abbrev=0 --match 'v*' origin/main)"   # или: git checkout main && git pull
./update.sh --project "$PROJECT"   # выбранные при установке параметры запомнены

update.sh запускает тот же установщик одной транзакцией: сначала проверяет каждый файл, отказывается перезаписывать то, что вы правили, и откатывается при сбое.

Выбранные при установке параметры запоминаются. --with-jev, --host-jev, --context, --client, --expose-skills записываются в .datarim-runtime/installation.json, и обычный update.sh --project их сохраняет; режим разрешений тоже не меняется. Передавайте параметр только чтобы изменить его: --without-jev убирает хуки Jev проекта и jev-config.json (файл ключа остаётся), --no-host-jev возвращает хуки проекта, --no-context отключает вложенные репозитории, --client задаёт новый список клиентов. У установок, сделанных до 4.0, список клиентов не записан — они сохраняют все три.

При обновлении сохраняются: datarim/, config/credentials/, .datarim-runtime/state/ (журнал, переключатели вкл/выкл и разрешений) и .datarim-runtime/jev-config.json, пока Jev включён. Всё остальное в .datarim-runtime/ заменяется, включая ссылки плагинов в .datarim-runtime/local/: после обновления выполните /dr-plugin sync. Предыдущая версия среды хранится в .datarim-runtime-previous/, более старые — в .datarim-runtime-backups/. Jev на машину: перезапустите scripts/jev_host_install.py из обновлённого клона с теми же --client и --datarim-project; доверие Codex сохранится, потому что команда хука указывает на неизменную точку входа.

Переход с Datarim 2.x
Версия 2.x ставилась глобально, ссылками в домашние каталоги клиентов. Этих флагов больше нет. Удалите только те ссылки в ~/.claude/{agents,skills,commands,templates,scripts,tests,dev-tools} (и аналоги для Codex и Cursor), которые ведут в ваш клон Datarim, затем ставьте в проект, как описано выше. В проектах, установленных до 3.0, в конец AGENTS.md был добавлен блок, а в .gitignore — правила; следующая установка или обновление убирает и то и другое, не трогая остальное.

8 Удаление

~/src/datarim/install.sh --project "$PROJECT" --uninstall --dry-run
~/src/datarim/install.sh --project "$PROJECT" --uninstall

Удаление возвращает изменённым установкой файлам их прежнее содержимое, убирает добавленные файлы команд и записи хуков и переносит среду в .datarim-uninstalled/. Состояние задач (datarim/), ключи (config/credentials/) и резервные копии среды остаются и по-прежнему скрыты от git — удалите их сами, когда они станут не нужны. Повторное удаление откажет, пока существует .datarim-uninstalled/. Файлы, изменённые вами после установки, останавливают удаление, пока вы их не согласуете.

У Jev на машину нет деинсталлятора. jev off прекращает все обращения к Jev API на машине. Чтобы удалить его, уберите записи Jev (команды с ~/.local/share/jev/bin/jev-hook) из конфигураций клиентов, затем удалите ~/.local/bin/{jev,jevclaude,jevcodex,jevcursor}, ~/.local/share/jev/, ~/.config/jev/ (там ключ) и ~/.local/state/jev/ (там резервные копии установки).

Что-то пошло не так? Таблица в разделе Troubleshooting INSTALL.md сопоставляет каждое сообщение установщика с причиной и исправлением.

9 Первая задача

Перейдите в проект, куда установлен Datarim, и запустите агента (в Codex и Cursor попросите выполнить скилл dr-init):

cd /path/to/your/project
claude

# Внутри Claude Code:
/dr-init Добавить переключатель темы на страницу настроек

Datarim анализирует запрос, определяет сложность (L1-L4) и создаёт трекинг задачи в datarim/.

С v2.7.0: Step 2.5b — мягкое предупреждение о пересечении темы с уже ожидающими элементами бэклога, чтобы вы не создали дубль ID для одной и той же работы. Совет ничего не блокирует — вы решаете дубль / уточнить scope / ортогонально перед стартом.

10 Следуйте pipeline

Не каждая задача проходит все 8 стадий. Datarim маршрутизирует по сложности:

L1
Простой фикс
init → do → archive
L2
Стандартная фича
init → prd (с lite-исследованием) → plan → do → qa → archive
L3
Сложная фича
init → prd (с полным исследованием) → plan → design → do → qa → compliance → archive
L4
Масштабный проект
Все 8 стадий + consilium + ревью стратега

11 Основные команды

/dr-help Список всех команд
/dr-init Начать новую задачу
/dr-prd Требования + исследование контекста
/dr-plan Детальный план реализации
/dr-do Реализация по плану (TDD)
/dr-qa Проверка качества
/dr-verify Независимая tri-layer проверка по требованию
/dr-archive Рефлексия, архив, обновление бэклога
/dr-write Создать контент
/dr-publish Публикация на платформах
/dr-status Текущий прогресс задачи

12 Структура проекта

После /dr-init в проекте появляется:

your-project/
├── .datarim-runtime/        # фреймворк этой ревизии (вне git)
├── datarim/                 # состояние workflow (вне git)
│   ├── tasks.md             # активные задачи
│   ├── backlog.md           # очередь задач
│   ├── activeContext.md     # текущий фокус
│   ├── tasks/               # документы задач
│   └── ...                  # prd/, creative/, reflection/, qa/, reports/, history/
└── documentation/
    └── archive/             # завершённые задачи (коммитить)
        ├── web/
        ├── infrastructure/
        └── ...

datarim/ — локальное состояние workflow; установка скрывает его вместе с .datarim-runtime/ через .git/info/exclude, не меняя общий .gitignore. documentation/archive/ — история проекта, коммитьте в git.

Файл исходного задания и журнал вопросов (v2.9.0): /dr-init сохраняет ваш исходный промт в datarim/tasks/{ID}-init-task.md дословно. Каждое последующее уточнение — вопрос агента и ваш ответ — автоматически попадает в раздел «Дополнения» этого файла как структурированный блок «Q&A by /dr-<стадия>». Если вы не ответили, агент примет решение сам по лучшим практикам и запишет обоснование длиной не менее 50 символов; стадия проверки качества сверит каждое такое решение с реализацией.

13 Плагины (v1.23.0+)

Расширяйте Datarim opt-in плагинами через /dr-plugin. Каждый plugin — каталог с plugin.yaml + поддиректории {skills,agents,commands,templates}/. Подключение создаёт симлинки в namespace .datarim-runtime/local/<cat>/<plugin-id>/ внутри проекта.

/dr-plugin list                              # активные
/dr-plugin enable /path/to/my-plugin     # включить локальный плагин
/dr-plugin disable my-plugin              # отключить
/dr-plugin sync                              # реконсиляция runtime ↔ manifest
/dr-plugin doctor [--fix]                    # 10 health checks

Manifest активного набора: datarim/enabled-plugins.md. Pre-mutation snapshot/rollback на каждый enable. Подробности — страница команды →

Поставляемые плагины: dr-orchestrate, dr-jev-control, tdd-enforcement, dr-fleet-evolution и (v3.1.0+) controller-continuation — точка входа /dr-continue-checkpoint для проектов со своим внешним контроллером, только Linux. Это не core-команда: ядро остаётся на 29 командах.

14 Network Exposure Baseline (v1.24.0+)

Secure-by-default контракт для сетевых биндингов: docker-compose ports, redis.conf bind, postgresql.conf listen_addresses, systemd .socket. Public-by-default = breach-by-default; новый skill network-exposure-baseline.md формализует tier model с TTL-bounded waivers.

Tier 0
unix socket / нет опубликованного порта — allowed без обоснования.
Tier 1
loopback (127.0.0.1, ::1) — allowed; стандарт для dev compose.
Tier 2
Tailscale CGNAT 100.64.0.0/10 — allowed (mesh-only by definition).
Tier 3
0.0.0.0, [::], public IPs — требуют inline x-exposure-justification + x-exposure-expires (≤90 дней).

Локальная проверка перед commit:

dev-tools/network-exposure-check.sh \
  --compose docker-compose.yml \
  --redis-conf redis.conf \
  --postgres-conf postgresql.conf
# exit 0 — clean; exit 1 — violation

Reusable CI workflow в .github/workflows/ci.yml:

jobs:
  network-exposure:
    uses: Arcanada-one/datarim/.github/workflows/network-exposure-lint.yml@<40-hex-commit>
    with:
      compose_paths: docker-compose.yml docker-compose.prod.yml
      datarim_ref: '<same-40-hex-commit>'

Pipeline-команды (/dr-prd, /dr-plan, /dr-do, /dr-archive) автоматически загружают skill при network-сурфейс изменениях. Tiered gate: P0 / security / infrastructure / framework-hardening tasks → hard_block; иначе → advisory_warn с операторским override.

15 Autonomous Agent Operating Rules (v2.6.0+)

Когда требования оператора неполные, сложные или неоднозначные, агент не должен останавливаться и эскалировать без необходимости. Восемь канонических правил (FB-1..FB-8) задают автономное поведение под Supreme Directive Laws 1-5. Mandate существует в экосистемном AGENTS.md потребителя (canonical text + audit tagging), а Datarim ships только машиночитаемый контракт-блок.

FB-1
Исследовать варианты решения.
FB-2
Сравнить по best practices, безопасности, поддерживаемости.
FB-3
Консилиум по ролям (architect / dev / DevOps / security / QA / PO).
FB-4
Выбрать вариант и записать reason в audit log.
FB-5
Выполнить безопасно-выполнимые части без оператора.
FB-6
Делать решения обратимыми при неопределённости.
FB-7
Заложить корректировку, откат, переделку после тестов.
FB-8
Эскалировать только реально блокирующие вопросы.

Машиночитаемый policy-блок:

dev-tools/rules/fb-rules.yaml
# rules: 8 × {rule_id, enforcement_layer, tier, default_action,
#               reversibility_required, audit_required, conflicts_with_law}
# hard_gated_actions: [prod_deploy, secret_rotation, irreversible_db_op,
#                      public_communication, finance_action, legal_action,
#                      force_push_main, git_history_delete, multi_user_visible_action,
#                      content_consilium_publish]

Hierarchy: Supreme Directive (Laws 1-5) > Autonomous Agent Operating Rules > AAL Mandate > project-specific mandates. hard_gated_actions NEVER auto-execute независимо от FB-5. Loader: dev-tools/fb-policy-loader.sh § load_fb_policy() / load_fb_hard_gates() (в ядре; плагин dr-orchestrate вызывает его через тонкий shim).

D Документация: Diátaxis-таксономия

Каждый Datarim-managed репозиторий и продуктовый сайт обязан организовать документацию по Diátaxis: четыре ортогональные категории — tutorials/ (обучение), how-to/ (решение задач), reference/ (справочник), explanation/ (понимание).

documentation/
├── tutorials/        # learning-oriented
├── how-to/           # problem-solving (testing, deployment, gotchas)
├── reference/        # information-oriented (architecture, api, cli)
└── explanation/      # understanding-oriented (design, concepts)

Закрытый набор: faq, glossary, troubleshooting, examples, overview, samples — mappable, не отдельные типы. Stack-agnostic — выбор SSG/CMS per-project. /dr-init create project создаёт эту раскладку в documentation/; /dr-optimize даёт мягкое предупреждение о дрейфе, жёсткий CI-гейт отложен.