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

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

<!-- markdownlint-disable GHD046 GHD005 -->
<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->

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

> [!IMPORTANT]
> `clearContext` 는 도구 처리기 기본 형식입니다. 런타임은 진행 중인 도구 호출 없이 이루어진 호출, 시드 프롬프트가 비어 있는 호출, 그리고 원격 세션에서의 호출을 거부합니다.

## 컨텍스트 지우기 도구 정의

성공적인 컨텍스트 초기화 도구는 최종적이어야 합니다. 그렇지 않으면 에이전트 루프는 시드된 턴을 시작하기 전에 새로 지워진 창에 대해 다른 모델 호출을 할 수 있습니다.

```typescript
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 | `CopilotToolOptions.IsTerminal` |
| Java | 
`ToolDefinition.isTerminal(true)` 또는 `@CopilotTool(isTerminal = true)` |
| 러스트 | `with_is_terminal(true)` |

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