{"meta":{"title":"Средства очистки контекста и терминала","intro":"Используется session.history.clearContext , когда узел должен заменить текущий контекст беседы без замены сеанса. Типичные варианты использования включают передачу и политики жизненного цикла контекста, управляемого узлом.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos","title":"Инструкции"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"Второй пилот SDK"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features","title":"Возможности"},{"href":"/ru/enterprise-cloud@latest/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Очистка контекста отличается от создания нового сеанса: она сохраняет удостоверение сеанса, сообщения о системе и разработчике, конфигурацию и журнал событий при удалении беседы с моделью.\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Используйте терминали только для инструментов, успешное завершение которого должно завершиться. Обычные средства должны оставить его неустановленным."}