Remarque
SDK Copilot est actuellement en préversion technique. Les fonctionnalités et la disponibilité sont susceptibles de changer.
Expédier Copilot pour CLI dans le cadre de votre application afin que vos utilisateurs puissent démarrer sans configuration supplémentaire.
**Meilleur pour :** Applications de bureau, outils autonomes, applications Electron et utilitaires CLI distribuables.
Fonctionnement
Au lieu de vous appuyer sur une interface CLI installée globalement, vous incluez le fichier binaire CLI dans votre ensemble d’applications. Le Kit de développement logiciel (SDK) pointe vers votre copie groupée via l’option cliPath . Les principales caractéristiques sont les suivantes :
- Le fichier binaire CLI est fourni avec votre application. Aucune installation distincte n’est nécessaire.
- Vous contrôlez la version exacte de l’interface CLI utilisée par votre application.
- Les utilisateurs s’authentifient via votre application, les variables d’environnement ou BYOK.
- Les sessions sont gérées par utilisateur sur leur ordinateur.
Paramétrage
Étape 1 : Inclure l’interface CLI dans votre projet
L’interface CLI est distribuée dans le cadre du @github/copilot package npm.
npm install @github/copilot
Étape 2 : Pointer le KIT DE développement logiciel (SDK) vers votre interface CLI groupée
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()
Allez
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);
Stratégies d’authentification
Lorsque vous regroupez l’interface CLI, vous devez décider de la façon dont vos utilisateurs s’authentifient. Le diagramme suivant illustre les modèles courants.

Option A : Informations d’identification de connexion de l’utilisateur (le plus simple)
L’utilisateur se connecte à l’interface CLI une seule fois, et votre application groupée utilise ces informations d’identification. Aucun code supplémentaire n’est nécessaire : il s’agit du comportement par défaut.
const client = new CopilotClient({
cliPath: path.join(__dirname, "vendor", "copilot"),
// Default: uses signed-in user credentials
});
Option B : Jeton via une variable d’environnement
Définissez un jeton par programmation ou demandez aux utilisateurs de définir un jeton avant de démarrer votre application :
const client = new CopilotClient({
cliPath: path.join(__dirname, "vendor", "copilot"),
env: {
COPILOT_GITHUB_TOKEN: getUserToken(),
},
});
Remplacez getUserToken() par la logique de votre application qui récupère le jeton OAuth de GitHub l’utilisateur.
Option C : BYOK (aucune GitHub authentification nécessaire)
Si vous gérez vos propres clés de fournisseur de modèles, les utilisateurs n’ont pas besoin de créer des comptes GitHub.
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,
},
});
Gestion des sessions
Les applications groupées veulent généralement des sessions nommées afin que les utilisateurs puissent reprendre les conversations :
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);
L’état de session est stocké à l’emplacement ~/.copilot/session-state/SESSION-ID/où SESSION-ID est l’ID de session que vous avez fourni.
Modèles de distribution
Application de bureau (Electron, Tauri)
Incluez le fichier binaire CLI dans le répertoire des ressources de votre application :
import { app } from "electron";
import path from "path";
const cliPath = path.join(
app.isPackaged ? process.resourcesPath : __dirname,
"copilot"
);
const client = new CopilotClient({ cliPath });
Outil CLI
Pour les outils CLI distribuables, résolvez le chemin d’accès relatif à votre fichier binaire :
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 });
Fichiers binaires spécifiques à la plateforme
Lors de la distribution pour plusieurs plateformes, incluez le fichier binaire correct pour chaque cible :
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(),
});
Limites
| Limitation | Détails |
|---|---|
| Taille du bundle | Le fichier binaire CLI s’ajoute à la taille de distribution de votre application. |
| Mises à jour | Vous gérez les mises à jour de version CLI dans votre cycle de publication. |
| Builds de plateforme | Des fichiers binaires distincts sont nécessaires pour chaque système d’exploitation/architecture. |
| Utilisateur unique | Chaque instance CLI groupée sert un utilisateur. |
Étapes suivantes
- Pour les utilisateurs qui se connectent avec GitHub comptes, consultez Utilisation de GitHub OAuth avec le Kit de développement logiciel (SDK) Copilot.
- Pour s’exécuter sur un serveur au lieu d’ordinateurs utilisateur, consultez Configuration du Kit de développement logiciel (SDK) Copilot pour les services principaux.
- Pour l’installation et votre premier message, consultez Getting started avec le Kit de développement logiciel (SDK) Copilot.