На этой странице Интерактивный 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] Состояние сохраняется между вызовами 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
uv run "$SCRIPT" variables --path
[/code]
4. Редактирование ячеек notebook¶
[code]
# Просмотр текущих ячеек
uv run "$SCRIPT" contents --path
# Вставка новой ячейки
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
[/code]
Практические советы из опыта¶
- Первое выполнение после запуска сервера может завершиться тайм-аутом — ядру нужно время для инициализации. Если возникает тайм-аут, просто повторите попытку.
- Python ядра — это Python JupyterLab — пакеты должны быть установлены в этом окружении. Если вам нужны дополнительные пакеты, сначала установите их в окружение инструмента JupyterLab.
- Флаг --compact значительно экономит токены — всегда используйте его. Без него JSON-вывод может быть очень многословным.
- Для чистого использования REPL создайте scratch.ipynb и не заморачивайтесь с редактированием ячеек. Просто используйте
executeмногократно. - Порядок аргументов имеет значение — флаги подкоманд, такие как
--path, ставятся ПЕРЕД под-подкомандой. Например:variables --path nb.ipynb list, а неvariables list --path nb.ipynb. - Если сессия ещё не существует, нужно запустить её через REST API (см. раздел Настройка). Инструмент не может выполнять код без активной сессии ядра.
- Ошибки возвращаются в формате JSON с traceback — читайте поля
enameиevalue, чтобы понять, что пошло не так. - Иногда возникают тайм-ауты websocket — некоторые операции могут не выполниться с первой попытки, особенно после перезапуска ядра. Повторите попытку один раз, прежде чем эскалировать.
Тайм-ауты по умолчанию¶
Скрипт имеет тайм-аут по умолчанию 30 секунд на одно выполнение. Для длительных операций передавайте --timeout 120. Используйте щедрые тайм-ауты (60+) для начальной настройки или тяжёлых вычислений.
* Метаданные навыка
* Справочник: полный SKILL.md
* Когда использовать этот навык vs другие инструменты
* Предварительные требования
* Настройка
* Запуск JupyterLab
* Создание Notebook для использования в качестве REPL
* Основной рабочий процесс
* 1. Обнаружение серверов и notebooks
* 2. Выполнение кода (основная операция)
* 3. Просмотр активных переменных
* 4. Редактирование ячеек notebook
* 5. Верификация (перезапуск и выполнение всего)
* Практические советы из опыта
* Тайм-ауты по умолчанию