# Средства очистки контекста и терминала

Используется session.history.clearContext , когда узел должен заменить текущий контекст беседы без замены сеанса. Типичные варианты использования включают передачу и политики жизненного цикла контекста, управляемого узлом.

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

Очистка контекста отличается от создания нового сеанса: она сохраняет удостоверение сеанса, сообщения о системе и разработчике, конфигурацию и журнал событий при удалении беседы с моделью.

> [!IMPORTANT]
> `clearContext` — это примитив обработчика инструментов. Среда выполнения отклоняет вызовы, выполненные без вызова средства в полете, вызовы с пустым начальным запросом и вызовы на удаленных сеансах.

## Определение средства очистки контекста

Средство успешного очистки контекста должно быть терминалом. В противном случае цикл агента может вызвать другую модель для только что очищенного окна перед началом начального поворота.

```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.`;
      },
    }),
  ],
});
```

Обязательный `prompt` элемент становится первым пользовательским сообщением в новом контексте. Успешное удаление выдает `session.context_cleared` количество удаленных сообщений и исходное сообщение.

## Поведение средства терминала

`isTerminal` завершает текущий поворот агента только после успешного выполнения средства. Ошибка, отказ, отклонение, время ожидания или ошибка проверки входных данных остается видимой для модели, чтобы она может восстановить или повторить попытку.

Параметр следует соглашениям об именовании каждого языка:

| SDK | Параметр инструмента |
|---|---|
| Node.js | `isTerminal` |
| Python | `is_terminal` |
| Go | `IsTerminal` |
| .NET | `CopilotToolOptions.IsTerminal` |
| Java | 
`ToolDefinition.isTerminal(true)` или `@CopilotTool(isTerminal = true)` |
| Rust | `with_is_terminal(true)` |

Используйте терминали только для инструментов, успешное завершение которого должно завершиться. Обычные средства должны оставить его неустановленным.