メインコンテンツまでスキップ

チャット

Elftia のチャットシステムはアプリケーションのコアとなるインタラクションインターフェースです。マルチタブによる並行会話、メッセージのブランチと切り替え、リアルタイムストリーミングレスポンス、ファイル添付のアップロード、セッションの整理・管理、豊富なスラッシュコマンドとキーボードショートカットをサポートしています。

ユースケース

  • AI との複数ターンの会話を通じて提案や回答を得たり、タスクを共同で進めたりする
  • 複数のタブを同時に開いて、異なるトピック間を自由に切り替える
  • AI の返答に満足できない場合、再生成して、ブランチナビゲーションで異なる結果を比較する
  • 画像やドキュメントなどの添付ファイルをアップロードして、AI にファイルの内容を理解・分析させる
  • スラッシュコマンドを使って組み込みの操作をすばやく実行する
  • @ 記号を使ってプロジェクトファイルを参照し、AI にコードのコンテキストを提供する
  • // を使ってプリセットのプロンプトテンプレートをすばやく挿入する

マルチタブ

Elftia は複数のチャットタブを同時に開くことをサポートしています。各タブは独立したセッションコンテキストとメッセージ履歴を持ちます。

手順

  1. タブバーの + ボタンをクリックして新しいタブを作成する
  2. 新しいタブで独立した会話を開始する
  3. 別のタブをクリックして会話を切り替える
  4. タブを右クリックして閉じたり名前を変更したりする

各タブのメッセージ、コンテキスト、状態は完全に独立しており、互いに干渉しません。

タブ Keep-alive(0.1.8)

タブを切り替えても状態は失われません

  • 別のタブに切り替えて戻っても、スクロール位置・未送信の下書き・ストリーミング状態が保持されます
  • 複数のタブが同じ LLM に対して同時にリクエストを送っても互いに上書きされません(ストリームバッファは sessionId で分離されています)
  • バックグラウンドのタブのポーリングやアニメーションは CPU を節約するために自動的に一時停止されます

設定ページや Agents ページなどの非チャットページにも keep-alive が適用されます。設定の編集途中で別のページに切り替えて戻っても、どのタブにいたか、どこまでスクロールしていたか、どのフィールドを変更していたかがすべて保持されます。

メッセージブランチ

メッセージブランチは Elftia チャットシステムのコア機能の一つです。AI の返答を再生成したり、送信済みのメッセージを編集したりすると、システムはすべての履歴バージョンを保持するブランチを自動的に作成し、いつでも確認・切り替えができます。

ブランチの作成方法

操作結果
返答の再生成現在の AI メッセージの位置に新しいブランチを作成し、元の返答を保持する
送信済みメッセージの編集編集箇所から新しいブランチを作成し、以降の会話は変更後の内容に基づいて続く

ブランチナビゲーション

メッセージに複数のブランチがある場合、そのメッセージの隣にブランチナビゲーションコンポーネントが表示され、以下の情報を示します:

  • ブランチアイコン — 現在のメッセージに複数のバージョンがあることを示す
  • 現在のインデックス / 総ブランチ数 — たとえば 2 / 3 は 3 つのブランチがあり、2 番目を表示中であることを意味する
  • 左右の矢印 — クリックしてブランチ間を切り替える

手順

  1. AI の返答にカーソルを合わせ、ツールバーの再生成ボタンをクリックする
  2. システムが新しい返答を生成し、新しいブランチを作成する
  3. メッセージの隣にブランチナビゲーションコンポーネントが表示される(例: 1 / 2
  4. 左右の矢印をクリックして異なる返答バージョンを確認する
  5. 何度でも再生成できる。再生成のたびに新しいブランチが追加される

:::tip ブランチは失われない すべてのブランチは永続的に保存されます。アプリを閉じて再度開いた後も、ブランチ履歴は完全に保持されます。 :::

ストリーミングレスポンス

AI の返答はストリーミング送信を使用します。生成が完了するのを待ってから一括表示するのではなく、メッセージの内容がリアルタイムにチャット画面に段階的に表示されます。

動作

  • 返答の生成中、メッセージエリアはリアルタイムに更新される
  • メッセージの下部にローディングインジケーターが表示され、返答がまだ生成中であることを示す
  • 生成中にいつでも停止ボタンをクリックして返答を中断できる
  • 部分的に生成された返答は保持される
  • Markdown フォーマット(コードブロック、リスト、見出しなど)はコンテンツがストリーミングされる際に即座にレンダリングされる
  • 推論プロセス:推論モデルによる思考は、最終的な返答の上の折りたたみ可能な領域に表示される

ストリーミング状態の契約

ストリーミング中の各メッセージのルート DOM 要素には data-streamingdata-stream-phase マーカーが付与されており、外部ドライバー(elftia-cli)がメッセージの完了を確実に待機できるようになっています。reasoning / tool-call / コンテンツ入力のいずれかが進行中の場合、data-streaming"true" になります。これにより、tool-call の結果が遅れて到着しても、ストリーミング状態が誤って "false" に切り替わることがありません。

リッチコンテンツのレンダリング

チャットシステムは複数のリッチコンテンツタイプのインラインレンダリングをサポートしています:

コンテンツレンダリング動作
Markdown見出し、リスト、コードブロック(シンタックスハイライト + ワンクリックコピー)、テーブル、引用ブロック
画像 / 動画インラインプレビュー。画像は Lightbox でフルサイズ表示が可能
音声組み込みプレイヤー
推論プロセス折りたたみ可能な領域、デフォルトで折りたたまれている
ツール呼び出しツール名 + 引数 + 結果、折りたたみ可能
インライン HTML完全な HTML ドキュメント(<!DOCTYPE> / <html> を含む)が検出された場合、iframe(サンドボックスは same-origin を許可しない)で安全にレンダリングされる
Question Form(design session 専用)ラジオボタン、チェックボックス、テキストフィールド、direction カードを持つアンケート形式のメッセージ。送信すると会話を継続するための返答に変換される
JSON自動的に検出されてフォーマット済みで表示される

添付ファイルのアップロード

チャットは AI がファイルの内容を分析できるよう、複数の方法での添付ファイルアップロードをサポートしています。

アップロード方法

方法操作
ドラッグ&ドロップファイルマネージャーからチャット入力エリアにファイルをドラッグする
貼り付けCtrl+V を使ってクリップボードから画像を貼り付ける
ファイルピッカー入力ボックスの隣の添付ボタンをクリックし、ダイアログからファイルを選択する

サポートされているファイルタイプ

  • 画像 — PNG、JPG、GIF、WebP などの一般的な画像形式
  • ドキュメント — PDF、TXT、Markdown などのテキストファイル
  • コードファイル — 各種プログラミング言語のソースコードファイル

アップロードされた添付ファイルは入力ボックスの上にプレビューサムネイルとして表示されます。送信前にクリックして削除できます。

セッション管理

Elftia は大量の会話を効率的に管理するための包括的なセッション整理・管理機能を提供しています。

フォルダー

  • サイドバーにフォルダーを作成して関連するセッションをグループにまとめる
  • 多階層のネストされたフォルダー構造をサポート
  • セッションをフォルダーにドラッグして分類する

タグ

  • セッションにカスタムタグを追加して分類を容易にする
  • タグで関連するセッションをすばやくフィルタリングする

検索

  • サイドバー上部の検索ボックスにキーワードを入力する
  • 検索範囲はセッションタイトルとメッセージ内容の両方をカバーする
  • 検索結果はリアルタイムで一致箇所をハイライト表示する

ピン留めセッション

  • セッションを右クリックしてピン留めを選択し、上部に固定する
  • ピン留めされたセッションは常にリストの最上部に表示され、新しいセッションによって押し下げられることがない

コマンドメニュー(/ スラッシュコマンド)

入力ボックスで / を入力するとコマンドメニューが開き、さまざまなクイックアクションが提供されます。

手順

  1. チャット入力ボックスに / を入力する
  2. コマンドメニューが表示され、使用可能なコマンドのリストが表示される
  3. 入力を続けてコマンドをフィルタリングする
  4. 上下矢印でコマンドを選択し、Enter で実行する
  5. または直接コマンドをクリックして実行する

組み込みコマンド

コマンド説明
/clear現在のセッションのメッセージ履歴を消去する
/helpヘルプ情報を表示する
/model使用中の AI モデルをすばやく切り替える
/settings設定パネルを開く

:::info カスタムコマンド 組み込みコマンドに加えて、Agent システムとプラグインもカスタムコマンドを登録できます。使用可能なコマンドは現在アクティブな Agent とインストール済みのプラグインによって異なります。コマンドパレット(スラッシュパレット)はファジー検索をサポートしており、Tab キーで引数を自動補完できます。 :::

ファイル参照(@ 記号)

入力ボックスで @ を入力すると、プロジェクト内のファイルを参照して、ファイルの内容をメッセージのコンテキストに追加できます。

手順

  1. チャット入力ボックスに @ を入力する
  2. ファイル選択ドロップダウンが表示され、現在のプロジェクトのファイルリストが表示される
  3. ファイル名のキーワードを入力してフィルタリングする
  4. 上下矢印でファイルを選択し、Enter で確認する
  5. ファイル参照が入力ボックスにマーカーとして挿入される
  6. メッセージを送信すると、参照されたファイルの内容も一緒に AI に送信される

:::tip 適用場面 ファイル参照機能は、コード関連の会話で特に役立ちます。ソースコードファイルを参照することで、AI がコードロジックを分析したり、バグを見つけたり、最適化を提案したりできるようになります。 :::

クイックプロンプト挿入(// ダブルスラッシュ)

入力ボックスで // を入力すると、プリセットのプロンプトテンプレートをすばやく挿入できます。

手順

  1. チャット入力ボックスに // を入力する
  2. クイックプロンプト挿入メニューが表示される
  3. メニューにはお気に入りのプロンプト、最近使用したプロンプト、プロンプトチェーンが表示される
  4. プロンプトテンプレートを選択する
  5. テンプレートに変数(例: {{language}})が含まれている場合、変数入力フォームがポップアップ表示される
  6. 変数を入力すると、最終的なプロンプトの内容が入力ボックスに挿入される

詳細なプロンプト管理についてはプロンプトドキュメントを参照してください。

キーボードショートカット

ショートカット操作
Enterメッセージを送信する(デフォルトモード)
Ctrl+Enterメッセージを送信する(Ctrl+Enter モード)または改行を挿入する(デフォルトモード)
Shift+Enter入力ボックスに改行を挿入する
Escコマンドメニューまたはファイル選択メニューを閉じる
Up / Downコマンドメニューまたはファイルメニューで選択を移動する
Ctrl+Vテキストまたは画像を貼り付ける

送信モードの設定

設定でメッセージ送信のキーボードショートカットを切り替えられます:

モードEnter キーの動作Ctrl+Enter キーの動作
Enter で送信(デフォルト)メッセージを送信する改行を挿入する
Ctrl+Enter で送信改行を挿入するメッセージを送信する

設定 > 一般 で送信モードを切り替えます。

完全な会話フロー

完全な会話の典型的なフローは次のとおりです:

メッセージを入力 → 送信 → ストリーミングレスポンスがリアルタイムに表示される

返答に満足している?
├── はい → 会話を続ける
└── いいえ → 再生成する(ブランチを作成する)

ブランチナビゲーションでバージョンを比較する

好みのバージョンを選んで続ける

よくある質問

問題解決策
メッセージを送信しても返答がないLLM プロバイダーに API Key が設定されているか、ネットワーク接続が正常かを確認する
ストリーミングレスポンスが中断されるネットワークの不安定さまたは API タイムアウトの可能性がある。返答を再生成してみる
添付ファイルのアップロードが失敗するファイルサイズが制限を超えていないか、ファイル形式がサポートされているかを確認する
コマンドメニューが表示されない入力ボックスの最初またはスペースの後に / が入力されていることを確認する
ブランチナビゲーションが表示されないナビゲーションコンポーネントはメッセージに複数のブランチがある場合にのみ表示される
@ ファイル参照が反応しないプロジェクトを先に開く必要がある。ファイル参照機能はプロジェクトのコンテキストに依存している

関連リンク