{"meta":{"title":"コンテキストクリアとターミナルツール","intro":"ホストがセッションを置き換えずに現在の会話コンテキストを置き換える必要がある場合は、 session.history.clearContext を使用します。 一般的な用途には、ハンドオフとホストマネージド コンテキスト ライフサイクル ポリシーが含まれます。","product":"GitHub Copilot","breadcrumbs":[{"href":"/ja/copilot","title":"GitHub Copilot"},{"href":"/ja/copilot/how-tos","title":"方法"},{"href":"/ja/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/ja/copilot/how-tos/copilot-sdk/features","title":"機能"},{"href":"/ja/copilot/how-tos/copilot-sdk/features/context-management","title":"コンテキスト管理"}],"documentType":"article"},"body":"# コンテキストクリアとターミナルツール\n\nホストがセッションを置き換えずに現在の会話コンテキストを置き換える必要がある場合は、 session.history.clearContext を使用します。 一般的な用途には、ハンドオフとホストマネージド コンテキスト ライフサイクル ポリシーが含まれます。\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\nコンテキストのクリアは、新しいセッションの作成とは異なります。セッション ID、システムおよび開発者のメッセージ、構成、イベント ログが保持され、モデルに接続された会話が削除されます。\n\n> [!IMPORTANT]\n> `clearContext` はツール ハンドラー プリミティブです。 ランタイムは、実行時にツール呼び出しなしで行われた呼び出し、空のシード プロンプトを使用した呼び出し、リモート セッションでの呼び出しを拒否します。\n\n## コンテキストクリア ツールを定義する\n\n成功したコンテキストクリア ツールはターミナルである必要があります。 それ以外の場合、エージェント ループは、シード処理されたターンを開始する前に、新しくクリアされたウィンドウに対して別のモデル呼び出しを行う可能性があります。\n\n```typescript\nimport { approveAll, CopilotClient, defineTool } from \"@github/copilot-sdk\";\nimport type { CopilotSession } from \"@github/copilot-sdk\";\nimport { z } from \"zod\";\n\nconst client = new CopilotClient();\nlet session: CopilotSession;\n\nsession = await client.createSession({\n  onPermissionRequest: approveAll,\n  tools: [\n    defineTool(\"clear_context\", {\n      description: \"Clear the conversation and start a fresh context window\",\n      parameters: z.object({ prompt: z.string() }),\n      isTerminal: true,\n      defer: \"never\",\n      handler: async ({ prompt }) => {\n        const { messagesCleared } =\n          await session.rpc.history.clearContext({ prompt });\n        return `Cleared ${messagesCleared} messages.`;\n      },\n    }),\n  ],\n});\n```\n\n必要な `prompt` は、新しいコンテキストの最初のユーザー メッセージになります。 クリアが成功すると、削除されたメッセージの数と初期メッセージを含む `session.context_cleared` が出力されます。\n\n## ターミナル ツールの動作\n\n`isTerminal` は、ツールが成功した場合にのみ、現在のエージェントのターンを終了します。 失敗、拒否、却下、タイムアウト、または入力検証エラーは、モデルが復旧または再試行できるよう、引き続きモデルから見える状態に保たれます。\n\nこのオプションは、各言語の名前付け規則に従います。\n\n| SDK | ツールのオプション |\n|---|---|\n| Node.js | `isTerminal` |\n| Python | `is_terminal` |\n| Go | `IsTerminal` |\n| .NET | `CopilotToolOptions.IsTerminal` |\n| Java | \n`ToolDefinition.isTerminal(true)` または `@CopilotTool(isTerminal = true)` |\n| Rust | `with_is_terminal(true)` |\n\n終端性は、正常に完了した時点でターンを終了すべきツールにのみ使用してください。 通常のツールでは、設定を解除したままにする必要があります。"}