# 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, Aufrufe mit einem leeren Initialisierungsprompt und Aufrufe in Remote-Sitzungen.

## Ein Tool zum Löschen des Kontexts definieren

Ein erfolgreiches Kontextbereinigungstool sollte abschließend sein. Andernfalls kann die Agentschleife einen weiteren Modellaufruf für das frisch bereinigte Kontextfenster durchführen, bevor der initialisierte Durchgang 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 Durchgang beenden sollte. Gewöhnliche Tools sollten ihn ohne Festlegung lassen.