{"meta":{"title":"默认设置（随附的 CLI）","intro":"Node.js 和.NET SDK 包括 Copilot CLI 作为依赖项 ， 你的应用附带了它所需的一切，无需额外的安装或配置。","product":"GitHub Copilot","breadcrumbs":[{"href":"/zh/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/zh/enterprise-cloud@latest/copilot/how-tos","title":"操作方法"},{"href":"/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup","title":"设置 Copilot SDK"},{"href":"/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/bundled-cli","title":"捆绑的 CLI"}],"documentType":"article"},"body":"# 默认设置（随附的 CLI）\n\nNode.js 和.NET SDK 包括 Copilot CLI 作为依赖项 ， 你的应用附带了它所需的一切，无需额外的安装或配置。\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\nPython SDK 建议在安装后执行一次性下载步骤：\n\n```bash\npython -m copilot download-runtime\n```\n\n这会下载匹配的运行时并将其缓存在本地。 如果跳过此步骤，SDK 会在首次使用时尝试自动下载该内容，作为后备方案。\n\n**最适合：** 大多数应用程序 - 桌面应用、独立工具、CLI 实用工具、原型等。\n\n## 工作原理\n\n安装 SDK 时，会自动包含 Copilot 运行时（Node.js、.NET），或者通过 `python -m copilot download-runtime` 下载 (Python)。 SDK 将其作为子进程启动，并通过 stdio 进行通信。 无需额外配置。\n\n![图示：显示所述过程的流程图。](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-0.png)\n\n**主要特征：**\n\n* SDK 附带 CLI 二进制文件 - 无需单独安装\n* SDK 管理 CLI 版本以确保兼容性\n* 用户通过应用进行身份验证（或使用 env vars /BYOK）\n* 会话在用户本机上按用户进行管理\n\n## 快速入门\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient();\n\nconst session = await client.createSession({ model: \"gpt-5.4\" });\nconst response = await session.sendAndWait({ prompt: \"Hello!\" });\nconsole.log(response?.data.content);\n\nawait client.stop();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\nfrom copilot.session import PermissionHandler\n\nclient = CopilotClient()\nawait client.start()\n\nsession = await client.create_session(on_permission_request=PermissionHandler.approve_all, model=\"gpt-5.4\")\nresponse = await session.send_and_wait(\"Hello!\")\nprint(response.data.content)\n\nawait client.stop()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n> \\[!NOTE]\n> 与 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/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/local-cli)”。\n\n```golang\nclient := copilot.NewClient(nil)\nif err := client.Start(ctx); err != nil {\n    log.Fatal(err)\n}\ndefer client.Stop()\n\nsession, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: \"gpt-5.4\"})\nresponse, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: \"Hello!\"})\nif d, ok := response.Data.(*copilot.AssistantMessageData); ok {\n    fmt.Println(d.Content)\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nawait using var client = new CopilotClient();\nawait using var session = await client.CreateSessionAsync(\n    new SessionConfig { Model = \"gpt-5.4\" });\n\nvar response = await session.SendAndWaitAsync(\n    new MessageOptions { Prompt = \"Hello!\" });\nConsole.WriteLine(response?.Data.Content);\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n> \\[!NOTE]\n> Java SDK 不会捆绑或嵌入Copilot CLI。 单独安装 CLI，并使 `copilot` 在你的 `PATH` 上可用，或使用 `setCliPath(...)` 设置其位置（或使用 `setCliUrl(...)` 连接到正在运行的 CLI 服务器）。\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\n\nvar client = new CopilotClient(new CopilotClientOptions()\n    // Point to the CLI binary installed on the system\n    .setCliPath(\"/path/to/vendor/copilot\")\n);\nclient.start().get();\n\nvar session = client.createSession(new SessionConfig()\n    .setModel(\"gpt-5.4\")\n    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)\n).get();\n\nvar response = session.sendAndWait(new MessageOptions()\n    .setPrompt(\"Hello!\")).get();\nSystem.out.println(response.getData().content());\n\nclient.stop().get();\n```\n\n</div>\n\n</div>\n\n## 身份验证策略\n\n你需要确定用户如何进行身份验证。 下面是常见模式：\n\n![图示：显示所述过程的流程图。](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-1.png)\n\n### 选项 A：用户的登录凭据（最简单的）\n\n用户只需登录 CLI 一次，之后你的应用就会使用这些凭据。 不需要额外的代码 - 这是默认行为。\n\n```typescript\nconst client = new CopilotClient();\n// Default: uses signed-in user credentials\n```\n\n### 选项 B：通过环境变量传递令牌\n\n发布应用时附带设置令牌的说明，或通过编程方式设置令牌：\n\n```typescript\nconst client = new CopilotClient({\n    env: {\n        COPILOT_GITHUB_TOKEN: getUserToken(),  // Your app provides the token\n    },\n});\n```\n\n### 选项 C：BYOK （无需GitHub身份验证）\n\n如果管理自己的模型提供程序密钥，用户根本不需要GitHub帐户：\n\n```typescript\nconst client = new CopilotClient();\n\nconst session = await client.createSession({\n    model: \"gpt-5.4\",\n    provider: {\n        type: \"openai\",\n        baseUrl: \"https://api.openai.com/v1\",\n        apiKey: process.env.OPENAI_API_KEY,\n    },\n});\n```\n\n有关完整详细信息，请参阅 **[BYOK （自带密钥）](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok)** 。\n\n## 会话管理\n\n应用通常需要命名会话，以便用户可以恢复对话：\n\n```typescript\nconst client = new CopilotClient();\n\n// Create a session tied to the user's project\nconst sessionId = `project-${projectName}`;\nconst session = await client.createSession({\n    sessionId,\n    model: \"gpt-5.4\",\n});\n\n// User closes app...\n// Later, resume where they left off\nconst resumed = await client.resumeSession(sessionId);\n```\n\n会话状态保留在 `~/.copilot/session-state/{sessionId}/`。\n\n## 何时继续\n\n| 需要                                                                                            | 下一篇指南 |\n| --------------------------------------------------------------------------------------------- | ----- |\n| 使用 GitHub 帐户登录的用户                                                                             |       |\n| [GitHub OAuth 设置](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/github-oauth) |       |\n| 在服务器上运行，而不是用户计算机                                                                              |       |\n| [后端服务设置](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/backend-services)      |       |\n| 使用自己的模型密钥                                                                                     |       |\n| [BYOK （自带密钥）](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok)              |       |\n\n## 后续步骤\n\n* **[BYOK （自带密钥）](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok)**：使用您自己的模型服务提供商密钥\n* **[会话恢复和持久性](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/session-persistence)**：高级会话管理\n* **[构建你的第一个由 Copilot 提供支持的应用](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/getting-started)**：生成完整的应用"}