Jupyter Live Kernel
Интерактивный Python через живое ядро Jupyter (hamelnb).
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/data-science/jupyter-live-kernel |
| Версия | 1.0.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | jupyter, notebook, repl, data-science, exploration, iterative |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Это те инструкции, которые видит агент, когда навык активен.
Jupyter Live Kernel (hamelnb)
Предоставляет состоятельный Python REPL через живое ядро Jupyter. Переменные сохраняются между выполнениями. Используйте этот навык вместо execute_code, когда нужно постепенно накапливать состояние, исследовать API, просматривать DataFrame или итеративно дорабатывать сложный код.
Когда использовать этот навык, а когда другие инструменты
| Инструмент | Когда использовать |
|---|---|
| Этот навык | Итеративное исследование, состояние между шагами, наука о данных, машинное обучение, «дай-ка попробую и проверю» |
execute_code | Одноразовые скрипты, требующие доступа к инструментам vibeos (web_search, файловые операции). Без состояния. |
terminal | Команды оболочки, сборка, установка, git, управление процессами |
Эмпирическое правило: если для задачи вы хотели бы использовать Jupyter notebook — применяйте этот навык.
Предварительные требования
- uv должен быть установлен (проверьте:
which uv) - JupyterLab должен быть установлен:
uv tool install jupyterlab - Должен быть запущен сервер 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 с одной пустой ячейкой кода, затем запустите сессию ядра через REST API Jupyter:
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>' --compact
Состояние сохраняется между вызовами execute. Переменные, импорты, объекты — всё сохраняется.
Многострочный код работает с экранированием $'...':
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 <имя_переменной> --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 '<код>' --compact
# Замена содержимого ячейки (используйте cell-id из вывода contents)
uv run "$SCRIPT" edit --path <notebook.ipynb> replace-source \
--cell-id <id> --source '<новый код>' --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
Практические советы из опыта
-
Первое выполнение после запуска сервера может завершиться тайм-аутом — ядру нужно время на инициализацию. Если получили тайм-аут, просто повторите попытку.
-
Python ядра — это Python JupyterLab — пакеты должны быть установлены в этом окружении. Если нужны дополнительные пакеты, сначала установите их в окружение инструмента JupyterLab.
-
Флаг --compact значительно экономит токены — используйте его всегда. Без него вывод JSON может быть очень многословным.
-
Для чистого REPL создайте scratch.ipynb и не заморачивайтесь с редактированием ячеек. Просто многократно используйте
execute. -
Порядок аргументов важен — флаги подкоманд, такие как
--path, ставятся ПЕРЕД под-подкомандой. Например:variables --path nb.ipynb list, а неvariables list --path nb.ipynb. -
Если сессия ещё не существует, её нужно запустить через REST API (см. раздел Настройка). Инструмент не может выполнять код без активной сессии ядра.
-
Ошибки возвращаются в JSON с трассировкой — читайте поля
enameиevalue, чтобы понять, что пошло не так. -
Иногда возникают тайм-ауты websocket — некоторые операции могут завершаться тайм-аутом с первой попытки, особенно после перезапуска ядра. Повторите попытку один раз, прежде чем переходить к эскалации.
Тайм-ауты по умолчанию
Скрипт имеет тайм-аут по умолчанию 30 секунд на одно выполнение. Для длительных операций передавайте --timeout 120. Используйте щедрые тайм-ауты (60+) для начальной настройки или тяжёлых вычислений.