@dev-sergeev/datalab-kit

A ready-to-use collection of Pi coding agent extensions

Packages

Package details

extensionskill

Install @dev-sergeev/datalab-kit from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@dev-sergeev/datalab-kit
Package
@dev-sergeev/datalab-kit
Version
0.1.7
Published
Oct 20, 2026
Downloads
869/mo · 77/wk
Author
dev-sergeev
License
MIT
Types
extension, skill
Size
47.5 MB
Dependencies
12 dependencies · 4 peers
Pi manifest JSON
{
  "skills": [
    "./skills"
  ],
  "extensions": [
    "./dist/extension.js",
    "./node_modules/@narumitw/pi-plan-mode/dist/index.ts",
    "./node_modules/@gotgenes/pi-permission-system/src/index.ts",
    "./node_modules/@gotgenes/pi-subagents/src/index.ts",
    "./node_modules/@juicesharp/rpiv-ask-user-question/index.ts",
    "./node_modules/pi-powerline-footer/index.ts",
    "./node_modules/@capdiem/pi-todo/index.min.js",
    "./node_modules/pi-rewind/src/index.ts",
    "./node_modules/@tifan/pi-recap/src/index.ts",
    "./node_modules/@pi-plugins/elapsed/dist/index.mjs",
    "./node_modules/pi-toggle-skills/toggle-skills.ts",
    "./node_modules/@zigai/pi-mention-skill/src/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Datalab Kit

Готовый набор дополнений для Pi coding agent, опубликованный как @dev-sergeev/datalab-kit. История выпусков — в CHANGELOG.

Установка

Нужны Node.js ≥ 22.19 и установленный Pi строго 0.85.1. Peer-зависимости @earendil-works/pi-ai, @earendil-works/pi-coding-agent и @earendil-works/pi-tui закреплены на 0.85.1, без диапазонов версий, как в pi-gigachat 0.6.4. Это декларация совместимости npm, а не runtime-проверка: управляемый установщик Pi использует --legacy-peer-deps.

pi install npm:@dev-sergeev/datalab-kit
pi

После публикации первая команда устанавливает весь набор. До публикации можно проверить локальный архив:

npm ci --ignore-scripts --legacy-peer-deps
npm run build
npm pack
npm install --prefix /tmp/datalab-kit-local --legacy-peer-deps ./dev-sergeev-datalab-kit-0.1.7.tgz
pi install /tmp/datalab-kit-local/node_modules/@dev-sergeev/datalab-kit

Локальный архив сначала устанавливается через npm; Pi подключает полученный каталог пакета. В Pi 0.85.1 прямой путь к .tgz воспринимается как путь расширения, а не npm-архив.

Целевые системы — Linux и macOS; локальные интеграционные проверки выполнены на Linux. Проверка macOS включена в CI. Windows пока не заявляется.

Состав

Пакет Версия
@dev-sergeev/pi-gigachat 0.6.4
@juicesharp/rpiv-ask-user-question 2.11.0
pi-powerline-footer 0.17.2
@gotgenes/pi-permission-system 33.0.5
@narumitw/pi-plan-mode 0.58.3
@gotgenes/pi-subagents 21.7.5
@capdiem/pi-todo 0.3.2
pi-rewind 0.5.0
@tifan/pi-recap 0.4.7
@pi-plugins/elapsed 0.1.1
pi-toggle-skills 0.1.20
@zigai/pi-mention-skill 0.10.4

Одиннадцать фиксированных компонентов включены в архив npm вместе с их зависимостями. GigaChat устанавливается отдельно с закреплением версии 0.6.4.

Datalab Kit загружает штатное расширение GigaChat 0.6.4 без изменения его кода. /gigachat открывает интерактивный мастер подключений, авторизации и выбора моделей из каталогов серверов; это не интерфейс настройки через аргументы. Сохранённые подключения и пользовательские настройки остаются под управлением upstream.

DataLab из окружения

Дополнительно Datalab Kit регистрирует отдельный провайдер с идентификатором и именем DataLab, только если обе переменные окружения процесса Pi — GIGACHAT_API_URL и JPY_API_TOKEN — непусты после удаления пробелов по краям. Если хотя бы одна отсутствует, пуста или содержит только пробелы, провайдер и его модели не появляются в /model.

Задайте окружение до запуска Pi, например:

export GIGACHAT_API_URL="https://your-server.example/v1"
export JPY_API_TOKEN="your-token"
pi

GIGACHAT_API_URL — корень API с необходимым серверу префиксом пути (например, /v1), но без /chat/completions: этот суффикс добавляет адаптер. JPY_API_TOKEN передаётся как Bearer-токен и не сохраняется в auth.json. Datalab Kit не загружает .env автоматически; после изменения окружения перезапустите Pi.

Модель в /model Model ID на сервере Контекст Максимальный вывод
glm-5.2 [DataLab] glm-5.2 200000 токенов 64000 токенов
Qwen3.5-397b [DataLab] Qwen3.5-397b 262144 токенов 32768 токенов

Этот фиксированный список не запрашивается у сервера. Регистрация не выбирает текущую модель и не меняет сохранённые defaults пользователя. При запуске нет HTTP-проверки сервера или пробной генерации; обычный запрос выполняется после обращения к модели, а ошибки сервера возвращаются пользователю. Штатный мастер /gigachat остаётся независимым от DataLab. Архитектурное решение — ADR 0003.

Значения по умолчанию

  • Чтение файлов, просмотр каталогов и поиск разрешены в любых папках.
  • Служебный todo создаёт и обновляет список задач сессии без подтверждения.
  • Читающие цепочки вроде grep foo *.ts | head, регулярные выражения, комментарии, чтение через <, объединение stderr со stdout и вывод в /dev/null не требуют подтверждения. У команд с изменяющими опциями шаблоны файлов разрешаются с фиксированным префиксом пути или после --, когда это исключает внедрение опций из имён файлов.
  • Изменения через write, edit, npm install, git commit требуют подтверждения.
  • rm, hadoop, hdfs, неизвестные команды и любой удалённый curl требуют подтверждения.
  • curl к localhost, 127.0.0.1 и ::1 разрешён только для GET/HEAD. Для автоматически разрешённых запросов отключаются .curlrc и прокси; перенаправления, вывод в файл и изменяющие запросы требуют подтверждения.
  • Составная команда проверяется целиком. cat a > b и find . -delete требуют подтверждения. Неизвестный синтаксис также требует подтверждения.
  • Подтверждения показывает штатный диалог @gotgenes/pi-permission-system: разрешение одного запуска или на сессию, отказ и отказ с причиной. Настройки клавиш и повторного нажатия управляются самим расширением; собственного диалога Datalab Kit нет.
  • Одновременно работает один субагент. Инструмент subagent принимает одну задачу за вызов.

Уже заданные пользователем настройки имеют приоритет над значениями Datalab Kit, включая разрешения, настройки штатного диалога и число субагентов. Штатные подключения GigaChat управляются upstream; дополнительный DataLab не меняет выбор модели и defaults. Значения разрешений и числа субагентов действуют в памяти. Настройки разрешений остаются в штатных extensions/pi-permission-system/config.json внутри каталога агента и .pi/extensions/pi-permission-system/config.json внутри проекта. Субагенты используют <agentDir>/subagents.json и <project>/.pi/subagents.json.

В Plan mode допустимые инструменты и команды проверяет pi-plan-mode без дополнительных подтверждений по правилам набора. Явные пользовательские ask и deny продолжают действовать; некорректная конфигурация разрешений также не обходится. После выхода из Plan mode или перехода к реализации правила набора снова действуют. Это поведение сохраняется при восстановлении сессии и смене ветки. Plan mode допускает некоторые тесты и проверки, которые могут создавать артефакты.

Recap, время работы и навыки

/recap показывает краткое резюме сессии над редактором. По умолчанию используется текущая модель основной сессии; смена через /model учитывается при следующем запросе recap. Явный выбор через /recap config имеет приоритет. Пункт Use default возвращает наследование модели сессии сразу, без /reload. Проверить выбор можно через /recap status. Datalab Kit не создаёт и не дополняет <agentDir>/extensions/pi-recap.json; уже сохранённые настройки, включая Qwen от прежней версии набора, не очищаются автоматически. Если текущей модели или её авторизации нет, recap не переключается на другую модель.

Таймаут запроса recap — 60 секунд; задержка автоматического резюме после бездействия — 2 минуты. Recap не наследует thinking основной сессии и не передаёт уровень reasoning: для GigaChat это означает off, не меняя режим основного чата. Явные параметры тела запроса провайдера могут переопределить это поведение. Для других провайдеров и моделей отключение reasoning зависит от возможностей их адаптеров. GIGACHAT_TIMEOUT не переопределяет явно переданный recap лимит.

elapsed показывает время полного запроса в индикаторе Working..., включая все шаги агента и вызовы инструментов. Счётчик обнуляется для следующего запроса и исчезает после завершения. Работает только в TUI, не заменяет powerline footer и не требует настройки.

/toggle-skills управляет видимостью навыков для модели. Изменения сохраняются в disable-model-invocation внутри SKILL.md; после сохранения выполните /reload. Общие навыки в ~/.agents/skills изменяются и для других агентов, учитывающих этот флаг. Расширение сканирует стандартные каталоги навыков; навыки из npm-пакетов и произвольных путей настроек не перечисляются.

Введите $ для выбора навыка через pi-mention-skill. Скрытый от модели навык остаётся доступен через явное $имя-навыка. По умолчанию /skill:* скрываются из slash autocomplete; настройки самого расширения сохраняют приоритет над штатными значениями.

Встроенные навыки

После глобальной установки Datalab Kit навыки init и skill-creator доступны в Pi из любого каталога, без установки набора в каждый проект. В уже открытой сессии выполните /reload. Навыки поставляются внутри npm-пакета; набор не копирует их в пользовательские каталоги навыков.

  • /init [уточнения] изучает текущий проект и создаёт или актуализирует AGENTS.md: реальные команды, структуру и правила работы. Существующие инструкции и пользовательские требования сохраняются. Команда не устанавливает и не настраивает Datalab Kit.
  • /skill-creator [задача] создаёт и обновляет навыки, помогает оценивать их относительно baseline, просматривать результаты и улучшать описание. Это адаптация skill-creator Anthropic под Pi: оценка и оптимизация запускают Pi с выбранной моделью, без Claude Code. Лицензия Apache-2.0 и сведения об адаптации включены в пакет.

Новые навыки по умолчанию сохраняются в <agentDir>/skills/<имя>/ (~/.pi/agent/skills/ при стандартной конфигурации, либо каталог из PI_CODING_AGENT_DIR). Явно указанный пользователем путь важнее. После создания нужен /reload или новая сессия.

Для Python-утилит skill-creator нужны Python 3.10+ и PyYAML в используемом Python-окружении. Для /init Python не требуется. Утилиты используют установленный pi из PATH либо исполняемый файл из PI_EXECUTABLE_PATH; для запросов нужны авторизация и доступ к выбранной модели Pi. Оценки и оптимизация выполняют дополнительные модельные запросы. Результаты и рабочие файлы сохраняются вне каталога установленного пакета.

Короткие команды доступны независимо от скрытия /skill:* в autocomplete; штатные /skill:init и /skill:skill-creator также сохраняются. Явное отключение навыков (--no-skills или фильтры ресурсов пакета) не обходится короткими командами. Скрытие от автоматического выбора модели не запрещает явный вызов.

YOLO

YOLO управляется штатным @gotgenes/pi-permission-system: откройте /permission-system → YOLO mode или задайте "yoloMode": true в конфигурации расширения. Собственные сессионные команды /yolo on|off|status, добавленные в 0.1.1, удалены в 0.1.2.

YOLO автоматически разрешает ask. Явные deny и ограничения Plan mode сохраняются.

Обновление и ограничение Pi 0.85.1

После первого запуска Pi:

pi update --extensions

GigaChat закреплён на 0.6.4 в зависимостях набора и отдельном источнике Pi npm:@dev-sergeev/pi-gigachat@0.6.4. pi update --extensions не переводит его на более новую версию из latest; для смены версии нужен новый релиз набора либо явное пользовательское переопределение источника. Обычный запуск Pi не обращается к реестру npm и не устанавливает обновления.

Особенность Pi 0.85.1: установщик перезаписывает список пакетов из своего кеша после npm postinstall. Поэтому при первом запуске Pi набор восстанавливает отдельную закреплённую запись GigaChat. Прежний незакреплённый источник npm:@dev-sergeev/pi-gigachat заменяется на npm:@dev-sergeev/pi-gigachat@0.6.4 с сохранением фильтров ресурсов. Подробнее: ADR.

Явно закреплённый пользователем источник GigaChat сохраняется. При удалении набора отдельная запись GigaChat остаётся; её можно удалить стандартным pi remove npm:@dev-sergeev/pi-gigachat. Установка с -l пока не проверена.

GigaChat загружается через штатную точку входа как внутри набора, так и через отдельную запись пакета. Для 0.6.4 настройка подключений и моделей выполняется интерактивным /gigachat; прежние утверждения о встроенных GLM/Qwen и автоматическом default gigachat/Qwen3.5-397b относились к 0.5.1 и к этой версии неприменимы. Datalab Kit не переписывает исходники GigaChat, не очищает авторизацию или сохранённые подключения. Дополнительный провайдер DataLab не меняет текущую модель или defaults. Модель recap настраивается независимо.

Разработка

python3 -m venv /tmp/datalab-kit-python
. /tmp/datalab-kit-python/bin/activate
python3 -m pip install PyYAML
npm ci --ignore-scripts --legacy-peer-deps
npm run build
npm run typecheck
npm test
python3 skills/skill-creator/scripts/quick_validate.py skills/init
python3 skills/skill-creator/scripts/quick_validate.py skills/skill-creator

build применяет проверяемые адаптации к локальным permission-system, plan-mode, subagents и recap перед упаковкой. Для recap адаптируются наследование модели сессии, подпись пункта Use default и таймаут 60 секунд; исходный конфиг пользователя не переписывается. Номера версий и единственность каждого места изменения проверяются; несовпадение завершает сборку с ошибкой. Устаревшие выходные модули удаляются. Адаптации не меняют глобально установленные пакеты. Интеграционный тест использует изолированный каталог агента и локальный реестр npm, устанавливает настоящий архив штатной командой Pi и проверяет штатное обновление.

Тесты запускаются последовательно с --liftoff-only, чтобы оптимизирующая компиляция WASM-парсера bash не исчерпывала память в ограниченной среде CI. Параметр относится к тестовому процессу; запуск пользователя не меняется.