logo
Development
検索
対話インタラクション

対話インタラクション

概要

Work の対話インタラクションは Agent Loop によって駆動されます。ユーザーがメッセージを送信すると、Agent は自律的な推論・実行ループに入ります。ニーズを分析 → ツールを呼び出す → 結果を取得 → 推論を継続し、タスクが完了するか終了条件に達するまで繰り返します。このプロセス全体は、ストリーミングイベントを通じてリアルタイムに画面上へ表示されます。


メッセージの種類

対話のメッセージフローには、以下の種類が含まれます。

メッセージの種類 レンダリング方法 説明
ユーザーメッセージ 右寄せの吹き出し ユーザーが送信したテキスト、添付ファイル
アシスタントテキスト 左寄せの Markdown レンダリング Agent のテキスト返信。コードハイライト、数式、表に対応
ツール呼び出し ToolCallGroup 折りたたみパネル ツール名 + 入力パラメータ + 実行状態 + 出力結果
思考プロセス Thinking 折りたたみブロック Agent の推論プロセス(Claude などのネイティブ thinking モデル)
タスク管理 TaskPanel タスクパネル 構造化されたタスクリスト(未対応 / 進行中 / 完了)
サブエージェントの活動 SubagentToolRow サブエージェントの実行プロセス。特別なマーク付き
質問インタラクション QuestionWizard Agent がユーザーに対して行う構造化された質問

ツール呼び出しの表示

Agent がツールを呼び出すと、画面には ToolCallGroup コンポーネントが表示されます。

ツール呼び出しの表示-CN

表示要素 説明
ツール名 呼び出したツールの識別子(Bash、Read File など)
入力パラメータ ツールが受け取ったパラメータ(折りたたんで確認可能)
実行状態 loading(回転アイコン)/ success(緑のチェック)/ error(赤のバツ)
出力結果 ツールが返した内容(長い内容は折りたたみ可能)

複数のツール呼び出しは実行順にグループ化して表示されます。並行して実行されるツールは同じグループ内に表示されます。


ストリーミング出力

Agent の返信はストリーミングイベントを通じてリアルタイムに画面へプッシュされます。

イベントの種類 説明
text_delta テキスト断片。1 文字ずつメッセージ領域に追記
thinking 思考プロセスの断片(Anthropic ネイティブ thinking に対応)
tool_use_start ツール呼び出しの開始。ツール名とパラメータを表示
tool_result ツールの実行結果。状態アイコンを更新
error エラー情報
done 当該ラウンドの完了

ユーザーはストリーミング出力の過程で Agent のリアルタイムな推論と操作を確認でき、透明性の高い実行体験が得られます。


セッション管理

新規セッションの作成

左上の「新規対話」ボタンをクリックするか、ショートカットキーを使用して新しいセッションを作成します。新しいセッションはウェルカムページから始まるか、直接メッセージを入力して対話を開始します。

セッションリストの操作

操作 説明
検索 キーワードでセッションタイトルをフィルタリング
ピン留め 重要なセッションをリストの先頭に固定
フォルダ分類 セッションをカスタムフォルダに整理
削除 セッションを削除(復元不可)
名前変更 セッションタイトルを変更

セッションスナップショットと復元

APP 側ではセッションスナップショットの永続化に対応しており、予期しない中断による対話の消失を防ぎます。

スナップショット戦略 説明
every_tool_round(デフォルト) ツール呼び出しのたびに保存
every_round LLM とのやり取り 1 ラウンドごとに保存
manual 手動トリガー時のみ保存

スナップショットは JSON ファイルとして保存され(アトミック書き込み、.tmp + rename で破損を防止)、resumeSessionId を通じて中断したセッションを復元できます。


ローカル対話とリモート対話

マルチノードのシナリオでは、セッションリスト内の対話に異なる送信元アイコンが表示されます。

アイコン 意味
ローカル対話アイコン PC アイコン ローカル APP ノードで発起または実行された対話
リモート対話アイコン サーバーアイコン リモートノードで実行された対話
チャネルアイコン プラットフォームアイコン IM チャネル(Telegram、WeChat など)からの対話

これにより、ユーザーは対話の実行元をすばやく区別できます。


Agent Loop による複雑タスク処理能力

Agent Loop により、Work は複数ステップの操作を必要とする複雑なタスクを処理できます。

サンプルシナリオ:ユーザーが「プロジェクトのディレクトリ構造を分析してアーキテクチャドキュメントを生成する」ことを要求

ラウンド 1: Agent が List Directory を呼び出してプロジェクト構造を参照 ラウンド 2: Agent が Glob Files を呼び出して主要な設定ファイルを検索 ラウンド 3: Agent が Read File を呼び出してコアファイルの内容を読み取り ラウンド 4: Agent が Search Files を呼び出してモジュールの依存関係を検索 ラウンド 5: Agent が総合的に分析して Markdown アーキテクチャドキュメントを生成 ラウンド 6: Agent が Write File を呼び出して指定パスにドキュメントを保存
                      
                      ラウンド 1: Agent  List Directory を呼び出してプロジェクト構造を参照
ラウンド 2: Agent  Glob Files を呼び出して主要な設定ファイルを検索
ラウンド 3: Agent  Read File を呼び出してコアファイルの内容を読み取り
ラウンド 4: Agent  Search Files を呼び出してモジュールの依存関係を検索
ラウンド 5: Agent が総合的に分析して Markdown アーキテクチャドキュメントを生成
ラウンド 6: Agent  Write File を呼び出して指定パスにドキュメントを保存

                    
このコードブロックをポップアップで表示

このプロセス全体を通じて、Agent は自律的にどのツールをどの順序で実行するかを判断するため、ユーザーが逐一指示する必要はありません。デフォルトでは最大 25 ラウンドのループとなり、サーキットブレーカー機構により異常時には自動的に停止します。

技術的な詳細については Agent ループエンジン を参照してください。



ヒント:Agent とより効果的に対話するには

テクニック 効果
目標を明確にする 「utils.ts の formatDate 関数をリファクタリングして、date-fns を使うように変更して」 Agent が目標と方法を正確に特定
段階的に依頼する 「まずすべての .tsx ファイルを列挙し、次にどれが class コンポーネントを使っているか教えて」 Agent が段階的に実行し、結果をより制御しやすい
ツールを指定する 「Bash を使って npm test を実行して」 Agent が指定されたツールを直接使用
確認を求める 「まず計画を教えて、確認してから実行して」 Agent が直接ファイルを変更するのを防止
コンテキストを提供する 「これは React + TypeScript のプロジェクトで、Vite でビルドしています」 Agent がより適切な提案を提示

実行中のタスクを中止する方法

Agent が期待しない操作を実行している場合:

  1. メッセージフロー下部の 停止 ボタンをクリック(または Esc を押す)
  2. Agent は現在のツール実行が完了した後に停止します
  3. すでに実行された操作(作成済みのファイルなど)は自動的には取り消されません
  4. 対話を続けて Agent に以前の操作を取り消すよう指示できます

注意:実行中の Bash コマンドは終了されます(SIGTERM を送信)が、完了済みのコマンドの効果は自動的に取り消せません。


ツール呼び出しが失敗したときの対処法

失敗の原因 解決方法
権限不足 Agent が必要な権限を説明します。ポップアップで許可するか、ツールのセキュリティレベルを調整できます
ファイルが存在しない パスが正しいか確認してください。Agent にまず Glob / List Directory でファイルの場所を確認させることができます
コマンド実行エラー 通常、Agent が自動的にエラーを分析して再試行します。ループが失敗する場合は、手動でより多くのコンテキストを提供してください
ネットワークタイムアウト Web Fetch などのネットワークツールはネットワークの問題で失敗することがあります。しばらくしてから再試行してください

関連ドキュメント