Typing While LLM Thinks (VSCode extension)
Туда, где обычно скучаешь и листаешь Twitter, пока Claude Code / Copilot / Cursor генерируют ответ — встаёт тренажёр слепой печати. Как только модель ответила, фокус автоматом возвращается в терминал (или в редактор — настраивается).
Что внутри
- Webview-панель с тренажёром (русский, английский, код или микс — выбирается в настройках).
- Команды и хоткеи для ручного управления.
- Локальный HTTP-сервер (
127.0.0.1:9785), который ловит сигналы от Claude Code хуков, чтобы запускать/останавливать тренажёр автоматически.
Установка (dev)
- Скопируй папку
vscode-typing-while-llm-thinks/ куда удобно.
- В терминале внутри неё (опционально):
npm init -y && npm install --save-dev @types/vscode # типы, не обязательны
- Открой папку в VSCode и нажми
F5 — откроется Extension Development Host с уже активным расширением.
(Для упаковки в .vsix: npx @vscode/vsce package.)
Команды
| Команда |
Хоткей (mac / win-linux) |
Typing Trainer: Start (LLM is thinking) |
cmd+alt+t / ctrl+alt+t |
Typing Trainer: Stop (LLM replied) |
cmd+alt+y / ctrl+alt+y |
Typing Trainer: Toggle |
cmd+alt+u / ctrl+alt+u |
Typing Trainer: Open Panel |
(через Command Palette) |
Авто-режим (Claude Code)
Claude Code умеет вызывать произвольные команды на событиях. Добавь в ~/.claude/settings.json следующее (или скопируй из hooks/claude-code-settings.example.json, аккуратно слив со своими хуками):
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [{ "type": "command", "command": "curl -s -m 1 -X POST http://127.0.0.1:9785/llm/start >/dev/null 2>&1 || true" }] }
],
"Stop": [
{ "hooks": [{ "type": "command", "command": "curl -s -m 1 -X POST http://127.0.0.1:9785/llm/stop >/dev/null 2>&1 || true" }] }
],
"Notification": [
{ "hooks": [{ "type": "command", "command": "curl -s -m 1 -X POST http://127.0.0.1:9785/llm/notify >/dev/null 2>&1 || true" }] }
]
}
}
После этого:
- ты отправляешь промпт в Claude Code →
UserPromptSubmit → панель тренажёра встаёт активной;
- Claude закончил ответ →
Stop → тренажёр на паузе, фокус возвращается в терминал;
- Claude задал вопрос (
Notification) → так же выходит из тренажёра.
Гибридный режим
Авто работает только когда HTTP-сервер запущен и хуки настроены. Если что-то отвалилось — ручные хоткеи всегда доступны. То есть можно либо включать тренажёр самому, либо доверить хукам — оба способа сосуществуют.
Настройки
typingTrainer.httpPort — порт локального сервера (по умолчанию 9785).
typingTrainer.enableHttpServer — выключить, если хуки не нужны.
typingTrainer.refocusOnStop — куда уходит фокус при ответе: terminal (по умолчанию, лучшее для Claude Code), editor, none.
typingTrainer.wordLanguage — mixed, ru, en, code.
Известные ограничения
- Авто-режим работает только с инструментами, у которых есть аналог хуков (Claude Code — да). Для Copilot Chat / Cursor пока только ручные хоткеи.
- HTTP-сервер слушает только
127.0.0.1 — внешние подключения отбрасываются.
- Тренажёр живёт в webview панели VSCode; пока панель скрыта другими табами, ввод не ловится — открой её в side group.