惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
H
Help Net Security
Last Week in AI
Last Week in AI
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
B
Blog
C
Check Point Blog
T
Tailwind CSS Blog
云风的 BLOG
云风的 BLOG
D
Docker
Recent Announcements
Recent Announcements
Vercel News
Vercel News
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
月光博客
月光博客
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
The Register - Security
The Register - Security
V
Visual Studio Blog
F
Full Disclosure
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
Latest news
Latest news
PCI Perspectives
PCI Perspectives
Cisco Talos Blog
Cisco Talos Blog
博客园 - Franky
D
DataBreaches.Net
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
P
Palo Alto Networks Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
T
Tenable Blog
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy

肘子的 Swift 记事本 | Fatbobman's Blog

当每一次写入都有了新价格 -- 肘子的 Swift 周报 #144 当 Linux 成为“空气”:容器、Agent 与不再重要的“桌面之争” -- 肘子的 Swift 周报 #143 两个 SwiftUI 动画 Bug 排查小记 SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142 Swift 还让你 Excited 吗? -- 肘子的 Swift 周报 #141 从 Size Class 到可用空间,horizontalSizeClass 还可靠吗? WWDC 26:AI 帮你看完了,然后呢? -- 肘子的 Swift 周报 #140 WWDC 2026 初印象:符合预期,但更务实 -- 肘子的 Swift 周报 #139 Core Data + Observation:从属性级响应到心智解放 稳定 > 新功能 -- 肘子的 Swift 周报 #138 用自定义 Layout 化解 SwiftUI List 的行高与间距跳变 从社区路标到生态基石:Dave Verwer 的新篇章 -- 肘子的 Swift 周报 #137 消失的 WWDC 愿望单 -- 肘子的 Swift 周报 #136 CocoaPods 正在退场,SwiftPM 才刚到第二章 -- 肘子的 Swift 周报 #135 让 AI 从称手到称心 -- 肘子的 Swift 周报 #134 Swift 并发正被更广泛地接纳 -- 肘子的 Swift 周报 #133 从 OpenSwiftUI 到 DanceUI:换个方式 Dive SwiftUI -- 肘子的 Swift 周报 #132 被 Vibe 摧毁的版权壁垒,与开发者的新护城河 -- 肘子的 Swift 周报 #131 苹果的罕见妥协:当高危漏洞遇上“拒升”潮 -- 肘子的 Swift 周报 #130 一墙之隔,不同的时空 -- 肘子的 Swift 周报 #129 我的 App 审核被卡了? -- 肘子的 Swift 周报 #128 CDE:一次让 Core Data 更像现代 Swift 的尝试 50 岁的苹果和 51 岁的我 -- 肘子的 Swift 周报 #127 2026 年,为什么我仍在思考 Core Data Macbook Neo:苹果重回校园的起点 -- 肘子的 Swift 周报 #126 跨域传递 NSManagedObjectContext 为什么在 Swift 6.2 中不再报错?真正的变化不在编译器 macOS 录屏软件开发实录:从像素抓取到元数据重现 isolated(any) 与 #isolation:让 Swift 闭包自动继承隔离域 在 tvOS 上活下來:一個非典型播放器的工程實錄 告别“可移植汇编”:我已让 Swift 在 MCU 上运行七年 独立开发者的试炼:Zipic 从 0 到 1 的产品化之路 逃离 Mac App Store:如何从零构建独立应用的分发与售卖体系 为什么父视图无法修改子视图的 @State Partytown 实战:修复 GTM 自定义事件与 dataLayer 失效问题 Swift 6 编译加速:启用 Swift-Syntax 预构建 (Prebuilts) Swift 模块化:使用 package 关键字实现 Target 间安全共享 Monorepo 实战:解决 VSCode/Cursor 中 SwiftLint 配置失效问题 VSCode/Cursor 测试 Core Data:手动编译 xcdatamodeld 指南
Xcode 26.3 + Claude Agent:模型替换、MCP、Skill 与自适应配置
东坡肘子 · 2026-02-06 · via 肘子的 Swift 记事本 | Fatbobman's Blog

(更新于 )

出乎意料,Xcode 26.3 版本中苹果直接提供了对 Claude Code/Codex 的支持。自此,开发者终于可以在 Xcode 中优雅地使用原生 AI Agent 了。 这两天我针对新版本进行了一系列尝试,包括配置 MCP、以及编写自适应的 CLAUDE.md。本文将以 Claude Code 为例,分享一些文档之外的技巧。

🛠️ 硬核尝试:手动替换最新模型

Xcode 26.3 RC 自带的 claude 客户端版本为 2.1.14,对应模型 Opus 4.5。但此时此刻,Anthropic 其实已经发布了更强的 Opus 4.6 (v2.1.32)。

能不能让 Xcode 跑上最新模型?

我尝试将 ~/Library/Developer/Xcode/CodingAssistant/Agents/Versions/26.3 目录下的 claude 二进制文件,直接替换为 Anthropic 提供的最新 2.1.32 版本。

结果:在 Xcode 中将 Model 设置为 Opus 后,询问他是什么模型,会返回 4.6。考虑到客户端和模型版本通常是绑定的,这可以看作是一种“非官方升级”方式,让 Xcode 提前享受到 Opus 4.6 的能力。

🔌 为 Xcode 注入 MCP 支持

Xcode 默认会屏蔽开发者在系统全局配置的 MCP (Model Context Protocol)。如果你想让 Xcode 内置的 Agent 使用自定义工具(比如我常用的邮件处理工具),需要修改特定的配置文件。

配置文件路径~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/.claude

配置示例

"projects": {
    "/Users/yangxu/Development/DataNoteV3": {
      "mcpServers": {
        "mail": {
          "type": "stdio",
          "command": "/Users/yangxu/myenv/bin/python3",
          "args": ["/path/to/mail_mcp_server.py"],
          "env": { ... }
        }
      },
      "hasTrustDialogAccepted": true
    }
  }

配置后,在 Agent 面板输入 /context 即可验证 MCP 是否加载成功。

🧩 Skill 与 Command 的安装

Xcode 的 Claude Agent 会在以下路径查找扩展脚本:

Skill 查找路径:

  1. ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/skills
  2. /Library/Application Support/ClaudeCode/.claude/skills

Command 查找路径: ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/commands

将脚本文件放入对应目录后,重启 Xcode 即可生效。

⚠️ 注意

  • 自定义 Command 目前不会出现在 / 的自动补全列表中,但直接输入指令名称即可执行。
  • 查找已安装的 Skill 请使用 find-skill 指令(注意前面无需加 /)。

🔗 使用软连接同步配置

为了统一管理命令行环境与 Xcode 环境的配置,避免维护两份文件,推荐通过创建软连接(Symlink)的方式,将你现有的配置目录映射到 Xcode 的配置路径中:

# 示例:将本地标准配置的 commands 目录链接到 Xcode Agent 配置中
ln -s ~/.claude/commands ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/commands

这样,你在终端环境中对 Command 的更新,Xcode 中也能即时同步(重启后生效)。

环境变量与路径

当 Xcode 运行内置的 Claude 或 Codex ,它会创建一个受限的执行环境,该环境不会继承用户的 Shell 配置(如 .zshrc.bash_profile)。因此,按照常规方式配置 MCP(例如依赖系统默认 PATH 查找工具)可能会导致运行失败。

在设置 MCP 时,务必使用工具的绝对路径,并在配置中显式补全所需的环境变量(如 PATH)。

关于这一点的详细配置案例,推荐阅读 Erin Sparling 的文章:Getting ios-simulator-mcp Working with Xcode 26.3

🧠 进阶技巧:自适应的 Claude.md

由于我经常在 Xcode 内置 Agent命令行 Claude Code 之间切换,两者的环境差异(特别是编译方式)导致一套 Prompt 很难通用。我采用了一种“环境感知”的策略。

1. 环境自适应

在根目录 CLAUDE.md 中,通过检测环境变量 CLAUDE_CONFIG_DIR 来区分当前是在 Xcode 内部还是在终端:

## 🔍 环境自适应

本项目支持两种 Claude 开发环境:
- **Xcode 26.3+ Claude Agent SDK** - 使用 Xcode 内置 MCP 工具
- **Pure Claude Code** - 使用命令行 Claude Code

### 环境检测

通过检查环境变量 `CLAUDE_CONFIG_DIR` 判断当前环境:

-**包含 `Xcode/CodingAssistant`** → 使用 [CLAUDE-XCODE.md](CLAUDE-XCODE.md) 的配置
  - 示例: `~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig`
-**不包含或为其他路径** → 使用 [CLAUDE-PURE.md](CLAUDE-PURE.md) 的配置
  - 示例: `~/.config/claude` 或其他标准配置路径

2. 编译感知 (Context Awareness)

在 Xcode 环境下,SPM 的多 Target 结构往往让 AI 感到困惑。我在 CLAUDE-XCODE.md 中加入了 Scheme 检查机制:

## 🎯 上下文感知开发规则

### 1. 自动检测上下文

当工作在某个 SPM 模块时:
1. 检查当前文件主要属于哪个模块 (如 `AppShared`, `DataNoteCore`)
2. 检查是否已切换到对应的 Scheme
3. 如未切换,提醒开发者切换到对应 Scheme

**提示模板**:
```
⚠️ 当前上下文主要涉及 [PackageName] 模块
建议切换到 Scheme: [PackageName] 或 [PackageName]Tests
```

### 2. 检查模块级 CLAUDE.md

切换 Scheme 后,检查对应目录是否有模块级配置:
- **文件系统路径**: `Modules/[PackageName]/CLAUDE.md`
- **Xcode 项目路径**: `DataNoteV3/Packages/[PackageName]/CLAUDE.md`
- 如果存在,应结合项目级和模块级指令工作

### 3. 优先使用对应 SPM 的 Scheme

- ✅ 在 `AppShared` 模块开发 → 使用 `AppShared` Scheme
- ✅ 在 `DataNoteCore` 模块开发 → 使用 `DataNoteCore` Scheme
- ✅ 修改持久化层代码 → 使用 `DataNotePersistent` Scheme

写在最后

Xcode 26.3 的这次更新无论是效果还是方向都令人满意。如果能进一步提高代码补全的能力,Xcode 很有希望在 AI 时代重新成为 Swift 开发者的首选 IDE。

未知的惊喜,往往带来更大的快乐。

订阅 Fatbobman 周报

每周精选 Swift 与 SwiftUI 开发技巧,加入众多开发者的行列。

立即订阅