{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}

Живое ядро Jupyter

Интерактивный Python через активное ядро Jupyter (hamelnb).

Метаданные навыки

Источник Встроенный (устанавливается по умолчанию)
Путь skills/data-science/jupyter-live-kernel
Версия 1.0.0
Автор Агент Гермес
Лицензия Массачусетский технологический институт
Платформы Linux, MacOS, Windows
Теги jupyter, notebook, repl, наука о данных, исследование, итеративный

Справочник: полный SKILL.md:::информация

Ниже приведено полное описание навыков, которые Hermes загружает при его активации. Агент увидит эту инструкцию, когда навыки активны.

Живое ядро Jupyter (hamelnb)

Предоставляется состоятельный Python REPL через новое ядро Jupyter. Переменные приоритеты между выполнением. Используйте это вместо execute_code, когда нужно накапливать постепенное состояние, рассматривать API, просматривать DataFrame или итерировать сложный код.

Когда использовать этот инструмент по сравнению с другими

Инструмент Используйте когда
Этот навык Итеративное исследование, состояние между шагами, наука о данных, ML, «дай тест и проверю»
выполнить_код Одноразовые скрипты, которым нужен доступ к инструментам Hermes (web_search, файловые операции). Без состояния.
терминал Команды настройки, сборка, установка, git, управление процессами

Правило: Если для решения задачи вы хотели использовать блокнот Jupyter, используйте этот навык.

Предварительные требования

  1. Должен быть установлен uv (проверьте: какой uv)
  2. JupyterLab должен быть установлен: uvtool install jupyterlab
  3. Должен быть запущен сервер Jupyter (см. Настройку ниже)

Настройка

Расположение скрипта hamelnb:

SCRIPT="$HOME/.agent-skills/hamelnb/skills/jupyter-live-kernel/scripts/jupyter_live_kernel.py"

Если ещё не склонирован:

git clone https://github.com/hamelsmu/hamelnb.git ~/.agent-skills/hamelnb

Запуск JupyterLab

Проверьте, не запущен ли уже сервер:

uv run "$SCRIPT" servers

Если серверы не найдены, запустите один:

jupyter-lab --no-browser --port=8888 --notebook-dir=$HOME/notebooks \
  --IdentityProvider.token='' --ServerApp.password='' > /tmp/jupyter.log 2>&1 &
sleep 3

Примечание: Токен/пароль отключен для агента локального доступа. Сервер работает без графического интерфейса.

Создание ноутбука для использования в качестве REPL

Если вам нужен просто REPL (без существующего ноутбука), создайте файл ноутбука:

mkdir -p ~/notebooks

Запишите JSON-файл.ipynb с одним пустым кодом, а затем запустите сессию ядра через Jupyter REST API:

curl -s -X POST http://127.0.0.1:8888/api/sessions \
  -H "Content-Type: application/json" \
  -d '{"path":"scratch.ipynb","type":"notebook","name":"scratch.ipynb","kernel":{"name":"python3"}}'

Основной рабочий процесс

Все команды возвращают структурированный JSON. Всегда --compact для экономии токенов.

1. Обнаружение серверов и ноутбуков

uv run "$SCRIPT" servers --compact
uv run "$SCRIPT" notebooks --compact

2. Выполнение кода (основная операция)

uv run "$SCRIPT" execute --path <notebook.ipynb> --code '<python code>' --compact

Состояние сохраняется между выполнением вызовов. Переменные, импорты, объекты — всё сохраняется.

Многострочный код работает с кавычками $'...':

uv run "$SCRIPT" execute --path scratch.ipynb --code $'import os\nfiles = os.listdir(".")\nprint(f"Found {len(files)} files")' --compact

3. Просмотр живых плодов

uv run "$SCRIPT" variables --path <notebook.ipynb> list --compact
uv run "$SCRIPT" variables --path <notebook.ipynb> preview --name <varname> --compact

4. Редактирование ячеек ноутбука

# Просмотр текущих ячеек
uv run "$SCRIPT" contents --path <notebook.ipynb> --compact

# Вставка новой ячейки
uv run "$SCRIPT" edit --path <notebook.ipynb> insert \
  --at-index <N> --cell-type code --source '<code>' --compact

# Замена исходного кода ячейки (используйте cell-id из вывода contents)
uv run "$SCRIPT" edit --path <notebook.ipynb> replace-source \
  --cell-id <id> --source '<new code>' --compact

# Удаление ячейки
uv run "$SCRIPT" edit --path <notebook.ipynb> delete --cell-id <id> --compact

5. Верификация (всего перезапуск и выполнение)

Используйте только тогда, когда пользователь запросит точную проверку или вам нужно быть уверенным, что ноутбук превосходит производительность выше:

uv run "$SCRIPT" restart-run-all --path <notebook.ipynb> --save-outputs --compact

Практические советы из опыта

  1. Первое выполнение после запуска сервера может превысить таймаут — ядру требуется время на инициализацию. Если получите таймаут, просто повторите.

  2. Ядро Python — это Python JupyterLab — пакеты должны быть установлены в этой технологии. Если нужны дополнительные пакеты, сначала установите их в инструменте окружения JupyterLab.

  3. Флаг --compact экономит количество токенов — всегда вручайте его. Вывод JSON без него может быть очень многословным.

  4. Для чистого REPL создайте Scratch.ipynb и не заморачивайтесь с редактированием ячеек. Просто викорируйте «выполнить» несколько раз.

  5. Порядок аргументов важен — флаги подкоманд, такие как --path, становятся ПЕРЕД подкомандой. Например: variables --path nb.ipynb list, а не variables --path nb.ipynb.

  6. Если сессия ещё не существует, нужно запустить её через REST API (см. раздел Настройка). Инструмент не может кодироваться без ядра открытой сессии.

  7. Ошибки возвращаются в JSON с обратной трассировкой — прочитайте поля ename и evalue, чтобы понять, что пошло не так.

  8. Иногда обратный таймауты websocket — некоторые операции могут превысить таймаут при первом включении, особенно после перезапуска ядра. Повторите один раз, прежде чем эскалировать.

Таймауты по умолчанию

Скрипт имеет таймаут по умолчанию 30 секунд на выполнение. Для длительных операций передайте --timeout 120. Используйте щедрые таймауты (60+) для предварительной настройки или тяжёлых компьютеров.