Skip to main content

컨텍스트 지우기 및 터미널 도구

호스트가 세션을 대체하지 않고 현재 대화 컨텍스트를 바꿔야 하는 경우에 사용합니다 session.history.clearContext . 일반적인 용도로는 핸드오프 및 호스트 관리 컨텍스트 수명 주기 정책이 포함됩니다.

컨텍스트 지우기는 새 세션을 만드는 방법과 다릅니다. 모델 관련 대화를 제거하면서 세션 ID, 시스템 및 개발자 메시지, 구성 및 이벤트 로그를 유지합니다.

중요

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)
러스트with_is_terminal(true)

성공적으로 완료되면 해당 턴이 종료되어야 하는 도구에만 종료 설정을 사용하세요. 일반 도구는 설정되지 않은 상태로 두어야 합니다.