Multi Turn Conversation
概要
複数ターンに渡る対話の設計と状態管理を実現するスキル。エージェント・ユーザー間の対話フロー、コンテキスト管理、ターン管理を通じて、一貫性のある対話体験を構築します。このスキルは以下を実現します:
- ターン管理: ユーザーメッセージとエージェント応答の順序と依存関係を管理
- コンテキスト保持: 対話全体の履歴と現在の文脈を維持
- 状態追跡: ユーザー意図、タスク進捗、メタ情報の一貫性確保
- 応答整合性: 過去の発言との矛盾を防止し、連続性を保証
- 流動的遷移: 対話パターンの柔軟な状態遷移設計
ワークフロー
Phase 1: 目的と前提の整理
目的: 対話設計タスクの目的と前提条件を明確にする
参照エージェント: agents/requirements-analysis.md
アクション:
- 対話の目的とユースケースを確認(サポートチャット、ウィザード、分析等)
references/basics.mdで対話パターンの基礎を理解- コンテキスト保持方式と状態管理の戦略を選定
- 必要なリソースを特定
Phase 2: スキル適用と設計実装
目的: マルチターン対話の設計・実装を進める
参照エージェント: agents/dialogue-flow-designer.md
アクション:
references/patterns.mdで実装パターンを確認- 対話フロー図またはメッセージスキーマを設計
- ターン管理メカニズム(メモリ・DB・キャッシュ等)を選定
- コンテキスト更新ロジックを実装(
references/context-patterns.md参照) - エラーハンドリング戦略を設計(
references/error-handling-patterns.md参照)
Phase 3: 検証と記録
目的: 成果物の検証と実行記録の保存
参照エージェント: agents/quality-validator.md
アクション:
- 対話フローの一貫性と正確性を確認
- エッジケース(コンテキスト喪失、超長対話等)への対応を検証(
references/edge-cases.md参照) scripts/validate-skill.mjsでスキル構造を確認scripts/log_usage.mjsを実行して使用記録を保存
ベストプラクティス
すべきこと
- ターン番号管理: 各メッセージにターンIDを付与し、順序を明確化
- コンテキスト参照: 最新N個の対話ターンを常に参照可能な構造にする
- 意図の明示: ユーザー意図を明確に解析し、状態に保存
- 境界の設定: 超長対話時のコンテキスト折りたたみやサマリー化を実装
- エラーハンドリング: コンテキスト喪失時のフォールバック機構を用意
- 監査ログ: 対話履歴を完全に記録して問題追跡可能にする
避けるべきこと
- グローバル状態への直接アクセス(状態オブジェクトを通じた管理)
- ターン情報の削除(監査要件との矛盾)
- ユーザー意図の同期ズレ(毎ターン明示的に更新)
- コンテキスト無制限保持(メモリ圧迫へのリスク)
- 仮定に基づくユーザー状態操作(常に確認メッセージを送信)
リソース参照
参照ドキュメント
| ドキュメント | 内容 |
|---|---|
| references/basics.md | マルチターン対話基礎概念 |
| references/patterns.md | 実装パターン、設計戦略 |
| references/context-patterns.md | コンテキスト管理パターン集 |
| references/state-management-guide.md | 状態管理ガイド |
| references/edge-cases.md | エッジケース対応 |
| references/error-handling-patterns.md | エラーハンドリングパターン |
エージェント
| エージェント | 役割 |
|---|---|
agents/requirements-analysis.md |
要件分析、対話設計方針決定 |
agents/dialogue-flow-designer.md |
対話フロー設計 |
agents/quality-validator.md |
品質検証、エッジケース確認 |
スクリプト
| スクリプト | 用途 |
|---|---|
scripts/validate-skill.mjs |
スキル構造検証 |
scripts/log_usage.mjs |
使用記録 |