Чат
Chat system Elftia — это основной интерфейс взаимодействия приложения. Она поддерживает параллельные разговоры в нескольких вкладках, ветвление и переключение сообщений, streaming responses в реальном времени, загрузку файловых вложений, организацию и управление sessions, а также богатые slash commands и keyboard shortcuts.
Сценарии использования
- Вести многоходовые разговоры с AI, чтобы получать предложения, ответы или совместно работать над задачами
- Открывать несколько вкладок одновременно и свободно переключаться между разными темами
- Если ответ AI не устраивает, сгенерировать его заново и использовать branch navigation для сравнения разных результатов
- Загружать изображения, документы и другие вложения, чтобы AI мог понимать и анализировать содержимое файлов
- Использовать slash commands для быстрого выполнения встроенных операций
- Использовать символ
@, чтобы ссылаться на файлы project и передавать AI контекст кода - Использовать
//, чтобы быстро вставлять заранее заданные prompt templates
Несколько вкладок
Elftia поддерживает одновременное открытие нескольких chat-вкладок. У каждой вкладки есть собственный независимый контекст session и история сообщений.
Шаги
- Нажмите кнопку + на панели вкладок, чтобы создать новую вкладку
- Начните независимый разговор в новой вкладке
- Нажимайте разные вкладки, чтобы переключаться между разговорами
- Щелкните вкладку правой кнопкой мыши, чтобы закрыть или переименовать ее
Сообщения, контекст и состояние каждой вкладки полностью независимы и не мешают друг другу.
Tab Keep-alive (0.1.8)
Переключение вкладок не приводит к потере состояния:
- При уходе с вкладки и возвращении сохраняются позиция прокрутки, любой неотправленный черновик и streaming state
- Несколько вкладок могут одновременно получать данные от одного и того же LLM, не перезаписывая друг друга (stream buffers изолированы по sessionId)
- Polling и анимации фоновых вкладок автоматически приостанавливаются для экономии CPU
Страница настроек, страница Agents и другие страницы вне чата также применяют keep-alive: если вы переключились в настройки во время редактирования и вернулись, сохраняются активная вкладка, положение прокрутки и измененные поля.
Ветвление сообщений
Ветвление сообщений — одна из основных функций chat system Elftia. Когда вы повторно генерируете ответ AI или редактируете отправленное сообщение, система автоматически создает ветку, которая сохраняет все исторические версии, чтобы вы могли просматривать их и переключаться между ними в любое время.
Как создаются ветки
| Действие | Результат |
|---|---|
| Повторная генерация ответа | Создает новую ветку в текущей позиции сообщения AI, сохраняя исходный ответ |
| Редактирование отправленного сообщения | Создает новую ветку с точки редактирования; последующий разговор продолжается на основе измененного содержимого |
Branch Navigation
Когда у сообщения есть несколько веток, рядом с ним появляется компонент branch navigation, показывающий:
- Иконка ветки — указывает, что у текущего сообщения есть несколько версий
- Текущий индекс / всего веток — например,
2 / 3означает, что есть 3 ветки, и вы просматриваете 2-ю - Стрелки влево/вправо — нажмите, чтобы переключаться между ветками
Шаги
- Наведите курсор на ответ AI и нажмите кнопку Regenerate на toolbar
- Система сгенерирует новый ответ и создаст новую ветку
- Рядом с сообщением появится компонент branch navigation (например,
1 / 2) - Нажимайте стрелки влево/вправо, чтобы просматривать разные версии ответа
- Можно выполнять повторную генерацию несколько раз; каждая генерация добавляет новую ветку
:::tip Ветки никогда не теряются Все ветки сохраняются. Даже если закрыть приложение и открыть его снова, история веток останется полностью целой. :::
Streaming Responses
Ответы AI используют streaming-передачу. Содержимое сообщения отображается постепенно в реальном времени в интерфейсе чата, а не только после завершения полной генерации.
Поведение
- Пока ответ генерируется, область сообщения обновляется в реальном времени
- Индикатор загрузки внизу сообщения показывает, что ответ все еще генерируется
- Во время генерации можно в любой момент нажать кнопку Stop, чтобы прервать ответ
- Частично сгенерированные ответы сохраняются
- Форматирование Markdown (code blocks, списки, headings и т. д.) отображается сразу по мере поступления содержимого
- Процесс reasoning: reasoning от inference models отображается в сворачиваемой области над финальным ответом
Контракт streaming state
У каждого сообщения в streaming есть маркеры data-streaming и data-stream-phase на корневом DOM-элементе, что позволяет внешним драйверам (elftia-cli) надежно ждать завершения сообщения. data-streaming равно "true", пока любой из процессов reasoning / tool-call / content typing еще выполняется. Это означает, что отложенный результат tool-call не приводит к ошибочному переключению streaming state в "false".
Рендеринг богатого содержимого
Chat system поддерживает inline-рендеринг нескольких типов богатого содержимого:
| Содержимое | Поведение рендеринга |
|---|---|
| Markdown | Headings, списки, code blocks (syntax highlighting + копирование в один клик), таблицы, blockquotes |
| Изображения / видео | Inline preview; изображения можно открыть в Lightbox для просмотра в полном размере |
| Audio | Встроенный player |
| Процесс reasoning | Сворачиваемая область, по умолчанию свернута |
| Tool calls | Название tool + arguments + results, сворачиваемые |
| Inline HTML | При обнаружении полного HTML-документа (содержащего <!DOCTYPE> / <html>) он безопасно отображается в iframe (sandbox не разрешает same-origin) |
| Question Form (только design session) | Сообщения в стиле опроса с radio buttons, checkboxes, текстовыми полями и direction cards; отправка превращает form в ответ для продолжения разговора |
| JSON | Автоматически определяется и отображается в форматированном виде |
Загрузка вложений
Chat поддерживает несколько способов загрузки вложений, чтобы AI мог анализировать содержимое файлов.
Способы загрузки
| Способ | Как |
|---|---|
| Drag and drop | Перетащите файлы из file manager в область ввода чата |
| Paste | Используйте Ctrl+V, чтобы вставить изображения из clipboard |
| File picker | Нажмите кнопку вложения рядом с полем ввода и выберите файл в dialog |
Поддерживаемые типы файлов
- Изображения — PNG, JPG, GIF, WebP и другие распространенные форматы изображений
- Документы — PDF, TXT, Markdown и другие text files
- Файлы кода — файлы исходного кода на разных programming languages
Загруженные вложения отображаются как миниатюры предварительного просмотра над полем ввода; вы можете нажать на них, чтобы удалить перед отправкой.
Управление sessions
Elftia предоставляет комплексные функции организации и управления sessions, чтобы помочь эффективно управлять большим числом разговоров.
Папки
- Создавайте папки в sidebar, чтобы организовывать связанные sessions в группы
- Поддерживаются многоуровневые вложенные структуры папок
- Перетаскивайте sessions в папки, чтобы классифицировать их
Tags
- Добавляйте пользовательские tags к sessions для удобной категоризации
- Быстро фильтруйте связанные sessions по tag
Поиск
- Введите keywords в поле поиска вверху sidebar
- Поиск охватывает как названия sessions, так и содержимое сообщений
- Результаты поиска подсвечивают совпадения в реальном времени
Закрепленные sessions
- Щелкните session правой кнопкой мыши и выберите Pin, чтобы держать ее наверху
- Закрепленные sessions всегда отображаются вверху списка и не смещаются вниз новыми sessions
Command Menu (/ Slash Commands)
Ввод / в поле ввода открывает command menu, предоставляющее набор быстрых действий.
Шаги
- Введите
/в поле ввода чата - Появится command menu со списком доступных commands
- Продолжайте вводить текст, чтобы фильтровать commands
- Используйте стрелки вверх/вниз, чтобы выбрать command; нажмите
Enterдля выполнения - Или нажмите command напрямую, чтобы выполнить ее
Встроенные commands
| Command | Описание |
|---|---|
/clear | Очистить историю сообщений текущей session |
/help | Показать справочную информацию |
/model | Быстро переключить используемую AI model |
/settings | Открыть панель настроек |
:::info Пользовательские commands Помимо встроенных commands, система Agent и plugins также могут регистрировать пользовательские commands. Доступные commands зависят от текущего активного Agent и установленных plugins. Command palette (slash palette) поддерживает fuzzy search; нажмите Tab для автодополнения arguments. :::
Ссылки на файлы (символ @)
Ввод @ в поле ввода позволяет ссылаться на файлы в project, добавляя содержимое файла в контекст сообщения.
Шаги
- Введите
@в поле ввода чата - Появится выпадающий список выбора файла, показывающий список файлов текущего project
- Введите keyword имени файла для фильтрации
- Используйте стрелки вверх/вниз, чтобы выбрать файл; нажмите
Enterдля подтверждения - Ссылка на файл вставляется как маркер в поле ввода
- Когда вы отправите сообщение, содержимое указанного файла будет отправлено AI вместе с ним
:::tip Сценарий использования Функция ссылок на файлы особенно полезна в разговорах, связанных с кодом. Вы можете ссылаться на файлы исходного кода, чтобы AI мог анализировать логику кода, находить bugs или предлагать optimizations. :::
Быстрая вставка prompt (// Double Slash)
Ввод // в поле ввода позволяет быстро вставить заранее заданный prompt template.
Шаги
- Введите
//в поле ввода чата - Появится меню быстрой вставки prompt
- Меню показывает избранные prompts, недавно использованные prompts и prompt chains
- Выберите prompt template
- Если template содержит variables (например,
{{language}}), появится форма заполнения variables - После заполнения variables итоговое содержимое prompt вставляется в поле ввода
Подробности управления prompts см. в документации Prompts.
Keyboard Shortcuts
| Shortcut | Действие |
|---|---|
Enter | Отправить сообщение (режим по умолчанию) |
Ctrl+Enter | Отправить сообщение (режим Ctrl+Enter) или вставить перенос строки (режим по умолчанию) |
Shift+Enter | Вставить перенос строки в поле ввода |
Esc | Закрыть command menu или меню выбора файла |
Up / Down | Переместить выбор в command menu или file menu |
Ctrl+V | Вставить текст или изображение |
Настройка режима отправки
Вы можете переключить keyboard shortcut для отправки сообщений в настройках:
| Режим | Поведение клавиши Enter | Поведение клавиши Ctrl+Enter |
|---|---|---|
| Enter to send (по умолчанию) | Отправить сообщение | Вставить перенос строки |
| Ctrl+Enter to send | Вставить перенос строки | Отправить сообщение |
Переключите режим отправки в Settings > General.
Полный поток разговора
Вот типичный поток полного разговора:
Type message → Send → Streaming response displayed in real time
↓
Satisfied with the reply?
├── Yes → Continue the conversation
└── No → Regenerate (creates a branch)
↓
Branch navigation to compare versions
↓
Choose the preferred version and continue
FAQ
| Проблема | Решение |
|---|---|
| Нет ответа после отправки сообщения | Проверьте, что у LLM provider настроен API Key и что сетевое подключение работает |
| Streaming response прерван | Вероятно, колебание сети или timeout API; попробуйте повторно сгенерировать ответ |
| Не удалось загрузить вложение | Проверьте, не превышает ли размер файла лимит и поддерживается ли формат файла |
| Command menu не появляется | Убедитесь, что / введен в начале поля ввода или после пробела |
| Branch navigation не отображается | Компонент navigation появляется только когда у сообщения больше одной ветки |
Ссылка на файл @ не реагирует | Сначала нужно открыть project; функция ссылок на файлы зависит от контекста project |
Связанные ссылки
- Конфигурация LLM Provider — настройка AI models и API Keys
- Prompts — управление и использование prompt templates
- Agent — узнать о системе Agent и пользовательских commands
- Web Search — интеграция web search в реальном времени в разговоры