跳过正文
  1. 文章/

Xcode 26如何使用 Agentic Coding 与 GitHub Copilot

文森的科技小站
作者
文森的科技小站
文森的科技小站
目录

Xcode 26如何使用 Agentic Coding 与 GitHub Copilot
#

Header image

作者:Bastián Véliz Vega · 7 分钟阅读 · 2026-02-08

快速导览
#

本文是为那些已经有 GitHub Copilot 并想在 Xcode 26.3 中直接使用 Agentic Coding 功能的开发者准备的实作指南。虽然存在官方插件(https://github.com/github/CopilotForXcode),但本文介绍如何在不借助中间插件的情况下,直接把 Copilot 的模型通过本地代理暴露给 Xcode 使用。


安装前提
#

  • macOS Tahoe 26.2 或更高
  • Homebrew
  • Docker(Docker Desktop 或 OrbStack)
  • Xcode 26.3
  • 在 Xcode 中已安装 Codex 与 Claude Agent
  • Visual Studio Code(用于查看可用模型)

可用模型
#

可用模型取决于你 GitHub Copilot 帐号类型(个人或企业)及你在 Copilot 设置中启用的模型。以下为作者示例中可用的模型列表:

  • gemini-2.5-pro
  • gemini-3-flash-preview
  • gemini-3-pro-preview
  • gpt-4.1
  • gpt-4o
  • gpt-5
  • gpt-5-mini
  • gpt-5-codex
  • gpt-5.1
  • gpt-5.1-codex
  • gpt-5.1-codex-max
  • gpt-5.1-codex-mini
  • gpt-5.2
  • gpt-5.2-codex
  • grok-code-fast-1
  • claude-sonnet-4.5
  • claude-opus-4.5
  • claude-opus-4.6
  • claude-haiku-4.5

LiteLLM 代理简介
#

LiteLLM proxy 可以把像 GitHub Copilot 这样的服务,转换并通过行业标准的端点(例如 OpenAI 的 /v1/chat/completions、/v1/responses,以及 Anthropic 的 /v1/messages)对外提供模型接口。我们将在本地运行 LiteLLM 容器,将 GitHub Copilot 的模型通过本地 endpoint 暴露给 Xcode。

官方文档(参考):https://docs.litellm.ai/docs/simple_proxy

代理启动后,常用接口示例可见: https://litellm-api.up.railway.app/#/chat/completions

config.yaml(示例)
#

下面是作者使用的 config.yaml 示例(定义了代理对外暴露的模型及映射到 GitHub Copilot 的实际模型名):

litellm_settings:
  drop_params: true
  set_verbose: true

x-copilot-headers: &copilot_headers
  extra_headers:
    editor-version: "vscode/1.85.1"
    editor-plugin-version: "copilot/1.155.0"
    user-agent: "GithubCopilot/1.155.0"

model_list:
  - model_name: gemini-2.5-pro
    litellm_params:
      model: github_copilot/gemini-2.5-pro
    <<: *copilot_headers

  - model_name: gemini-3-flash-preview
    litellm_params:
      model: github_copilot/gemini-3-flash-preview
    <<: *copilot_headers

  - model_name: gemini-3-pro-preview
    litellm_params:
      model: github_copilot/gemini-3-pro-preview
    <<: *copilot_headers

  - model_name: gpt-4.1
    litellm_params:
      model: github_copilot/gpt-4.1
    <<: *copilot_headers

  - model_name: gpt-4o
    litellm_params:
      model: github_copilot/gpt-4o
    <<: *copilot_headers

  - model_name: gpt-5
    litellm_params:
      model: github_copilot/gpt-5
    <<: *copilot_headers

  - model_name: gpt-5-mini
    litellm_params:
      model: github_copilot/gpt-5-mini
    <<: *copilot_headers

  - model_name: gpt-5-codex
    litellm_params:
      model: github_copilot/gpt-5-codex
    <<: *copilot_headers

  - model_name: gpt-5.1
    litellm_params:
      model: github_copilot/gpt-5.1
    <<: *copilot_headers

  - model_name: gpt-5.1-codex
    litellm_params:
      model: github_copilot/gpt-5.1-codex
    <<: *copilot_headers

  - model_name: gpt-5.1-codex-max
    litellm_params:
      model: github_copilot/gpt-5.1-codex-max
    <<: *copilot_headers

  - model_name: gpt-5.1-codex-mini
    litellm_params:
      model: github_copilot/gpt-5.1-codex-mini
    <<: *copilot_headers

  - model_name: gpt-5.2
    litellm_params:
      model: github_copilot/gpt-5.2
    <<: *copilot_headers

  - model_name: gpt-5.2-codex
    litellm_params:
      model: github_copilot/gpt-5.2-codex
    <<: *copilot_headers

  - model_name: grok-code-fast-1
    litellm_params:
      model: github_copilot/grok-code-fast-1
    <<: *copilot_headers

  - model_name: claude-sonnet-4.5
    litellm_params:
      model: github_copilot/claude-sonnet-4.5
    <<: *copilot_headers

  - model_name: claude-opus-4.5
    litellm_params:
      model: github_copilot/claude-opus-4.5
    <<: *copilot_headers

  - model_name: claude-opus-4.6
    litellm_params:
      model: github_copilot/claude-opus-4.6
    <<: *copilot_headers

  - model_name: claude-haiku-4.5
    litellm_params:
      model: github_copilot/claude-haiku-4.5
    <<: *copilot_headers

  # Claude code models
  - model_name: claude-sonnet-4-5-20250929
    litellm_params:
      model: github_copilot/claude-sonnet-4.5
    <<: *copilot_headers

  - model_name: claude-opus-4-5-20251101
    litellm_params:
      model: github_copilot/claude-opus-4.5
    <<: *copilot_headers

  - model_name: claude-haiku-4-5-20251001
    litellm_params:
      model: github_copilot/claude-haiku-4.5
    <<: *copilot_headers

# End of Claude code models

说明:model_name 是代理对外显示的名称,litellm_params.model 指向实际的 GitHub Copilot 模型(前缀为 github_copilot/)。对于 Claude 模型,建议使用与 Claude Agent 一致的命名以便兼容。

启动容器(run-docker.sh
#

作者给出的启动脚本如下,将在当前目录创建 github_copilot 目录用于存放认证信息,并把 config.yaml 挂载到容器中:

#!/bin/bash
set -euo pipefail
mkdir -p "$(pwd)/github_copilot"
touch "$(pwd)/github_copilot/api-key.json"

docker run \\
  -e GITHUB_COPILOT_TOKEN_DIR="/app/github_copilot" \\
  -e GITHUB_COPILOT_API_KEY_FILE="api-key.json" \\
  -v "$(pwd)/github_copilot:/app/github_copilot" \\
  -v "$(pwd)/config.yaml:/app/config.yaml" \\
  -p 4000:4000 \\
  ghcr.io/berriai/litellm:main-stable \\
  --config /app/config.yaml --detailed_debug

执行:

chmod +x run-docker.sh ./run-docker.sh

首次运行会要求进行 GitHub 设备登录授权(容器日志中会显示类似 “Please visit https://github.com/login/device and enter code ABCD-1234” 的提示),完成授权并允许 Copilot 插件后,容器会把凭据写入 github_copilot 文件夹,通常会生成:

  • access_token(访问令牌)
  • api-key.json(代理使用的 API key,LiteLLM 会负责续期)

代理启动后访问地址: http://localhost:4000


模型与端点兼容性
#

  • Claude Agent:要求模型兼容 Anthropic 的 /v1/messages API;不兼容则会失败。
  • Codex(Xcode): Xcode 目前默认仅支持 OpenAI 的 /v1/chat/completions(不支持 /v1/responses)。若模型仅支持新版 /v1/responses,则在 Xcode 中会失败,这解释了为何 Xcode 下载的 Codex 版本看起来很旧。

作者对所有模型与三类端点(/v1/chat/completions、/v1/responses、/v1/messages)做了自动化测试,得到了兼容性表,结果示意图如下:

兼容性表

在选择用于 Claude Agent 或 Codex 的模型时,请参考此兼容性测试结果。


在 Xcode 中配置 Claude Agent
#

  1. 在 Xcode 的 Claude Agent 插件界面填写 Anthropic API Key 时,可以输入任意字符串(代理会覆盖真正的请求地址并使用本地代理),示例画面中使用了随机值。
  2. 编辑本地文件(若不存在则创建):

路径:

/Users/<you>/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/.claude.json

示例内容:

{
  "env": {
    "ANTHROPIC_BASE_URL": "<http://localhost:4000>",
    "ANTHROPIC_AUTH_TOKEN": "dummy-token"
  }
}

此配置会让 Claude Agent 将请求发到本地的 LiteLLM 代理(http://localhost:4000)。

  1. 如果要使用非 Anthropic 命名的模型(例如 gemini-3-pro-preview),还可以在:
/Users/<you>/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/settings.json

写入:

{
  "model": "gemini-3-pro-preview"
}

然后在 Xcode 的 Claude Agent 设置中选择 “Default”。

更新(2026-02-27):你也可以直接在 .claude.json 中设置 ANTHROPIC_MODEL:

{
  "env": {
    "ANTHROPIC_MODEL": "gemini-3-pro-preview"
  }
}

在 Xcode 中配置 Codex
#

Codex 的处理方式类似:在 Xcode 的 Codex UI 中填写任意 key(不需要真实),然后通过配置文件让 Codex 走代理。

编辑文件:

/Users/<you>/Library/Developer/Xcode/CodingAssistant/codex/config.toml

示例:

model = "gpt-5.2" # 或任意兼容模型
oss_provider = "proxy"
model_provider = "proxy"

[model_providers.proxy]
name = "Copilot proxy"
base_url = "<http://localhost:4000/v1>"

在 Xcode 的 Codex 设置中请选择 “Default”,让配置文件生效。注意:并非所有列出的模型在 Xcode 中都能稳定工作(例如部分 gpt-5.1-codex-max 在作者测试中并不稳定),所以以兼容性测试为准。


常见问题与提示
#

  • 为什么不直接使用官方插件?
    • 作者认为直接在 Xcode 内使用模型(通过本地代理)更灵活,且避免某些插件版本或平台限制。
  • 必须运行容器吗?
    • 当前方法需要在本地或远端运行 LiteLLM 代理(容器)来桥接 Copilot 与 Xcode。
  • 安全和费用
    • 代理会使用你的 GitHub Copilot 订阅的模型,使用成本与 Copilot 帐号相关。请妥善保管生成的 access_token 与 api-key.json,不要泄露。

结论
#

通过 LiteLLM 代理,你可以在 Xcode 26.3 中直接调用 GitHub Copilot 提供的多种模型来驱动 Claude Agent 与 Codex,从而实现 Agentic Coding 工作流。虽然需要先运行容器并完成一次 GitHub 设备授权,但这是在现阶段实现 Xcode 内部使用 Copilot 模型的有效方法。

参考阅读
#

关于 MCP(Model Control Plane)相关的服务器配置与 Xcode 限制,建议参阅 XcodeBuildMCP 文档:

https://github.com/cameroncooke/XcodeBuildMCP#mcp-server-installation

作者的示例仓库:

https://github.com/bastianX6/litellm-example


原文作者信息:Bastián Véliz Vega


本网站部分链接可能为联盟推广链接(Affiliate Links)。如果你通过这些链接购买产品或服务,站长可能获得佣金,但你无需支付额外费用。

📖 阅读量: