VS Code LLM AssistantAI-ассистент для VS Code — многорежимный агент с LLM через любые OpenAI-совместимые API. Самый дешёвый и приватный агент не в облаке: твои ключи, твои модели, локальный код.
СкриншотыЧат-панель — сайдбар сессий, тулбар, тумблеры режимов (Ask/Agent/План/Субагенты):
Сайдбар сессий — поиск, группировка «Сегодня», избранное:
Агентный режим — дружелюбные шаги + свёрнутый трейс «🔧 Выполнено N шагов»:
Подтверждение операций — инлайн-дифф перед записью файла:
Edit — инлайн-дифф предложения правки:
Autocomplete — ghost text по мере ввода:
Субагенты (
УстановкаИз Marketplace:
Или: VS Code → Extensions ( Из
Быстрый старт:
Возможности🤖 Агентный кодинг
📋 Plan Mode
🔍 Standalone AI-ревью
⚡ Слэш-команды
🎭 Multi-Agent (
|
| Команда | Действие |
|---|---|
LLM Assistant: Открыть чат |
Фокус на вкладку чата (Ctrl+Shift+L) |
LLM Assistant: Добавить выделение в контекст |
Прикрепить выделенный код к последнему сообщению |
LLM Assistant: Редактировать выделенный код |
Edit-режим: инлайн-дифф выделения (Ctrl+I) |
LLM Assistant: Вкл/Выкл автокомплит |
Переключить автодополнение |
LLM Assistant: Запустить агентный режим |
Запустить ReAct-агента (Ctrl+Shift+A) |
LLM Assistant: Выбрать провайдер |
Сменить провайдера / модель |
LLM Assistant: Открыть историю запусков |
Вкладка «История» (таблица запусков) |
LLM Assistant: Review File |
Ревью активного файла или выделения |
LLM Assistant: Экспортировать сессию |
Экспорт транскрипции в .md (системный save-диалог) |
LLM Assistant: Скопировать сессию (fork) |
Копия активной сессии («… (копия)») |
LLM Assistant: Удалить все сессии |
Полная очистка (с модальным подтверждением) |
Полная конфигурация
Все настройки в settings.json VS Code (User или Workspace).
Провайдеры (llmAssistant.providers)
{
"llmAssistant.providers": {
"my-provider": {
"baseUrl": "https://api.example.com/v1",
"apiKey": "${API_KEY}",
"models": ["model-name-1", "model-name-2"],
"supportsVision": false,
"systemPrompt": "Опциональный кастомный промпт"
}
}
}
| Поле | Тип | Описание |
|---|---|---|
baseUrl |
string | URL API (OpenAI-совместимый) |
apiKey |
string | Ключ API. Поддерживает ${ENV_VAR} |
models |
string[] или {name, pricing}[] |
Список моделей; объектная форма задаёт цены для расчёта стоимости |
supportsVision |
boolean | true для vision-моделей (изображения) |
systemPrompt |
string | Кастомный промпт для этого провайдера |
Цены моделей (для подсчёта стоимости): вместо строки укажи объект:
"models": ["deepseek-chat", { "name": "deepseek-v4-pro", "pricing": { "input": 0.435, "output": 0.87 } }]
Основные настройки
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
llmAssistant.defaultProvider |
string | "openai" |
Провайдер по умолчанию |
llmAssistant.defaultModel |
string | "gpt-4o" |
Модель по умолчанию |
llmAssistant.debug |
boolean | false |
Дебаг-логирование в Output Channel LLM Assistant |
llmAssistant.disableThinking |
boolean | false |
Отключить режим размышлений (thinking) для deepseek-моделей в чате/агенте/редактировании. Экономит токены и ускоряет ответ |
Чат (llmAssistant.chat)
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
chat.systemPrompt |
string | "Ты — AI-ассистент…" |
Системный промпт для чата |
chat.agentSystemPrompt |
string | "Ты — AI-агент…" |
Системный промпт для агента |
chat.maxContextTokens |
number | 4096 |
Максимум токенов контекста |
chat.includeOpenFile |
boolean | true |
Прикреплять открытый файл к запросу |
chat.summaryEnabled |
boolean | true |
Включить summary при переполнении |
chat.summaryModel |
string | "" (текущая) |
Модель для генерации summary |
chat.summaryTriggerTokens |
number | 2048 |
Порог обрезанных токенов для запуска summary |
Агент (llmAssistant.agent / llmAssistant.apply)
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
agent.model |
string | "gpt-4o" |
Модель агентного режима (если не задана — defaultModel) |
agent.requireConfirmation |
boolean | true |
Подтверждение перед записью/изменением файлов |
apply.allowedTools |
string[] | [] (все) |
Список разрешённых инструментов агента |
apply.maxIterations |
number | 20 |
Максимум шагов агента |
apply.requireConfirmation |
string[] | ["write_file","replace_in_file","run_terminal"] |
Инструменты, требующие подтверждения |
Инструменты агента: read_file, write_file, replace_in_file, patch_file, list_files, search_files, run_terminal, web_fetch, ask_user, delegate_to_agent.
Приоритет конфигурации: .vscode/llm-assistant.json (workspace) > глобальные настройки VS Code.
Пример .vscode/llm-assistant.json:
{
"allowedTools": ["read_file", "search_files"],
"requireConfirmation": ["run_terminal"]
}
AGENTS.md (llmAssistant.agentsMd)
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
agentsMd.enabled |
boolean | true |
Автоинжект AGENTS.md из корня workspace |
Ретраи (llmAssistant.retry)
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
retry.enabled |
boolean | true |
Включить ретраи |
retry.maxRetries |
number | 3 |
Максимум повторных попыток |
retry.requestTimeout |
number | 60 |
Таймаут запроса (секунды) |
MCP (llmAssistant.mcp)
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
mcp.servers |
object[] | [] |
Список MCP-серверов |
Формат сервера:
{
"name": "filesystem",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"],
"env": { "VAR": "value" },
"enabled": true
}
| Поле | Тип | Описание |
|---|---|---|
name |
string | Уникальное имя сервера |
command |
string | Исполняемый файл (npx, node, python3 — spawn в PATH) |
args |
string[] | Аргументы командной строки |
env |
object | Переменные окружения |
enabled |
boolean | false чтобы временно отключить без удаления |
Autocomplete (llmAssistant.autocomplete)
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
autocomplete.enabled |
boolean | true |
Включить автокомплит |
Multi-Agent — оркестратор (@orchestrate)
В 🤖 Агенте используй команду @orchestrate:
@orchestrate Создай REST API для списка задач на TypeScript
Что происходит:
- Создаётся цепочка из 3 воркеров: architect → coder → reviewer
- Каждый воркер получает контекст от предыдущего
- Результаты стримятся в чат и во вкладку «🎭 Оркестратор»
- История сохраняется в сессию
Стратегии:
| Стратегия | Описание |
|-----------|----------|
| sequential | Каждый следующий получает результат предыдущего |
| parallel | Все работают одновременно |
| pipeline | Как sequential, но артефакты сохраняются в SharedContext |
Вкладка «Оркестратор»:
- Дерево воркеров с иконками (⏳ ожидание, 🔄 выполняется, ✅ готово, ❌ ошибка)
- Прогресс-бар
- Детали по клику (шаги, токены, ответ)
Настройка агентов — .llma/
Создай папку .llma/ в корне проекта:
проект/
└── .llma/
├── main.md ← главный агент (чат + 🤖)
├── agents/
│ ├── architect.md ← роль «архитектор»
│ ├── coder.md ← роль «программист»
│ └── reviewer.md ← роль «ревьюер»
└── skills/
└── my-skill.md ← кастомный скил (вызов через /my-skill)
.llma/main.md — правила проекта, автоинжектятся в system prompt чата и агента:
## Правила
- Комментарии в коде — на русском
- Отвечай кратко
.llma/agents/{role}.md — роли для @orchestrate и делегирования. Пример reviewer.md:
Ты — ревьюер кода. Найди проблемы и предложи улучшения.
## Правила
- Ищи: ошибки, утечки, проблемы с типами
- Отмечай хорошие решения
.llma/skills/{name}.md — кастомные скилы. Frontmatter: name, version, tools, description. Вызов: /имя-скила или /skill имя.
Все файлы опциональны. Если их нет — используются дефолтные промпты.
Устранение проблем
| Проблема | Решение |
|---|---|
| «Неверный API ключ» | Проверь apiKey в настройках или env-переменную |
| «Сервер не отвечает» | Проверь baseUrl и интернет |
| «Лимит запросов» (429) | Подожди или смени провайдера |
| Автокомплит не работает | Проверь autocomplete.enabled |
| Агент не вызывает инструменты | Убедись, что провайдер поддерживает function calling |
| Агент завис | Нажми ⏹️ (отмена) или увеличь apply.maxIterations |
| Логи | Output → канал LLM Assistant (llmAssistant.debug: true) |
Разработка
- Стек: TypeScript, VS Code Extension API, WebView, Webpack
- Тесты: Mocha + Sinon (449 mocked), E2E в реальном VS Code (22 теста), GitHub Actions CI
- SDD: 41 spec-файлов (
specs/), валидатор, pre-commit + CI - Репозиторий: github.com/alekseyber/vscode-llm-assistant
- Спецификации: specs/ — 38 компонентов (+3 мета-документа), интерфейсы, контракты, AC
- Changelog: CHANGELOG.md
npm install
npm run compile # Сборка
npm run lint # Линтер
npm run test:mocked # Тесты без VS Code (449 шт.)
node scripts/spec-validate.js # Проверка SDD
Запуск в режиме разработки: F5 → «Run Extension» → Extension Development Host.
Установка локальной сборки:
rm -rf ~/.vscode-server/extensions/alekseyber.vscode-llm-assistant-*
code --install-extension vscode-llm-assistant-0.13.0.vsix
Лицензия
MIT






