# 默认设置（随附的 CLI）

Node.js 和.NET SDK 包括 Copilot CLI 作为依赖项 ， 你的应用附带了它所需的一切，无需额外的安装或配置。

<!-- markdownlint-disable GHD046 GHD005 -->

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

Python SDK 建议在安装后执行一次性下载步骤：

```bash
python -m copilot download-runtime
```

这会下载匹配的运行时并将其缓存在本地。 如果跳过此步骤，SDK 会在首次使用时尝试自动下载该内容，作为后备方案。

**最适合：** 大多数应用程序 - 桌面应用、独立工具、CLI 实用工具、原型等。

## 工作原理

安装 SDK 时，会自动包含 Copilot 运行时（Node.js、.NET），或者通过 `python -m copilot download-runtime` 下载 (Python)。 SDK 将其作为子进程启动，并通过 stdio 进行通信。 无需额外配置。

![图示：显示所述过程的流程图。](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-0.png)

**主要特征：**

* SDK 附带 CLI 二进制文件 - 无需单独安装
* SDK 管理 CLI 版本以确保兼容性
* 用户通过应用进行身份验证（或使用 env vars /BYOK）
* 会话在用户本机上按用户进行管理

## 快速入门

<div class="ghd-codetabs">
<div class="ghd-codetab" data-lang="typescript" data-label="TypeScript"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">TypeScript</div>

```typescript
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();

const session = await client.createSession({ model: "gpt-5.4" });
const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);

await client.stop();
```

</div>

<div class="ghd-codetab" data-lang="python" data-label="Python"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Python</div>

```python
from copilot import CopilotClient
from copilot.session import PermissionHandler

client = CopilotClient()
await client.start()

session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model="gpt-5.4")
response = await session.send_and_wait("Hello!")
print(response.data.content)

await client.stop()
```

</div>

<div class="ghd-codetab" data-lang="go" data-label="Go"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Go</div>

> \[!NOTE]
> 与 Node.js、Python和.NET不同，Go SDK 不包括 CLI 作为自动依赖项。 如果没有显式路径，`NewClient(nil)` 在可用时使用嵌入式 CLI，然后回退到 `PATH` 上的 `copilot`。 若要嵌入 CLI，请在生成时运行 [捆绑程序工具](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) 。 还可以设置 `COPILOT_CLI_PATH`，或将 `Connection` 指向现有的二进制文件。 有关详细信息，请参阅“[本地 CLI 设置](/zh/copilot/how-tos/copilot-sdk/setup/local-cli)”。

```golang
client := copilot.NewClient(nil)
if err := client.Start(ctx); err != nil {
    log.Fatal(err)
}
defer client.Stop()

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: "gpt-5.4"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
    fmt.Println(d.Content)
}
```

</div>

<div class="ghd-codetab" data-lang="dotnet" data-label=".NET"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">.NET</div>

```csharp
await using var client = new CopilotClient();
await using var session = await client.CreateSessionAsync(
    new SessionConfig { Model = "gpt-5.4" });

var response = await session.SendAndWaitAsync(
    new MessageOptions { Prompt = "Hello!" });
Console.WriteLine(response?.Data.Content);
```

</div>

<div class="ghd-codetab" data-lang="java" data-label="Java"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Java</div>

> \[!NOTE]
> Java SDK 不会捆绑或嵌入Copilot CLI。 单独安装 CLI，并使 `copilot` 在你的 `PATH` 上可用，或使用 `setCliPath(...)` 设置其位置（或使用 `setCliUrl(...)` 连接到正在运行的 CLI 服务器）。

```java
import com.github.copilot.CopilotClient;
import com.github.copilot.rpc.*;

var client = new CopilotClient(new CopilotClientOptions()
    // Point to the CLI binary installed on the system
    .setCliPath("/path/to/vendor/copilot")
);
client.start().get();

var session = client.createSession(new SessionConfig()
    .setModel("gpt-5.4")
    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
).get();

var response = session.sendAndWait(new MessageOptions()
    .setPrompt("Hello!")).get();
System.out.println(response.getData().content());

client.stop().get();
```

</div>

</div>

## 身份验证策略

你需要确定用户如何进行身份验证。 下面是常见模式：

![图示：显示所述过程的流程图。](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-1.png)

### 选项 A：用户的登录凭据（最简单的）

用户只需登录 CLI 一次，之后你的应用就会使用这些凭据。 不需要额外的代码 - 这是默认行为。

```typescript
const client = new CopilotClient();
// Default: uses signed-in user credentials
```

### 选项 B：通过环境变量传递令牌

发布应用时附带设置令牌的说明，或通过编程方式设置令牌：

```typescript
const client = new CopilotClient({
    env: {
        COPILOT_GITHUB_TOKEN: getUserToken(),  // Your app provides the token
    },
});
```

### 选项 C：BYOK （无需GitHub身份验证）

如果管理自己的模型提供程序密钥，用户根本不需要GitHub帐户：

```typescript
const client = new CopilotClient();

const session = await client.createSession({
    model: "gpt-5.4",
    provider: {
        type: "openai",
        baseUrl: "https://api.openai.com/v1",
        apiKey: process.env.OPENAI_API_KEY,
    },
});
```

有关完整详细信息，请参阅 **[BYOK （自带密钥）](/zh/copilot/how-tos/copilot-sdk/auth/byok)** 。

## 会话管理

应用通常需要命名会话，以便用户可以恢复对话：

```typescript
const client = new CopilotClient();

// Create a session tied to the user's project
const sessionId = `project-${projectName}`;
const session = await client.createSession({
    sessionId,
    model: "gpt-5.4",
});

// User closes app...
// Later, resume where they left off
const resumed = await client.resumeSession(sessionId);
```

会话状态保留在 `~/.copilot/session-state/{sessionId}/`。

## 何时继续

| 需要                                                                    | 下一篇指南 |
| --------------------------------------------------------------------- | ----- |
| 使用 GitHub 帐户登录的用户                                                     |       |
| [GitHub OAuth 设置](/zh/copilot/how-tos/copilot-sdk/setup/github-oauth) |       |
| 在服务器上运行，而不是用户计算机                                                      |       |
| [后端服务设置](/zh/copilot/how-tos/copilot-sdk/setup/backend-services)      |       |
| 使用自己的模型密钥                                                             |       |
| [BYOK （自带密钥）](/zh/copilot/how-tos/copilot-sdk/auth/byok)              |       |

## 后续步骤

* **[BYOK （自带密钥）](/zh/copilot/how-tos/copilot-sdk/auth/byok)**：使用您自己的模型服务提供商密钥
* **[会话恢复和持久性](/zh/copilot/how-tos/copilot-sdk/features/session-persistence)**：高级会话管理
* **[构建你的第一个由 Copilot 提供支持的应用](/zh/copilot/how-tos/copilot-sdk/getting-started)**：生成完整的应用