# Kontext-Clearing- und Terminaltools

Verwenden Sie session.history.clearContext, wenn ein Host den aktuellen Konversationskontext ersetzen muss, ohne die Sitzung zu ersetzen. Typische Verwendungen umfassen Übergaben und hostverwaltete Kontextlebenszyklusrichtlinien.

<!-- markdownlint-disable GHD046 GHD005 -->
<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->

Das Leeren des Kontexts unterscheidet sich vom Erstellen einer neuen Sitzung: Dabei bleiben die Sitzungsidentität, System- und Entwicklernachrichten, die Konfiguration und das Ereignisprotokoll erhalten, während die für das Modell sichtbare Konversation entfernt wird.

> [!IMPORTANT]
> `clearContext` ist ein Toolhandlergrundtyp. Die Laufzeit lehnt Aufrufe ab, wenn kein Tool-Aufruf aktiv ist, wenn der Seed-Prompt leer ist oder wenn die Aufrufe in Remote-Sitzungen erfolgen.

## Ein Tool zum Löschen des Kontexts definieren

Ein erfolgreiches Kontext-Clearing-Tool sollte terminal sein. Andernfalls kann die Agenten-Schleife einen weiteren Modellaufruf für das neu geleerte Kontextfenster durchführen, bevor der initialisierte Zug beginnt.

```typescript
import { approveAll, CopilotClient, defineTool } from "@github/copilot-sdk";
import type { CopilotSession } from "@github/copilot-sdk";
import { z } from "zod";

const client = new CopilotClient();
let session: CopilotSession;

session = await client.createSession({
  onPermissionRequest: approveAll,
  tools: [
    defineTool("clear_context", {
      description: "Clear the conversation and start a fresh context window",
      parameters: z.object({ prompt: z.string() }),
      isTerminal: true,
      defer: "never",
      handler: async ({ prompt }) => {
        const { messagesCleared } =
          await session.rpc.history.clearContext({ prompt });
        return `Cleared ${messagesCleared} messages.`;
      },
    }),
  ],
});
```

Die erforderliche `prompt` Nachricht wird zur ersten Benutzernachricht im neuen Kontext. Ein erfolgreiches Leeren sendet `session.context_cleared` mit der Anzahl der entfernten Nachrichten und der ursprünglichen Nachricht.

## Terminal-Werkzeugverhalten

`isTerminal` beendet den aktuellen Agenten-Turn nur dann, wenn das Tool erfolgreich ausgeführt wird. Ein Fehler, Verweigerungs-, Ablehnungs-, Timeout- oder Eingabeüberprüfungsfehler bleibt für das Modell sichtbar, sodass er wiederhergestellt oder erneut versucht werden kann.

Die Option folgt den Benennungskonventionen der einzelnen Sprachen:

| SDK | Werkzeugoption |
|---|---|
| Node.js | `isTerminal` |
| Python | `is_terminal` |
| Go | `IsTerminal` |
| .NET | `CopilotToolOptions.IsTerminal` |
| Java | 
`ToolDefinition.isTerminal(true)` oder `@CopilotTool(isTerminal = true)` |
| Rust | `with_is_terminal(true)` |

Verwenden Sie Terminalität nur bei Tools, deren erfolgreiche Ausführung den Zug beenden sollte. Gewöhnliche Tools sollten sie nicht festgelegt lassen.