Hinweis
Copilot SDK ist zurzeit in Technische Vorschau. Funktionalität und Verfügbarkeit können geändert werden.
Versenden Sie Copilot CLI als Teil Ihrer Anwendung, damit Ihre Benutzer ohne zusätzliche Einrichtung beginnen können.
Am besten geeignet für: Desktop-Apps, eigenständige Tools, Elektronen-Apps und verteilbare CLI-Dienstprogramme.
So funktioniert es
Anstatt sich auf eine global installierte CLI zu verlassen, fügen Sie die CLI-Binärdatei in Ihr Anwendungsbundle ein. Das SDK verweist über die cliPath Option auf Ihre gebündelte Kopie. Die wichtigsten Merkmale sind:
- Die CLI-Binärdatei wird mit Ihrer App ausgeliefert– es ist keine separate Installation erforderlich.
- Sie steuern die genaue CLI-Version, die Ihre App verwendet.
- Benutzer authentifizieren sich über Ihre App, Umgebungsvariablen oder BYOK.
- Sitzungen werden pro Benutzer auf ihrem Computer verwaltet.
Konfiguration
Schritt 1: Einschließen der CLI in Ihr Projekt
Die CLI wird als Teil des @github/copilot npm-Pakets verteilt.
npm install @github/copilot
Schritt 2: Richten Sie das SDK auf Ihre gebundene CLI
Node.js / TypeScript
import { CopilotClient } from "@github/copilot-sdk";
import path from "path";
const client = new CopilotClient({
// Point to the CLI binary in your app bundle
cliPath: path.join(__dirname, "vendor", "copilot"),
});
const session = await client.createSession({ model: "gpt-4.1" });
const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);
await client.stop();
Python
from copilot import CopilotClient, PermissionHandler
from pathlib import Path
client = CopilotClient({
"cli_path": str(Path(__file__).parent / "vendor" / "copilot"),
})
await client.start()
session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model="gpt-4.1")
response = await session.send_and_wait({"prompt": "Hello!"})
print(response.data.content)
await client.stop()
Los geht's
client := copilot.NewClient(&copilot.ClientOptions{
CLIPath: "./vendor/copilot",
})
if err := client.Start(ctx); err != nil {
log.Fatal(err)
}
defer client.Stop()
session, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: "gpt-4.1"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
fmt.Println(*response.Data.Content)
.NET
var client = new CopilotClient(new CopilotClientOptions
{
CliPath = Path.Combine(AppContext.BaseDirectory, "vendor", "copilot"),
});
await using var session = await client.CreateSessionAsync(
new SessionConfig { Model = "gpt-4.1" });
var response = await session.SendAndWaitAsync(
new MessageOptions { Prompt = "Hello!" });
Console.WriteLine(response?.Data.Content);
Authentifizierungsstrategien
Beim Bündeln der CLI müssen Sie entscheiden, wie sich Ihre Benutzer authentifizieren werden. Das folgende Diagramm veranschaulicht allgemeine Muster.

Option A: Anmeldeinformationen des Benutzers (am einfachsten)
Der Benutzer meldet sich einmal bei der CLI an, und Ihre gebündelte App verwendet diese Anmeldeinformationen. Kein zusätzlicher Code erforderlich – dies ist das Standardverhalten.
const client = new CopilotClient({
cliPath: path.join(__dirname, "vendor", "copilot"),
// Default: uses signed-in user credentials
});
Option B: Token über Umgebungsvariable
Legen Sie ein Token programmgesteuert fest oder weisen Sie Benutzer an, ein Token festzulegen, bevor Sie Ihre App starten:
const client = new CopilotClient({
cliPath: path.join(__dirname, "vendor", "copilot"),
env: {
COPILOT_GITHUB_TOKEN: getUserToken(),
},
});
Ersetzen Sie getUserToken() durch die Logik in Ihrer App, die das OAuth-Token des Benutzers GitHub abruft.
Option C: BYOK (keine GitHub Authentifizierung erforderlich)
Wenn Sie Ihre eigenen Modellanbieterschlüssel verwalten, benötigen GitHub Benutzer keine Konten:
const client = new CopilotClient({
cliPath: path.join(__dirname, "vendor", "copilot"),
});
const session = await client.createSession({
model: "gpt-4.1",
provider: {
type: "openai",
baseUrl: "https://api.openai.com/v1",
apiKey: process.env.OPENAI_API_KEY,
},
});
Sitzungsverwaltung
Gebündelte Apps möchten in der Regel benannte Sitzungen, damit Benutzer Unterhaltungen fortsetzen können:
const client = new CopilotClient({
cliPath: path.join(__dirname, "vendor", "copilot"),
});
// Create a session tied to the user's project
const sessionId = `project-${projectName}`;
const session = await client.createSession({
sessionId,
model: "gpt-4.1",
});
// Resume the session in a later run
const resumed = await client.resumeSession(sessionId);
Der Sitzungszustand wird bei ~/.copilot/session-state/SESSION-ID/ gespeichert, wobei die von Ihnen angegebene Sitzungs-ID SESSION-ID ist.
Verteilungsmuster
Desktop-App (Electron, Tauri)
Fügen Sie die CLI-Binärdatei in das Ressourcenverzeichnis Ihrer App ein:
import { app } from "electron";
import path from "path";
const cliPath = path.join(
app.isPackaged ? process.resourcesPath : __dirname,
"copilot"
);
const client = new CopilotClient({ cliPath });
CLI-Tool
Lösen Sie für verteilungsfähige CLI-Tools den Pfad relativ zu Ihrer Binärdatei auf:
import { fileURLToPath } from "url";
import path from "path";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const cliPath = path.join(__dirname, "..", "vendor", "copilot");
const client = new CopilotClient({ cliPath });
Plattformspezifische Binärdateien
Geben Sie bei der Verteilung für mehrere Plattformen die richtige Binärdatei für jedes Ziel ein:
my-app/
├── vendor/
│ ├── copilot-darwin-arm64 # macOS Apple Silicon
│ ├── copilot-darwin-x64 # macOS Intel
│ ├── copilot-linux-x64 # Linux x64
│ └── copilot-win-x64.exe # Windows x64
└── src/
└── index.ts
import os from "os";
function getCLIPath(): string {
const platform = process.platform; // "darwin", "linux", "win32"
const arch = os.arch(); // "arm64", "x64"
const ext = platform === "win32" ? ".exe" : "";
const name = `copilot-${platform}-${arch}${ext}`;
return path.join(__dirname, "vendor", name);
}
const client = new CopilotClient({
cliPath: getCLIPath(),
});
Einschränkungen
| Einschränkung | Einzelheiten |
|---|---|
| Paketgröße | Die CLI-Binärdatei erhöht die Distributionsgröße Ihrer App. |
| Updates | Sie verwalten CLI-Versionsupdates im Veröffentlichungszyklus. |
| Plattformkompilierungen | Für jedes Betriebssystem/jede Architektur sind separate Binärdateien erforderlich. |
| Einzelner Benutzer | Jede gebündelte CLI-Instanz dient einem Benutzer. |
Nächste Schritte
- Informationen zu Benutzern, die sich mit GitHub Konten anmelden, finden Sie unter Verwenden von GitHub OAuth mit Copilot SDK.
- Informationen zum Ausführen auf einem Server anstelle von Benutzercomputern finden Sie unter Einrichten des Copilot SDK für Back-End-Dienste.
- Informationen zur Installation und ihrer ersten Nachricht finden Sie unter Erste Schritte mit dem Copilot SDK.