{"meta":{"title":"将本地 CLI 与 Copilot SDK 配合使用","intro":"在 GitHub Copilot SDK 计算机上已登录的 CLI 中使用 — 最简单的配置，无需身份验证代码或基础结构。","product":"GitHub Copilot","breadcrumbs":[{"href":"/zh/copilot","title":"GitHub Copilot"},{"href":"/zh/copilot/how-tos","title":"操作方法"},{"href":"/zh/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/zh/copilot/how-tos/copilot-sdk/set-up-copilot-sdk","title":"设置 Copilot SDK"},{"href":"/zh/copilot/how-tos/copilot-sdk/set-up-copilot-sdk/local-cli","title":"本地 CLI"}],"documentType":"article"},"body":"# 将本地 CLI 与 Copilot SDK 配合使用\n\n在 GitHub Copilot SDK 计算机上已登录的 CLI 中使用 — 最简单的配置，无需身份验证代码或基础结构。\n\n> \\[!NOTE]\n\n```\n          Copilot SDK 当前处于 技术预览版. 功能和可用性可能会发生更改。\n```\n\n将 GitHub Copilot SDK 连接到您本地登录的 CLI 是快速入门的最佳方法。\n\n```\n          **最适合：** 个人项目、原型制作、本地开发和学习 SDK。\n```\n\n## 工作原理\n\n安装 Copilot 命令行界面（CLI） 并登录时，凭据将存储在系统密钥链中。 SDK 自动将 CLI 作为子进程启动，并使用这些存储的凭据。 主要特征：\n\n* SDK 会自动生成 CLI，无需设置。\n* 身份验证使用系统密钥链中已登录用户的凭据。\n* 通信通过 stdio （stdin/stdout） 发生 - 未打开任何网络端口。\n* 会话是您计算机的本地会话。\n\n## 快速入门\n\n默认配置根本不需要任何选项。\n\n### Node.js/TypeScript\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient();\nconst session = await client.createSession({ model: \"gpt-4.1\" });\n\nconst response = await session.sendAndWait({ prompt: \"Hello!\" });\nconsole.log(response?.data.content);\n\nawait client.stop();\n```\n\n### Python\n\n```python\nfrom copilot import CopilotClient, PermissionHandler\n\nclient = CopilotClient()\nawait client.start()\n\nsession = await client.create_session(on_permission_request=PermissionHandler.approve_all, model=\"gpt-4.1\")\nresponse = await session.send_and_wait({\"prompt\": \"Hello!\"})\nprint(response.data.content)\n\nawait client.stop()\n```\n\n### Go\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-4.1\"})\nresponse, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: \"Hello!\"})\nfmt.Println(*response.Data.Content)\n```\n\n### .NET\n\n```csharp\nawait using var client = new CopilotClient();\nawait using var session = await client.CreateSessionAsync(\n    new SessionConfig { Model = \"gpt-4.1\" });\n\nvar response = await session.SendAndWaitAsync(\n    new MessageOptions { Prompt = \"Hello!\" });\nConsole.WriteLine(response?.Data.Content);\n```\n\nSDK 处理所有内容：启动 CLI、身份验证和管理会话。\n\n## 此操作在内部的工作原理是什么？\n\n有关组件之间的交互顺序的详细信息，请参阅`github/copilot-sdk`中的[](https://github.com/github/copilot-sdk/blob/main/docs/setup/local-cli.md#whats-happening-under-the-hood)序列图。\n\n## 配置选项\n\n虽然默认设置适用于大多数情况，但你可以自定义本地设置：\n\n```typescript\nconst client = new CopilotClient({\n    // Override CLI location (default: bundled with @github/copilot)\n    cliPath: \"/usr/local/bin/copilot\",\n\n    // Set log level for debugging\n    logLevel: \"debug\",\n\n    // Pass extra CLI arguments\n    cliArgs: [\"--log-dir=/tmp/copilot-logs\"],\n\n    // Set working directory\n    cwd: \"/path/to/project\",\n});\n```\n\n## 使用环境变量\n\n你可以通过环境变量进行身份验证，而不是密钥链。 这对于 CI 或不需要交互式登录时非常有用。\n\n```shell\n# Set one of these (in priority order):\nexport COPILOT_GITHUB_TOKEN=\"YOUR-GITHUB-TOKEN\"   # Recommended\nexport GH_TOKEN=\"YOUR-GITHUB-TOKEN\"               # GitHub CLI compatible\nexport GITHUB_TOKEN=\"YOUR-GITHUB-TOKEN\"           # GitHub Actions compatible\n```\n\n将 `YOUR-GITHUB-TOKEN` 替换为有效的 GitHubpersonal access token 或 OAuth 令牌。 SDK 会自动选取这些内容 ， 无需更改代码。\n\n## 管理会话\n\n使用本地 CLI 时，会话默认为临时会话。 若要创建可恢复会话，请提供会话 ID：\n\n```typescript\n// Create a named session\nconst session = await client.createSession({\n    sessionId: \"my-project-analysis\",\n    model: \"gpt-4.1\",\n});\n\n// Resume it in a later run\nconst resumed = await client.resumeSession(\"my-project-analysis\");\n```\n\n会话状态存储在本地 `~/.copilot/session-state/SESSION-ID/`，而 `SESSION-ID` 是您提供的会话 ID。\n\n## 局限性\n\n| 限度            | 详细信息                       |\n| ------------- | -------------------------- |\n| **单个用户**      | 凭据与登录到 CLI 的人员相关联。         |\n| **仅限本地**      | CLI 在应用所在的同一台计算机上运行。       |\n| **无多租户**      | 无法从一个 CLI 实例为多个用户提供服务。     |\n| **需要 CLI 登录** | 用户必须先运行 `copilot` 并进行身份验证。 |\n\n## 后续步骤\n\n* 若要将应用寄送给其他用户，请参阅 [将捆绑 CLI 与 Copilot SDK 配合使用](/zh/copilot/how-tos/copilot-sdk/set-up-copilot-sdk/bundled-cli)。\n* 若要支持使用自己的 GitHub 帐户登录的多个用户，请参阅 [将 GitHub OAuth 与 Copilot SDK 配合使用](/zh/copilot/how-tos/copilot-sdk/set-up-copilot-sdk/github-oauth)。\n* 若要在服务器上运行 SDK，请参阅 [为后端服务设置 Copilot SDK](/zh/copilot/how-tos/copilot-sdk/set-up-copilot-sdk/backend-services)。\n* 有关第一条消息和安装，请参阅 [开始使用 Copilot SDK](/zh/copilot/how-tos/copilot-sdk/sdk-getting-started)。"}