컨텍스트 지우기는 새 세션을 만드는 방법과 다릅니다. 모델 관련 대화를 제거하면서 세션 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.js | isTerminal |
| Python | is_terminal |
| Go | IsTerminal |
| .NET | Copilot |
| Java | |
Tool 또는 @Copilot | |
| 러스트 | with_is_terminal(true) |
성공적으로 완료되면 해당 턴이 종료되어야 하는 도구에만 종료 설정을 사용하세요. 일반 도구는 설정되지 않은 상태로 두어야 합니다.