Слеш-команды (промпты)¶
Это специальные заготовки промптов, которые начинаются с символа / и позволяют быстро выполнять предопределённые действия в Koda. Они доступны в режимах Чат и Агент.
Слеш-команды упрощают работу с AI, предоставляя готовые сценарии для типовых задач.
Каждая команда должна иметь уникальное имя и описание.
Как использовать¶
- Введите / в поле ввода чата
- Выберите команду из выпадающего списка
- Нажмите Enter
Перед этим можно выделить часть текста в редакторе и нажать Ctrl/⌘ + L. Тогда выделенный текст будет подготовлен для отправки в следующем сообщении. Это позволит модели сфокусироваться на указанном участке.
Примеры: /explain, /review, /test
Встроенные команды¶
Koda поставляется с небольшим набором встроенных слеш-команд. Их невозможно переопределить или удалить.
/kodamd¶
Создаёт или обновляет контекстный файл KODA.md в корне текущего открытого проекта с описанием правил и технических подробностей.
Подробнее о контекстных файлах можно прочесть здесь: Контекстные файлы
Как работает:
- Анализирует структуру проекта
- Определяет технологии и фреймворки
- Создаёт файл
KODA.mdс правилами - Добавляет лучшие практики для проекта
Результат:
# KODA.md — Правила проекта
## Технологии
- TypeScript
- React
- Node.js
## Стиль кода
- Использовать ESLint
- Следовать Airbnb Style Guide
## Структура
- Компоненты в `/components`
- Хуки в `/hooks`
/summarize¶
Сжимает контекст, создавая краткий конспект всего диалога для экономии токенов.
Когда использовать:
- Диалог стал слишком длинным (>20 сообщений)
- Предупреждение о переполнении контекста (75%+)
- Завершение этапа работы
- Перед переключением на новую задачу
- Хотите сохранить ключевые решения
Как работает:
- Анализирует всю историю диалога
- Выделяет ключевые решения и изменения
- Сохраняет информацию о файлах и инструментах
- Создаёт краткий конспект (до 500 слов)
- Добавляет summary сообщение в историю
Результат: сжатие контекста около 50%.
Автоматическая суммаризация:
- Срабатывает при 75% использования контекста
- Только в агентском режиме
- Настраивается через
settings.autoSummarize
Подробности о сжати контекста читайте здесь: Суммаризация диалогов
Пользовательские команды¶
Вы можете создавать собственные слеш-команды в конфигурации. Причём как глобально, для использования только на своей машине, так и в репозитории проекта.
Ниже показаны два примера. На их базе можно сделать
Создание глобальной команды¶
Файл: ~/.koda/config.yaml
prompts:
- name: review
description: Код-ревью (это поле необязательно)
prompt: |
Проведи код-ревью: найди сложный код, уязвимые места, необработанные ошибки.
Аргументируй, и предложи варианты решения.
Не изменяй файлы на диске, ожидай ответа.
Создание локальной команды¶
Файл: <workspace>/.koda/prompts/my-command.prompt
---
# после сохранения этого файла можно будет использовать команду /explain
name: explain (1)
description: Объяснение кода (2)
temperature: 0.7 (3)
maxTokens: 4000 (4)
---
<system> (5)
Ты - опытный Python-разработчик, который умеет объяснять сложный код простыми словами.
</system>
(6) Проанализируй следующий код и предложи улучшения:
@currentFile (7)
- Команда будет выглядеть как
/explain, а если не указано, тоmy-commandпо имени файла (необязательно) - Просто подсказка для вас, которая будет отображаться в списке (необязательно)
- Параметр температуры для модели (необязательно)
- Ограничение длины ответа в токенах (необязательно)
- Полное переопределение системнога промпта (необязательно)
- Текст промпта (обязательно)
- Контекст-провайдер для автоматического дополнения контекста (необязательно).
Допустимые варианты:
@currentFile- Текущий открытый файл@codebase- Поиск по кодовой базе@repo-map- Карта репозитория@terminal- Вывод терминала@problems- Ошибки и предупреждения@os- Информация об ОС@open- Открытые файлы@tree- Дерево проекта@folder- Выбранная папка
Использование:
- Выделите код и нажмите Ctrl/⌘ + L для добавления к новому сообщению
- Введите
/explain - Нажмите Enter
Пример 3: Команда для рефакторинга
{
"customCommands": [
{
"name": "refactor",
"description": "Рефакторинг кода",
"prompt": "Улучши этот код: сделай его чище, производительнее и читаемее. Объясни изменения."
}
]
}
Использование:
Пример 4: Команда для документации
{
"customCommands": [
{
"name": "doc",
"description": "Создать документацию",
"prompt": "Создай документацию для этого кода в формате JSDoc"
}
]
}
Использование:
Конфигурация команд¶
Базовая структура¶
{
"customCommands": [
{
"name": "command-name", // Название команды
"description": "Описание", // Описание для UI
"prompt": "Текст промпта" // Что отправляется модели
}
]
}
Параметры команд¶
Некоторые команды поддерживают параметры:
{
"slashCommands": [
{
"name": "http",
"description": "HTTP запрос",
"params": {
"url": "https://api.example.com",
"method": "GET",
"headers": {
"Authorization": "Bearer token"
}
}
}
]
}
Динамические промпты¶
Используйте шаблоны для динамических промптов:
{
"customCommands": [
{
"name": "commit",
"description": "Сгенерировать сообщение коммита",
"prompt": "Создай сообщение коммита в формате Conventional Commits на основе этих изменений: {{diff}}"
}
]
}
Переменные:
- {{diff}} — текущие изменения
- {{file}} — текущий файл
- {{selection}} — выделенный текст
Команды из MCP-серверов¶
MCP-серверы могут предоставлять свои слеш-команды.
Автоматическое добавление¶
При подключении MCP-сервера: 1. Сервер предоставляет список промптов 2. Koda создаёт слеш-команды 3. Команды доступны в чате
Пример:
Конфигурация MCP команд¶
mcpServers:
- name: GitHub
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-github"
# Команды добавляются автоматически
Закладки команд¶
Можно добавлять команды в закладки для быстрого доступа.
Добавление в закладки¶
Через интерфейс:
- Откройте чат
- Введите @
- Нажмите ⭐ рядом с командой
- Команда добавлена в закладки
Через API:
Использование закладок¶
Закладки отображаются: - В верхней части чата - Как карточки с командами - Для быстрого доступа
Преимущества: - Быстрый доступ к часто используемым командам - Не нужно вводить @ каждый раз - Видимые подсказки
Управление командами¶
Просмотр доступных команд¶
Через интерфейс:
- Введите @ в чате
- Просмотрите выпадающий список
- Используйте поиск для фильтрации
Через конфигурацию:
Отключение команд¶
В конфигурации:
Удаление из списка:
- Удалите команду из customCommands
- Перезагрузите конфигурацию
Приоритет команд¶
Если команды имеют одинаковые имена: 1. Пользовательские команды имеют приоритет 2. MCP команды переопределяют встроенные 3. Последние загруженные имеют приоритет
Продвинутые техники¶
1. Комбинация с контекстом¶
Используйте команды с контекстными провайдерами:
Пример:
2. Команды в режиме агента¶
В режиме агента команды работают иначе:
Обычный режим: - Команда выполняет действие сразу - Возвращает результат
Режим агента: - Команда добавляется в контекст - Агент использует как часть задачи
Пример:
3. Цепочки команд¶
Выполняйте команды последовательно:
1. /onboard — изучить проект
2. /review — проанализировать код
3. /refactor — улучшить
4. /test — запустить тесты
4. Команды с аргументами¶
Некоторые команды принимают аргументы:
Формат:
Создание собственных команд (для разработчиков)¶
Структура команды¶
Файл: core/commands/slash/my-command.ts
import type { SlashCommand } from "../..";
const MyCommand: SlashCommand = {
name: "my-command",
description: "Описание команды",
run: async function* ({ input, history, ide, llm }) {
// Логика команды
yield "Результат выполнения";
},
};
export default MyCommand;
Регистрация команды¶
Файл: core/commands/slash/index.ts
import MyCommand from "./my-command";
export default [
KodamdSlashCommand,
SummarizeSlashCommand,
MyCommand, // Добавить команду
];
Обновление схемы¶
Файл: extensions/vscode/config_schema.json
{
"SlashCommand": {
"type": "object",
"properties": {
"name": { "type": "string" },
"description": { "type": "string" },
"params": { "type": "object" }
}
}
}
Пример: Команда для генерации commit message¶
Файл: core/commands/slash/commit.ts
import type { IDE, ILLM, SlashCommand } from "../..";
import { renderChatMessage } from "../../util/messageContent";
async function generateCommitMessage(
ide: IDE,
llm: ILLM
): Promise<string> {
// Получить изменения из git
const diff = await ide.getDiff();
// Сгенерировать сообщение
const response = await llm.complete(
`Создай сообщение коммита в формате Conventional Commits:\n\n${diff}`
);
return response;
}
const CommitCommand: SlashCommand = {
name: "commit",
description: "Сгенерировать сообщение коммита",
run: async function* ({ ide, llm }) {
const message = await generateCommitMessage(ide, llm);
yield message;
},
};
export default CommitCommand;
Решение проблем¶
Команда не отображается¶
Причины: - Неправильная конфигурация - Команда отключена - Ошибка в имени
Решения:
-
Проверьте конфигурацию:
-
Перезагрузите конфигурацию:
- Нажмите Reload Config
-
Или перезапустите IDE
-
Проверьте консоль:
- Откройте Developer Tools
- Ищите ошибки конфигурации
Команда выполняется с ошибкой¶
Причины: - Ошибка в промпте - Недостаточно контекста - Проблема с моделью
Решения:
-
Упростите промпт:
-
Добавьте контекст:
-
Проверьте модель:
- Убедитесь, что модель подключена
- Проверьте лимиты API
Команда не принимает аргументы¶
Причины: - Команда не поддерживает аргументы - Неправильный формат
Решения:
- Проверьте поддержку:
- Не все команды принимают аргументы
-
Используйте только с поддерживаемыми
-
Правильный формат:
Лучшие практики¶
1. Именование команд¶
✅ Хорошо:
- /refactor — понятно
- /doc — кратко
- /test-unit — специфично
❌ Плохо:
- /do-the-thing — непонятно
- /my-super-command-123 — слишком длинно
- /test — слишком обще (если есть /test-unit, /test-e2e)
2. Описание команд¶
✅ Хорошо:
❌ Плохо:
3. Промпты¶
✅ Хорошо:
❌ Плохо:
4. Использование закладок¶
Добавьте в закладки: - Часто используемые команды - Команды для текущего проекта - Специфичные для роли команды
Удалите из закладок: - Редко используемые - Устаревшие команды
Дополнительные ресурсы¶
Официальная документация¶
Примеры команд¶
API¶
slashCommands— массив слеш-командcustomCommands— пользовательские командыSlashCommand— интерфейс командыSlashCommandDescription— описание команды
См. также¶
- Навыки (Skills) — переиспользуемые инструкции
- Агентский режим — использование команд в агенте
- Конфигурация — настройка команд
- MCP-серверы — команды из MCP