Skip to main content

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

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

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

Внимание

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

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

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

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.jsisTerminal
Pythonis_terminal
GoIsTerminal
.NETCopilotToolOptions.IsTerminal
Java
ToolDefinition.isTerminal(true) или @CopilotTool(isTerminal = true)
Rustwith_is_terminal(true)

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