@kernelonpanic/kitcode
v1.3.1
Published
Terminal coding agent with a config you never have to write by hand
Maintainers
Readme
KitCode
English · Русский
╱\_╱\
( o.o )
> ^ <KitCode — терминальный агент для работы с кодом. Он читает и изменяет файлы, ищет по проекту, запускает команды, подключает внешние инструменты через MCP и сохраняет историю сессий.
Интерфейс построен на TypeScript, React и Ink. Поддерживаются Anthropic API и OpenAI-совместимые провайдеры, включая OpenRouter и локальные серверы.
Возможности
- потоковые ответы и отображение reasoning;
- чтение, создание и точечное редактирование файлов;
- поиск по именам и содержимому файлов;
- запуск shell-команд с подтверждением;
- режимы
normal,acceptиplan; - продолжение и восстановление прошлых сессий с обычным scrollback терминала;
- поиск по сессиям, переименование, удаление и экспорт в Markdown;
- история введённых сообщений по клавишам
↑и↓; - очередь сообщений, пока агент занят;
- вложения PNG, JPEG, GIF, WebP и текстовых UTF-8 файлов;
- ручное и автоматическое сжатие старого контекста;
- индикатор токенов, стоимости, точного заполнения контекста и rate limits провайдера;
- автоматические чекпоинты файлов и команда
/undo; - автоматическое определение проверок проекта после правок;
- переключение моделей и провайдеров из TUI;
- добавление, включение, выключение и удаление MCP без перезапуска, skills и субагенты;
- команда
/checkerдля проверки runtime, провайдера, сессии, контекста и MCP; - русский и английский интерфейс, настраиваемый цвет темы.
Требования
- Node.js 22 или новее;
- npm.
Установка
npm i -g @kernelonpanic/kitcodeУстановка из исходников
git clone https://github.com/KernelEditor/KitCode.git
cd KitCode
npm install
npm run build
npm linkПосле npm link команда kitcode доступна глобально. Для запуска без глобальной установки:
npm run devПервый запуск
kitcodeПри первом запуске KitCode предложит выбрать язык, ввести базовый URL API и ключ. Затем он определит тип провайдера, загрузит доступные модели и откроет основное окно агента.
Примеры базовых URL:
https://api.anthropic.com
https://openrouter.ai/api/v1
http://localhost:11434/v1Командная строка
| Команда | Назначение |
| --- | --- |
| kitcode | Запустить TUI в текущей директории. |
| kitcode -c | Продолжить последнюю сессию этого проекта. |
| kitcode -r <id> | Восстановить сессию по идентификатору. |
| kitcode --cwd <path> | Использовать другую рабочую директорию. |
| kitcode --model <provider/model> | Запуститься с выбранной моделью. |
| kitcode --mode <normal|accept|plan> | Выбрать начальный режим работы. |
| kitcode sessions | Показать сохранённые сессии. |
| kitcode ask "вопрос" | Выполнить один запрос без TUI. |
| kitcode add <url> | Добавить провайдера; ключ вводится в скрытом поле. |
| kitcode add <url> --key-env <name> | Прочитать ключ из переменной окружения. |
| kitcode trust | Включить конфиг и skills текущего проекта. |
| kitcode config | Показать расположение конфига и ключей. |
| kitcode config --local | Создать конфиг проекта ./kitcode.json. |
| kitcode prompt list | Показать сохранённые промты. |
| kitcode prompt rm <slug> | Удалить сохранённый промт. |
Команды внутри TUI
Нажмите /, чтобы открыть список команд.
| Команда | Назначение |
| --- | --- |
| /model | Выбрать модель. |
| /provider | Переключить провайдера. |
| /login · /logout [provider] | Добавить провайдера или выбрать конкретный API для выхода. |
| /key [provider] | Сменить ключ провайдера. |
| /refresh [provider] | Перечитать список моделей провайдера в обход суточного кеша. |
| /effort [auto|low|medium|high|xhigh|max] · /thinking | Выбрать effort и настроить reasoning. |
| /memory show · /memory set <текст> · /memory clear | Просмотреть, заменить или очистить постоянные заметки проекта. |
| /resume · /clear | Восстановить сессию или начать новую. |
| /sessions | Найти сессию и открыть, переименовать, удалить или экспортировать её. |
| /sessions list | Показать все сохранённые сессии. |
| /sessions rename <id> <название> | Переименовать сохранённую сессию. |
| /sessions delete <id> | Удалить сохранённую сессию. |
| /sessions delete all | Удалить все сохранённые чаты после двух отдельных подтверждений. |
| /sessions export <id> [путь] | Экспортировать сессию в приватный Markdown-файл (по умолчанию .kitcode-exports/). |
| /attach <путь> · /attach clipboard · /attach clear | Управлять вложениями следующего сообщения; введите @ в строке ввода для поиска и прикрепления файла проекта. |
| /compact | Заменить старую часть контекста краткой сводкой модели. |
| /update | Проверить новую версию KitCode в npm. |
| /subagents | Показать текущее количество активных суб-агентов. |
| /undo | Откатить встроенные правки файлов из последнего сообщения. |
| /usage | Показать токены, запросы, стоимость, доступный баланс и rate limits, если API их отдаёт. |
| /checker | Проверить настройку и список моделей без платного chat-запроса. |
| /prompt | Вставить сохранённый промт. |
| /prompt save <name> | Сохранить последнее сообщение как промт. |
| /prompt delete <name> | Удалить сохранённый промт. |
| /skills · /mcp list | Показать skills и состояние MCP. |
| /mcp add <имя> <url> | Добавить и сразу подключить MCP-сервер. |
| /mcp add <имя> -- <команда> [аргументы] | Добавить и подключить локальный MCP-сервер. |
| /mcp enable <имя> · /mcp disable <имя> | Подключить или отключить MCP без удаления. |
| /mcp delete <имя> | Отключить и удалить MCP-сервер. |
| /theme · /lang | Изменить тему или язык. |
| /config | Показать активный конфиг. |
| /bypass | Переключить работу без запросов подтверждения. |
| /help · /exit | Показать помощь или выйти. |
Клавиши
| Клавиша | Действие |
| --- | --- |
| Enter | Отправить сообщение или выбрать пункт. |
| ↑ / ↓ | Листать историю сообщений или пункты меню. |
| Tab | Дополнить slash-команду или выбранный файл после @. |
| Shift+Tab | Переключить режим normal → accept → plan. |
| Ctrl+V / Cmd+V | Прикрепить картинку из системного буфера; явный запасной вариант — /attach clipboard. |
| Esc | Остановить текущий запрос или закрыть окно. |
Сообщения можно вводить, пока агент работает: они попадут в очередь и выполнятся по порядку.
Режимы
normal— изменения файлов, shell и MCP при необходимости запрашивают подтверждение;accept— изменения файлов применяются автоматически;plan— агент исследует проект и отвечает планом без изменений.
Текущий режим, модель и usage отображаются в нижней панели, а заполняющаяся слева направо колба
контекста — справа. До 60% она зелёная, затем жёлтая, а с 85% — красная. ctx ? означает, что
провайдер ещё не вернул точный usage для текущей модели. Под колбой показывается количество
подключённых MCP. Завершённый вывод переносится в обычный
scrollback терминала, поэтому историю можно плавно листать даже во время потокового ответа.
При достижении 80% известного окна KitCode автоматически сворачивает старые сообщения в сводку,
оставляя последние два пользовательских хода. Команда /compact запускает это вручную.
Перед изменением файла встроенными инструментами write и edit KitCode создаёт приватный
чекпоинт. Команда /undo восстанавливает последний чекпоинт и не перезаписывает более свежие
ручные изменения. После правок KitCode определяет стандартные команды проекта — например lint,
typecheck и test — и перед запуском показывает их для подтверждения.
Reasoning effort
Откройте /effort для выбора в меню или используйте /effort high, чтобы задать уровень сразу.
Команда показывает выбранный уровень и значение, которое KitCode отправит API для текущей переписки.
Это проверяет кодирование запроса, но не гарантирует, что шлюз провайдера применит параметр.
auto выбирает medium для коротких общих запросов и high для длинных сообщений или задач с
признаками исправления, тестирования и реализации. Это локальная эвристика, а не оценка сложности
моделью. Ручной уровень отключает эвристику. Для исходного GPT-5, GPT-5.1 и o-серии KitCode
сводит xhigh и max к high; для GPT-5.2–5.4 max сводится к xhigh. Для неизвестных
OpenAI-совместимых моделей параметр не отправляется. Anthropic получает выбранный уровень в
output_config. Реальная поддержка зависит от модели и провайдера.
Память проекта
Заметки проекта сохраняются между чатами, /clear и перезапусками:
/memory show
/memory set Запускать npm test перед коммитом. Ченджлог публиковать только в GitHub Release.
/memory clearset заменяет всю заметку; clear запрашивает подтверждение. Лимит — 16 000 символов. Файлы
хранятся в ~/.kitcode/memory/, отдельно для каждого канонического пути проекта.
Агент тоже может использовать инструмент memory: читать, добавлять, заменять и удалять записи.
Для изменений он обязан указать источник: инструкцию пользователя или подтверждение из файла либо
инструмента. В транскрипте показывается diff. Точная замена и удаление защищают соседние записи.
В обычном и accept-режимах инструмент разрешён по умолчанию. Ограничьте его через
permissions.memory значением ask или deny. Plan-режим блокирует инструмент.
Агент сохраняет подтверждённые факты проекта, явные предпочтения и принятые решения. Он должен проверять старые заметки по текущим файлам. Временный прогресс остаётся в переписке. Redaction секретов работает по известным шаблонам, поэтому ключи и пароли не записывайте. Сжатие контекста отдельно сохраняет требования, подтверждения, команды проверок и результаты, предположения и оставшуюся работу. Модель всё ещё может пропустить детали в автоматически созданной сводке.
Конфигурация
Основные файлы KitCode:
| Путь | Содержимое |
| --- | --- |
| ~/.kitcode/config.json | Глобальные настройки. |
| ~/.kitcode/auth.json | Ключи провайдеров. |
| ~/.kitcode/sessions/ | Сохранённые сессии. |
| ~/.kitcode/checkpoints/ | Автоматические чекпоинты для /undo. |
| ~/.kitcode/prompts/ | Сохранённые промты. |
| ~/.kitcode/skills/ | Глобальные skills. |
| ./.kitcode/skills/ | Skills текущего проекта. |
| ./kitcode.json | Локальный конфиг проекта. |
Минимальный пример ручной настройки провайдера:
{
"version": 1,
"model": "openrouter/openai/gpt-5",
"providers": {
"openrouter": {
"type": "openai",
"baseUrl": "https://openrouter.ai/api/v1",
"keyEnv": "OPENROUTER_API_KEY"
}
}
}Основные параметры: model, effort, thinking, maxTokens, budget и diagnostics,
theme, permissions, providers и mcp. Секция budget задаёт лимиты запросов к модели, токенов,
примерной стоимости (если провайдер сообщает цены) и субагентов на одно сообщение.
diagnostics.autoRun включает проверки после правок, а diagnostics.commands позволяет заменить
автоопределение списком до восьми команд. При каждом входе KitCode проверяет новую версию в npm и,
если она вышла, показывает команду обновления. /update повторяет проверку вручную.
Обычно редактировать конфиг вручную не требуется —
провайдер можно добавить при первом запуске или через /login.
После проверки проекта включите его локальный конфиг и skills командой:
kitcode trustКоманда kitcode trust --revoke снова оставит для проекта только глобальные настройки и skills.
MCP и skills
MCP поддерживает локальные stdio-серверы и удалённые HTTP-серверы. Ими можно управлять из TUI:
/mcp add docs https://mcp.example.com/mcp
/mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem .
/mcp list
/mcp disable filesystem
/mcp enable filesystem
/mcp delete filesystemСерверы сохраняются в секции mcp:
{
"mcp": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${env:GITHUB_TOKEN}"
}
}
}
}Skill — это директория с файлом SKILL.md. Глобальные skills находятся в
~/.kitcode/skills, проектные — в ./.kitcode/skills.
Во вложениях поддерживаются PNG, JPEG, GIF и WebP до 10 МБ, а также UTF-8 текст до 256 КБ. Если вставить или перетащить отдельный путь к существующему файлу, он автоматически появится чипом под полем ввода. Содержимое отправляется провайдеру только вместе со следующим сообщением.
Разработка
npm run dev # запустить исходники через tsx
npm run build # собрать dist/index.js
npm run typecheck # проверить TypeScript
npm test # запустить тестыОсновные директории:
src/app/ запуск приложения и runtime
src/core/ цикл агента, сессии и usage
src/providers/ Anthropic и OpenAI-совместимые адаптеры
src/tools/ файловые, shell и служебные инструменты
src/mcp/ MCP-клиент и адаптер инструментов
src/ui/ TUI на Ink
test/ тесты VitestЛицензия
MIT
