Перейти к содержанию

Слеш-команды (промпты)

Это специальные заготовки промптов, которые начинаются с символа / и позволяют быстро выполнять предопределённые действия в Koda. Они доступны в режимах Чат и Агент.

Слеш-команды упрощают работу с AI, предоставляя готовые сценарии для типовых задач.

Каждая команда должна иметь уникальное имя и описание.

Как использовать

  1. Введите / в поле ввода чата
  2. Выберите команду из выпадающего списка
  3. Нажмите Enter

Перед этим можно выделить часть текста в редакторе и нажать Ctrl/⌘ + L. Тогда выделенный текст будет подготовлен для отправки в следующем сообщении. Это позволит модели сфокусироваться на указанном участке.

Примеры: /explain, /review, /test


Встроенные команды

Koda поставляется с небольшим набором встроенных слеш-команд. Их невозможно переопределить или удалить.

/kodamd

Создаёт или обновляет контекстный файл KODA.md в корне текущего открытого проекта с описанием правил и технических подробностей.

Подробнее о контекстных файлах можно прочесть здесь: Контекстные файлы

Как работает:

  1. Анализирует структуру проекта
  2. Определяет технологии и фреймворки
  3. Создаёт файл KODA.md с правилами
  4. Добавляет лучшие практики для проекта

Результат:

# KODA.md — Правила проекта

## Технологии
- TypeScript
- React
- Node.js

## Стиль кода
- Использовать ESLint
- Следовать Airbnb Style Guide

## Структура
- Компоненты в `/components`
- Хуки в `/hooks`

/summarize

Сжимает контекст, создавая краткий конспект всего диалога для экономии токенов.

Когда использовать:

  • Диалог стал слишком длинным (>20 сообщений)
  • Предупреждение о переполнении контекста (75%+)
  • Завершение этапа работы
  • Перед переключением на новую задачу
  • Хотите сохранить ключевые решения

Как работает:

  1. Анализирует всю историю диалога
  2. Выделяет ключевые решения и изменения
  3. Сохраняет информацию о файлах и инструментах
  4. Создаёт краткий конспект (до 500 слов)
  5. Добавляет 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)
  1. Команда будет выглядеть как /explain, а если не указано, то my-command по имени файла (необязательно)
  2. Просто подсказка для вас, которая будет отображаться в списке (необязательно)
  3. Параметр температуры для модели (необязательно)
  4. Ограничение длины ответа в токенах (необязательно)
  5. Полное переопределение системнога промпта (необязательно)
  6. Текст промпта (обязательно)
  7. Контекст-провайдер для автоматического дополнения контекста (необязательно). Допустимые варианты:
    • @currentFile - Текущий открытый файл
    • @codebase - Поиск по кодовой базе
    • @repo-map - Карта репозитория
    • @terminal - Вывод терминала
    • @problems - Ошибки и предупреждения
    • @os - Информация об ОС
    • @open - Открытые файлы
    • @tree - Дерево проекта
    • @folder - Выбранная папка

Использование:

  1. Выделите код и нажмите Ctrl/⌘ + L для добавления к новому сообщению
  2. Введите /explain
  3. Нажмите Enter

Пример 3: Команда для рефакторинга

{
  "customCommands": [
    {
      "name": "refactor",
      "description": "Рефакторинг кода",
      "prompt": "Улучши этот код: сделай его чище, производительнее и читаемее. Объясни изменения."
    }
  ]
}

Использование:

/refactor


Пример 4: Команда для документации

{
  "customCommands": [
    {
      "name": "doc",
      "description": "Создать документацию",
      "prompt": "Создай документацию для этого кода в формате JSDoc"
    }
  ]
}

Использование:

/doc


Конфигурация команд

Базовая структура

{
  "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 Server: GitHub
Доступные команды:
  - /github-create-issue
  - /github-get-pr
  - /github-search


Конфигурация MCP команд

mcpServers:
  - name: GitHub
    command: npx
    args:
      - "-y"
      - "@modelcontextprotocol/server-github"

# Команды добавляются автоматически

Закладки команд

Можно добавлять команды в закладки для быстрого доступа.

Добавление в закладки

Через интерфейс:

  1. Откройте чат
  2. Введите @
  3. Нажмите ⭐ рядом с командой
  4. Команда добавлена в закладки

Через API:

ideMessenger.request("preferences/bookmarkSlashCommand", {
  commandName: "kodamd"
});

Использование закладок

Закладки отображаются: - В верхней части чата - Как карточки с командами - Для быстрого доступа

Преимущества: - Быстрый доступ к часто используемым командам - Не нужно вводить @ каждый раз - Видимые подсказки


Управление командами

Просмотр доступных команд

Через интерфейс:

  1. Введите @ в чате
  2. Просмотрите выпадающий список
  3. Используйте поиск для фильтрации

Через конфигурацию:

{
  "slashCommands": [...],
  "customCommands": [...]
}

Отключение команд

В конфигурации:

{
  "slashCommands": [
    {
      "name": "issue",
      "description": "Draft issue",
      "disabled": true
    }
  ]
}

Удаление из списка: - Удалите команду из customCommands - Перезагрузите конфигурацию


Приоритет команд

Если команды имеют одинаковые имена: 1. Пользовательские команды имеют приоритет 2. MCP команды переопределяют встроенные 3. Последние загруженные имеют приоритет


Продвинутые техники

1. Комбинация с контекстом

Используйте команды с контекстными провайдерами:

@file /explain
@codebase /review

Пример:

@src/components/Button.tsx /refactor


2. Команды в режиме агента

В режиме агента команды работают иначе:

Обычный режим: - Команда выполняет действие сразу - Возвращает результат

Режим агента: - Команда добавляется в контекст - Агент использует как часть задачи

Пример:

Агент: /kodamd + создай структуру проекта


3. Цепочки команд

Выполняйте команды последовательно:

1. /onboard — изучить проект
2. /review — проанализировать код
3. /refactor — улучшить
4. /test — запустить тесты

4. Команды с аргументами

Некоторые команды принимают аргументы:

/cmd найти файлы .log
/cmd очистить кэш npm
/http GET https://api.example.com

Формат:

/команда аргументы


Создание собственных команд (для разработчиков)

Структура команды

Файл: 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;

Решение проблем

Команда не отображается

Причины: - Неправильная конфигурация - Команда отключена - Ошибка в имени

Решения:

  1. Проверьте конфигурацию:

    {
      "customCommands": [
        {
          "name": "my-command",  // ← Проверьте имя
          "description": "...",
          "prompt": "..."
        }
      ]
    }
    

  2. Перезагрузите конфигурацию:

  3. Нажмите Reload Config
  4. Или перезапустите IDE

  5. Проверьте консоль:

  6. Откройте Developer Tools
  7. Ищите ошибки конфигурации

Команда выполняется с ошибкой

Причины: - Ошибка в промпте - Недостаточно контекста - Проблема с моделью

Решения:

  1. Упростите промпт:

    {
      "prompt": "Простой запрос"  // ← Упростите
    }
    

  2. Добавьте контекст:

    @file /my-command  ← Добавьте контекст
    

  3. Проверьте модель:

  4. Убедитесь, что модель подключена
  5. Проверьте лимиты API

Команда не принимает аргументы

Причины: - Команда не поддерживает аргументы - Неправильный формат

Решения:

  1. Проверьте поддержку:
  2. Не все команды принимают аргументы
  3. Используйте только с поддерживаемыми

  4. Правильный формат:

    /cmd аргументы  ← Пробел после команды
    


Лучшие практики

1. Именование команд

Хорошо: - /refactor — понятно - /doc — кратко - /test-unit — специфично

Плохо: - /do-the-thing — непонятно - /my-super-command-123 — слишком длинно - /test — слишком обще (если есть /test-unit, /test-e2e)


2. Описание команд

Хорошо:

{
  "description": "Рефакторинг кода с улучшением читаемости"
}

Плохо:

{
  "description": "Делает штуку с кодом"
}


3. Промпты

Хорошо:

{
  "prompt": "Улучши этот код: сделай его чище и производительнее. Объясни каждое изменение."
}

Плохо:

{
  "prompt": "Сделай код лучше"
}


4. Использование закладок

Добавьте в закладки: - Часто используемые команды - Команды для текущего проекта - Специфичные для роли команды

Удалите из закладок: - Редко используемые - Устаревшие команды


Дополнительные ресурсы

Официальная документация

Примеры команд

API

  • slashCommands — массив слеш-команд
  • customCommands — пользовательские команды
  • SlashCommand — интерфейс команды
  • SlashCommandDescription — описание команды

См. также