{"meta":{"title":"Ferramentas de terminal e limpeza de contexto","intro":"Use session.history.clearContext quando um host precisar substituir o contexto de conversa atual sem substituir a sessão. Os usos típicos incluem políticas de ciclo de vida de contexto gerenciadas pelo host e de entregas.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos","title":"Instruções"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"SDK do Copilot"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features","title":"Features"},{"href":"/pt/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/context-management","title":"Gerenciamento de contexto"}],"documentType":"article"},"body":"# Ferramentas de terminal e limpeza de contexto\n\nUse session.history.clearContext quando um host precisar substituir o contexto de conversa atual sem substituir a sessão. Os usos típicos incluem políticas de ciclo de vida de contexto gerenciadas pelo host e de entregas.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\nA limpeza de contexto é diferente da criação de uma nova sessão: preserva a identidade da sessão, as mensagens do sistema e do desenvolvedor, a configuração e o log de eventos ao remover a conversa voltada para o modelo.\n\n> [!IMPORTANT]\n> `clearContext` é uma primitiva de manipulador de ferramentas. O runtime rejeita chamadas feitas sem uma chamada de ferramenta em versão de pré-lançamento, chamadas com um prompt de propagação vazio e chamadas em sessões remotas.\n\n## Definir uma ferramenta de limpeza de contexto\n\nUma ferramenta de limpeza de contexto bem-sucedida deve ser terminal. Caso contrário, o loop de agente poderá fazer outra chamada de modelo na janela recém-limpa antes de iniciar a rodada propagada.\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\nO necessário `prompt` se torna a primeira mensagem de usuário no novo contexto. Uma limpeza bem-sucedida emite `session.context_cleared` com o número de mensagens removidas e a mensagem inicial.\n\n## Comportamento da ferramenta Terminal\n\n`isTerminal` encerra a rodada atual do agente somente quando a ferramenta é bem-sucedida. Um erro de falha, negação, rejeição, tempo limite ou validação de entrada permanece visível para o modelo para que ele possa recuperar ou tentar novamente.\n\nA opção segue as convenções de nomenclatura de cada idioma:\n\n| SDK | Opção de ferramenta |\n|---|---|\n| Node.js | `isTerminal` |\n| Python | `is_terminal` |\n| Go | `IsTerminal` |\n| .NET | `CopilotToolOptions.IsTerminal` |\n| Java | \n`ToolDefinition.isTerminal(true)` ou `@CopilotTool(isTerminal = true)` |\n| Rust | `with_is_terminal(true)` |\n\nUse a terminalidade somente para ferramentas cuja conclusão bem-sucedida deve encerrar a rodada. As ferramentas comuns devem deixá-la sem configuração."}