CodeSpark
§ ПОДРОБНЫЙ ГАЙД

Как устроен CodeSpark

Полный разбор того, что вы получаете: режимы работы, каталог инструментов агента, гибкие политики разрешений, ревью и откат правок, скриншоты в чате, подключение MCP-серверов, делегирование специалистам, билинг, авторизация и приватность.

§Режимы: чат и агент

CodeSpark работает в двух режимах. Чат — диалог с моделью без инструментов: агент отвечает только текстом, не трогает ваш проект. Подходит для «объясни, как это работает» или «накидай скелет SQL-запроса».

Агент — полный цикл: ИИ читает файлы, запускает команды, делает правки, ищет по проекту и продолжает работу, пока задача не решена. По умолчанию включён именно агент.

Переключение в VS Code

Переключение в CLI

§Каталог инструментов

В агентном режиме модель сама решает, какое действие сделать на следующем шаге. Каталог зафиксирован — агент не может выйти за пределы того, что перечислено ниже.

ИнструментЧто делаетПодтверждениеТариф
Чтение проекта
read_fileЧитает файл (UTF-8, до 1 МиБ).не спрашиваетFree
list_filesЛистинг папки, до 500 записей. Уважает .gitignore и .codesparkignore.не спрашиваетFree
search_filesПоиск по regex (RE2) под путём, до 200 совпадений.не спрашиваетFree
semantic_searchПоиск по смыслу через семантический индекс проекта.не спрашиваетPro+
Структура и диагностика
get_diagnosticsОшибки и предупреждения для файла или всей рабочей области.не спрашиваетFree
get_symbolsOutline файла: классы, методы, функции, поля.не спрашиваетFree
get_definition«Перейти к определению» по файл:строка:колонка.не спрашиваетFree
get_referencesВсе ссылки на символ в файле, до 100 локаций.не спрашиваетFree
Изменения
write_fileСоздаёт или полностью перезаписывает файл.требуетсяFree
edit_fileТочечная замена ровно одного фрагмента.требуетсяFree
run_commandЗапуск shell-команды в корне проекта или указанной подпапке.требуетсяFree
Делегирование
taskПередаёт подвопрос специалисту (план / ревью / исследование / сводка) — см. §14.не спрашиваетFree

Структура и диагностика в VS Code достают данные из языковых расширений (TypeScript, Go, Python и т.д.) — то же, что вы видите в «Problems» и «Outline». В CLI get_diagnostics запускает локальный линтер (tsc --noEmit, go vet, cargo check, ruff, eslint по первому совпадению), а get_symbols / get_definition / get_references в CLI пока работают только в VS Code.

§Режимы одобрения

Каждое опасное действие — запись файла, правка, запуск команды — по умолчанию требует явного «да». Режим переключается прямо в панели расширения и запоминается отдельно для каждой рабочей области.

Дефолт по умолчанию для новых рабочих пространств — ключ codespark.defaultApprovalMode в настройках VS Code. В CLI запустите чат с флагом --ask-for-approval ask|on-request|never либо пресетом --plan (read-only + ask) или --yolo (workspace-write + never).

§Политика разрешений

Помимо общего режима одобрения, можно задать тонкие правила в файле .codespark/permissions.json. Поддерживаются три решения для каждого правила: allow (разрешить без вопросов), ask (спросить даже в auto-режиме), deny (запретить без возможности подтвердить). Deny всегда побеждает; allow побеждает ask.

Project-уровень (.codespark/permissions.json в корне проекта) перекрывает user-уровень (~/.codespark/permissions.json) на совпадении имени правила. Расширение VS Code следит за файлами и подхватывает изменения сразу после сохранения.

Что можно ограничивать

Стартовая политика

Команда codespark permissions init создаёт .codespark/permissions.json с разумным набором по умолчанию:

Управление через CLI

codespark permissions

list
Действующие правила (project поверх user).
allow|ask|deny <subject>
Добавить правило в project-конфиг.
remove <subject>
Удалить правило по совпадению.
explain <tool> '{...}'
Показать решение engine для конкретного вызова.
init
Записать стартовую политику.

Subject имеет короткую форму: tool:<name>, path:<glob>, command:<prefix>, command-re:<regex>, mcp-server:<name>, mcp-tool:<name>.

codespark permissions allow path:'docs/**'
codespark permissions deny  path:'infra/**'
codespark permissions allow command:'git push'
codespark permissions explain run_command '{"command":"git status"}'

В VS Code действующая политика отображается в панели «Разрешения» на боковой панели CodeSpark. Правила читаются автоматически после каждого сохранения файла.

§Семантический поиск

На тарифах Pro и Pro Max расширение собирает семантический индекс проекта на серверах в РФ. Агент находит по нему нужные участки кода: на запрос «где валидация JWT» он покажет функции проверки токенов, даже если в коде нет слова «валидация».

Индексация запускается автоматически при первом открытии проекта и обновляется в фоне по ходу работы — никаких команд запускать не нужно. Файлы из .gitignore и .codesparkignore не индексируются и не попадают на сервер.

§Inline-автодополнение

Inline-автодополнение — подсказки кода прямо во время набора: в конце строки появляется серый «призрачный» текст, который принимается клавишей Tab. Подсказки учитывают файл целиком и соседние открытые буферы. Доступно на Pro и Pro Max.

Если подсказки мешают — отключайте в настройках VS Code стандартным ключом editor.inlineSuggest.enabled.

§MCP-серверы

Model Context Protocol — стандарт описания инструментов, которые может вызывать ИИ. Подключённый MCP-сервер запускается локально либо опрашивается удалённо по HTTP, его инструменты появляются у агента наравне со встроенными. Так подключаются Linear, GitHub, базы данных, самописные обёртки над вашим API.

Конфигурация в VS Code

В Settings → Extensions → CodeSpark → Mcp Servers (codespark.mcpServers). Поддерживается тот же формат, что и ~/.codespark/mcp.json:

{
  "github": {
    "transport": "http",
    "url": "https://example.com/mcp",
    "bearer": "<token>"
  },
  "local-fs": {
    "transport": "stdio",
    "command": "node",
    "args": ["./mcp-fs.js"]
  }
}

Если поле transport опущено, считается stdio (back-compat со старым форматом).

Конфигурация в CLI

Тот же конфиг живёт в ~/.codespark/mcp.json (либо в файле, который вы передадите через --mcp-config FILE). Управление:

codespark mcp

list
Показать настроенные серверы и их статус.
get <name>
Конфиг одного сервера.
add <name> --command CMD [--arg X]* [--env K=V]* [--cwd DIR]
Добавить stdio-сервер.
remove <name>
Удалить из конфига.
status [name]
Алиас list; полноценный health-check добавим позже.

Просмотр в VS Code

В боковой панели CodeSpark есть отдельный раздел «MCP-серверы»: он показывает запущенные серверы (✓ — живой, × — ошибка), их транспорт и список инструментов каждого. Раздел обновляется автоматически при изменении настроек.

Безопасность. По умолчанию каждый вызов MCP-инструмента требует подтверждения. Можно явно разрешить весь сервер целиком или конкретные инструменты — см. §4 «Политика разрешений», правила mcp-server и mcp-tool.

§Скриншоты в чате

К любому сообщению можно прикрепить скриншот — и это будет работать с любой моделью каталога, включая YandexGPT и GigaChat, которые сами по себе vision не поддерживают.

Как вставить

Лимиты

Под капотом CodeSpark сам разбирается, как довести изображение до модели — пользователю достаточно знать, что это работает с любым выбранным чат-моделью.

§Код-ревью

Команда codespark review прогоняет текущий git-дифф через ревью-промпт и возвращает замечания. По умолчанию ревьюится git diff HEAD (рабочая копия + индекс).

codespark review

--uncommitted
Явно: git diff HEAD (по умолчанию).
--staged
Только проиндексированные правки.
--base REF
Сравнить с ветвью или коммитом: git diff REF...HEAD.
--format text|json
text — читаемый отчёт; json — массив structured findings [{ severity, file, line, finding, suggestion }].
--model NAME
Переопределить модель ревью.

В TUI чата работает слеш-команда /diff (показать дифф) и /review (ревью текущих изменений в  активной беседе).

codespark review --base main --format json | jq '.[] | select(.severity=="error")'

§Сессии

Каждый чат сохраняется на сервере и доступен из обоих клиентов. В VS Code управление через сайдбар чатов; в CLI — отдельная команда.

codespark session

list [--archived] [--limit N]
Список чатов, по умолчанию активные.
show <id>
Печать транскрипта.
rename <id> <title>
Изменить заголовок.
archive <id> / unarchive <id>
Перенести в архив или вернуть.
delete <id> [--force]
Soft-delete: чат пропадает из списков и через 30 дней удаляется насовсем.
export <id> [--format md|json] [--out PATH]
Markdown — человекочитаемый транскрипт; JSON — полный дамп с карточками инструментов.

Заголовок сессии генерируется автоматически после первого ответа агента; пустой заголовок до этого момента — нормально.

§Откат правок

Каждый write_file и edit_file пишет чекпоинт в ~/.codespark/checkpoints/conversations/<id>/ с preimage и postimage — чтобы можно было откатить правку, не прибегая к git stash.

codespark rewind

list
Чекпоинты текущей беседы.
last [N]
Откатить N последних правок (по умолчанию 1).
all
Откатить все правки беседы.
clear [--force]
Удалить журнал без отката.
--conversation <id>
Указать конкретную беседу вместо последней.
--force
Пропустить подтверждение.

Защита от затирания

Если файл изменён извне после агента (вы что-то добавили в редакторе сами, например), rewind пропустит этот чекпоинт с пометкой «файл изменён извне после правки агента» — текущее содержимое не затирается. Чекпоинт-файл остаётся на диске, чтобы можно было разобраться вручную.

Что НЕ откатывается: shell-команды (run_command) и их побочные эффекты. Для них рекомендуем git stash или git revert.

§Attach: подключиться к идущему ходу

Если вы запустили долгую задачу в одном терминале и закрыли его — на сервере run всё ещё идёт. Команда codespark attach переподключается к живому стриму и показывает прогресс с того места, где он сейчас.

Как подключиться

Самый простой способ — просто запустить codespark attach без аргументов. CLI сам подтянет список ваших активных run'ов и предложит выбрать:

Если run-id уже известен (например, из вывода первой строки стрим-логов или из скрипта) — можно сразу: codespark attach <run-id>.

Список запусков отдельно

Команда codespark runs показывает список ваших запусков — по умолчанию только активные. Полезна как самостоятельная проверка «что у меня крутится» и для скриптования:

codespark runs                        # активные
codespark runs --status=any           # все, включая завершённые
codespark runs --status=failed        # только упавшие
codespark runs show <run-id>          # подробности по одному

Что доступно подключившемуся

Ограничения

§Автоматизация на событиях

Нужно запустить тесты после ответа агента? Или потребовать дополнительное подтверждение перед git push? Или  автоматически добавлять git status к каждому промпту? Для этого есть hooks — локальные shell-команды, привязанные к событиям беседы.

События

Файл конфигурации

Конфиг живёт в .codespark/hooks.json в корне проекта (project-уровень) или в ~/.codespark/hooks.json (user-уровень).

{
  "version": 1,
  "hooks": [
    {
      "event": "PreToolUse",
      "match": { "toolName": "run_command", "commandPrefix": "git push" },
      "command": ".codespark/hooks/confirm-push.sh",
      "blocking": true,
      "timeoutMs": 5000
    },
    {
      "event": "Stop",
      "command": "make fmt",
      "blocking": false
    }
  ]
}

JSON-контракт

Хук получает контекст события на stdin в виде JSON (event, scope, conversationId, runId, для Pre/PostToolUse — toolName и args, для UserPromptSubmit — promptText). Может вернуть на stdout JSON-объект:

{
  "decision": "block" | "allow" | "continue",
  "context":  "текст, который добавится к промпту модели",
  "message":  "сообщение для пользователя"
}

decision: "block" отменяет действие (только для blocking-хуков). "allow" — разрешить без подтверждения. Поле context присоединяется к контексту модели (например, на UserPromptSubmit — чтобы прицепить вывод git status к каждому промпту).

Hot-reload. Расширение VS Code следит за файлом .codespark/hooks.json через FileSystemWatcher и подхватывает изменения сразу после сохранения. CLI читает конфиг один раз на старте сессии — перезапустите чат, чтобы применить новые хуки.

§Делегирование специалистам

Большие задачи проще решать, разбивая их на части. Агент умеет это сам через специальный инструмент task: он запускает «специалиста» с собственным контекстом и ограниченным набором инструментов.

Доступные специалисты

СпециалистЧто делаетИнструментыЛимит итераций
exploreИсследует кодовую базу для ответа на узкий вопрос.read_file, list_files, search_files, semantic_search, get_symbols12
planДекомпозирует задачу на коммит-сайз шаги.read_file, search_files, semantic_search8
reviewКороткое ревью диффа или куска кода.read_file, get_diagnostics, get_definition6
summarizeСжимает длинный вывод в 5–10 строк.1

Каждый специалист — это полноценный under-the-hood run со своим conversation_id и собственным system prompt'ом. Стоимость идёт через тот же billing pipeline, что и  у основного хода (специалист тратит ваши спарки точно так же, как и любой другой вызов модели).

В интерфейсе кадры специалиста группируются как «вложенный ход» под карточкой инструмента task. Старые клиенты, которые ещё не умеют группировать, — просто увидят кадры подряд в общем потоке.

Прямого вызова task снаружи нет — это инструмент для модели. Чтобы агент его использовал, попросите его явно: «спланируй сначала через task plan, затем реализуй» или  «отдай эту часть на ревью task review».

§CLI: команды и флаги

Команды

codespark
Открыть интерактивный чат (то же, что codespark chat).
chat
Интерактивный диалог.
login / logout
Вход и выход (Email-OTP).
whoami
Текущий пользователь, тариф, баланс.
init
Создать AGENTS.md, .codespark/ и стартовую политику разрешений.
skills [list]
Список скиллов из .codespark/skills/, .agents/, .claude/skills/.
mcp …
Управление MCP-серверами — см. §7.
session …
Управление чатами — см. §10.
review …
Код-ревью диффа — см. §9.
permissions …
Политика разрешений — см. §4.
rewind …
Откат правок — см. §11.
attach [run-id]
Подключиться к идущему run'у; без id — picker из активных. См. §12.
runs …
Список запусков: list / show — см. §12.
doctor
Диагностика: сеть, токен, версия Node, терминал.
update
Проверить и поставить новую версию CLI.
version
Версия и SHA сборки.
help
Справка.

Глобальные флаги chat

-p, --print TEXT
Однократный запрос без REPL.
-c, --continue
Продолжить последнюю сессию в этой папке.
-r, --resume [ID]
Возобновить сессию (без ID — открыть picker).
--session-id ID
Жёсткий resume без picker'а.
-m, --model NAME
Каноничный ID модели (напр. gpt-5-mini).
--mode chat|agent
Режим запуска.
--effort low|medium|high
Уровень рассуждений (для поддерживающих моделей).
-i, --image PATH
Прикрепить изображение (можно несколько раз).
--add-dir DIR
Дополнительная папка в контексте.
-C, --cd DIR
Сменить рабочую папку перед запуском.
--sandbox MODE
read-only / workspace-write / full-access.
--ask-for-approval M
ask / on-request / never.
--yolo
Сокращение для workspace-write + never.
--plan
Сокращение для read-only + ask.
--mcp-config FILE
Путь к альтернативному mcp.json.
-o, --output-format text|json
JSON — NDJSON-кадры в stdout (для CI).
--no-color
Без ANSI-цветов.
--rest-url / --ws-url
Перебить эндпоинты (для тестов).
-v, --version / -h, --help
Версия и справка.

§Слеш-команды

В TUI интерактивного чата работают команды-слеши. Все имеют русские алиасы для удобства.

КомандаАлиасыЧто делает
/help/помощь, /?Справка по командам.
/quit/exit, /q, /выходВыйти из чата.
/clear/new, /reset, /очиститьОчистить экран.
/cost/usage, /stats, /стоимостьТраты текущей сессии.
/skills/скиллыДоступные скиллы.
/chats/sessions, /resume, /history, /чаты, /историяСписок ваших чатов; продолжить любой.
/update/upgrade, /обновить, /обновлениеОбновить CLI до последней версии.
/mode [chat|agent]/режимТекущий режим или переключить.
/model [id]Список моделей или переключить.
/approval [строго|авто|чтение]/perm, /разрешенияРежим одобрения, плюс list, clear, allow <tool>.
/diff [--staged|--base REF]/диффGit-дифф рабочей копии — см. §9.
/review [...]/ревьюРевью текущего диффа.
/mcp/mcp listСписок MCP-серверов.
/permissions/permsДействующая политика разрешений.
/rewind [N|all]/undo, /откатОткат N последних правок.
/export [md|json]/экспортЭкспортировать сессию.
/rename <title>/переименоватьПереименовать сессию.
/archive/архивироватьАрхивировать сессию.

Слеши /diff, /review, /mcp, /permissions, /rewind, /export, /rename, /archive в TUI показывают подсказку с готовой CLI-командой — её можно скопировать и запустить в соседнем терминале для интерактивного выполнения.

Кроме встроенных, в TUI работают пользовательские скиллы как слеш-команды: /<имя-скилла> подставит тело скилла из .codespark/skills/<имя>/SKILL.md.

§Файлы и директории

Глобальные (user-уровень)

В корне проекта

Команда codespark init в корне проекта создаёт нужный минимум.

§Каталог моделей

Все модели доступны после входа — ничего настраивать не нужно.

МодельКонтекстМинимальный тариф
Anthropic Claude
Claude Opus 4.71 000 000Pro
Claude Sonnet 4.61 000 000Pro
Claude Haiku 4.5200 000Pro
OpenAI GPT-5
GPT-5400 000Pro
GPT-5.51 050 000Pro
GPT-5 Codex400 000Pro
GPT-5 Mini400 000Free
GPT-5 Nano400 000Free
Google Gemini
Gemini 3.1 Pro Preview1 048 576Pro
Gemini 2.5 Pro1 048 576Pro
Gemini 2.5 Flash Lite1 048 576Free
Российские
YandexGPT 5.1 Pro128 000Pro
YandexGPT 5 Lite32 000Free
GigaChat 2 Max131 072Pro
GigaChat 2 Lite131 072Free
Прочие
DeepSeek V4 Pro / Flash1 048 576Free / Pro
Grok 4.1 Fast / 4.202 000 000Pro
Kimi K2.6, Qwen3 Coder, GLM 4.7, Codestral 2508200K–262KPro

Сменить модель прямо в беседе можно через /model <id> в TUI, через флаг --model на запуске CLI или через picker модели в панели чата VS Code.

§Спарки и биллинг

Спарк — внутренняя единица учёта вычислений в CodeSpark. Один спарк = 3 ₽. Стоимость каждого вызова считается по входным/выходным токенам и тарифу выбранной модели.

Тарифы

Докупка спарков

Если плановых не хватает, можно купить пакет: 100, 500 или 2 000 спарков. Докупленные спарки не сгорают и тратятся только после плановых.

Оплата

Все платежи проходят через ЮKassa. Принимаются карты МИР и через СБП. Иностранные карты не нужны. Чек 54-ФЗ формируется автоматически.

§Авторизация

Поддерживаются два способа входа:

Никаких паролей хранить не нужно. Токен сохраняется на диск с правами 0600.

Выйти из аккаунта — команда «CodeSpark: Sign Out» в палитре VS Code или codespark logout в CLI.

§Приватность

Юридические документы — Политика конфиденциальности, Пользовательское соглашение, Оферта, Политика возврата.