Перейти к содержанию

На этой странице Интерактивный Python через живой Jupyter-ядро (hamelnb).

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

Источник Встроенный (установлен по умолчанию)
Путь skills/data-science/jupyter-live-kernel
Версия 1.0.0
Автор Hermes Agent
Лицензия MIT
Теги jupyter, notebook, repl, data-science, exploration, iterative
## Справочник: полный SKILL.md
> info
> Ниже приведено полное описание навыка, которое Hermes загружает при его активации. Это то, что агент видит в качестве инструкций, когда навык активен.

Jupyter Live Kernel (hamelnb)

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

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

Инструмент Когда использовать
Этот навык Итеративное исследование, состояние между шагами, наука о данных, ML, «дай-ка попробую и проверю»
execute_code Одноразовые скрипты, которым нужен доступ к инструментам Hermes (web_search, файловые операции). Без сохранения состояния.
terminal Команды оболочки, сборка, установка, git, управление процессами
Эмпирическое правило: Если вы хотели бы использовать Jupyter notebook для задачи — используйте этот навык.
## Предварительные требования
1. uv должен быть установлен (проверка: which uv)
2. JupyterLab должен быть установлен: uv tool install jupyterlab
3. Должен быть запущен Jupyter-сервер (см. Настройку ниже)

Настройка

Расположение скрипта hamelnb: [code] SCRIPT="$HOME/.agent-skills/hamelnb/skills/jupyter-live-kernel/scripts/jupyter_live_kernel.py"

[/code] Если репозиторий ещё не склонирован: [code] git clone https://github.com/hamelsmu/hamelnb.git ~/.agent-skills/hamelnb

[/code]

Запуск JupyterLab

Проверьте, не запущен ли уже сервер: [code] uv run "$SCRIPT" servers

[/code] Если серверов не найдено, запустите один: [code] jupyter-lab --no-browser --port=8888 --notebook-dir=$HOME/notebooks \
--IdentityProvider.token='' --ServerApp.password='' > /tmp/jupyter.log 2>&1 &
sleep 3

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

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

Если вам нужна просто REPL-среда (нет существующего notebook), создайте минимальный файл notebook: [code] mkdir -p ~/notebooks

[/code] Запишите минимальный JSON-файл .ipynb с одной пустой ячейкой кода, затем запустите сессию ядра через Jupyter REST API: [code] 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"}}'

[/code]

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

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

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

[code] uv run "$SCRIPT" servers --compact
uv run "$SCRIPT" notebooks --compact

[/code]

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

[code] uv run "$SCRIPT" execute --path --code '' --compact

[/code] Состояние сохраняется между вызовами execute. Переменные, импорты, объекты — всё сохраняется. Многострочный код работает с экранированием $'...': [code] uv run "$SCRIPT" execute --path scratch.ipynb --code $'import os\nfiles = os.listdir(".")\nprint(f"Found {len(files)} files")' --compact

[/code]

3. Просмотр активных переменных

[code] uv run "$SCRIPT" variables --path list --compact
uv run "$SCRIPT" variables --path preview --name --compact

[/code]

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

[code] # Просмотр текущих ячеек
uv run "$SCRIPT" contents --path --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

[/code]

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

Используйте только когда пользователь просит выполнить чистую верификацию или вам нужно убедиться, что notebook выполняется целиком сверху вниз: [code] uv run "$SCRIPT" restart-run-all --path --save-outputs --compact

[/code]

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

  1. Первое выполнение после запуска сервера может завершиться тайм-аутом — ядру нужно время для инициализации. Если возникает тайм-аут, просто повторите попытку.
  2. Python ядра — это Python JupyterLab — пакеты должны быть установлены в этом окружении. Если вам нужны дополнительные пакеты, сначала установите их в окружение инструмента JupyterLab.
  3. Флаг --compact значительно экономит токены — всегда используйте его. Без него JSON-вывод может быть очень многословным.
  4. Для чистого использования REPL создайте scratch.ipynb и не заморачивайтесь с редактированием ячеек. Просто используйте execute многократно.
  5. Порядок аргументов имеет значение — флаги подкоманд, такие как --path, ставятся ПЕРЕД под-подкомандой. Например: variables --path nb.ipynb list, а не variables list --path nb.ipynb.
  6. Если сессия ещё не существует, нужно запустить её через REST API (см. раздел Настройка). Инструмент не может выполнять код без активной сессии ядра.
  7. Ошибки возвращаются в формате JSON с traceback — читайте поля ename и evalue, чтобы понять, что пошло не так.
  8. Иногда возникают тайм-ауты websocket — некоторые операции могут не выполниться с первой попытки, особенно после перезапуска ядра. Повторите попытку один раз, прежде чем эскалировать.

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

Скрипт имеет тайм-аут по умолчанию 30 секунд на одно выполнение. Для длительных операций передавайте --timeout 120. Используйте щедрые тайм-ауты (60+) для начальной настройки или тяжёлых вычислений. * Метаданные навыка * Справочник: полный SKILL.md * Когда использовать этот навык vs другие инструменты * Предварительные требования * Настройка * Запуск JupyterLab * Создание Notebook для использования в качестве REPL * Основной рабочий процесс * 1. Обнаружение серверов и notebooks * 2. Выполнение кода (основная операция) * 3. Просмотр активных переменных * 4. Редактирование ячеек notebook * 5. Верификация (перезапуск и выполнение всего) * Практические советы из опыта * Тайм-ауты по умолчанию