GitHub Copilot SDK 샘플 코드 (with File-based App + Native AOT)

GitHub Copilot SDK가 정식으로 공개되어 빠르게 둘러볼 수 있는 샘플 코드를 작성해봤습니다. 추후 정식 버전까지 지켜봐야 하겠으나, 일단 살펴보기로는 AOT 지원도 하고 있는 것으로 보여서 만족스럽습니다. :smiley:

GitHub Copilot SDK는 시스템에 설치된 GitHub Copilot CLI를 찾아서 활용하는 래퍼이므로 OS에 무관하게 지원되며, 원격 서버 형태로도 연결이 가능한 것으로 보입니다.

아래 코드를 ghcopilot.cs 로 저장하시고, dotnet run ghcopilot.cs 또는 chmod +x ghcopilot.cs; ./ghcopilot.cs 명령어로 실행하면 실행해볼 수 있습니다.

#!/usr/bin/env dotnet
#:package GitHub.Copilot.SDK@0.*
#:property PublishAot=true

using GitHub.Copilot.SDK;
using System.Threading.Tasks;

await using var client = new CopilotClient(new()
{
	// Windows 기준. Linux, macOS의 경우 다른 경로 탐색 기준 필요.
	CliPath = Path.Combine(
		Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
		"Microsoft", "WinGet", "Links", "copilot.exe"),
});
await client.StartAsync();

// Create a session (OnPermissionRequest is required)
await using var session = await client.CreateSessionAsync(new SessionConfig
{
	Model = "gpt-5.4",
	OnPermissionRequest = PermissionHandler.ApproveAll,
});

// Wait for response using session.idle event
var done = new TaskCompletionSource();

session.On(e =>
{
	if (e is AssistantMessageEvent msg)
	{
		Console.WriteLine(msg.Data.Content);
	}
	else if (e is SessionIdleEvent)
	{
		done.SetResult();
	}
});

// Send a message and wait for completion
await session.SendAsync(new MessageOptions { Prompt = "What is 2+2?" });
await done.Task;

1개의 좋아요