DSH Xcode:把 Apple 官方 Xcode MCP 桥接进 DeepSeek Harness

前言

在 macOS 上做 iOS / macOS 开发时,常见做法是让编码智能体通过 xcodebuild 冷启动编译,或在对话里粘贴 Issue Navigator 的报错。自 Xcode 26.3 起,Apple 提供官方 Model Context Protocol 桥接(xcrun mcpbridge)以及可通过 xcrun agent skills export 导出的内置 Apple Skills。直接把原始 mcpbridge 挂进通用编码智能体,往往会遇到 structuredContent 与 JSON 文本不一致、Xcode 未开启外部智能体访问时进程退出、以及 RenderPreview 等大体积 base64 输出撑爆上下文等问题。下面介绍社区维护的 DSH 插件 @zseven-w/dsh-xcode(仓库 zseven-w/dsh-xcode),它把官方桥接封装为零依赖的 DeepSeek Harness 插件,并与同作者的 dsh-ios 做可选配对。

这是什么

DSH Xcode(npm 包名 @zseven-w/dsh-xcode,当前发布版本 0.1.0-rc.4)由维护者 ZSeven-W 发布,分类为 客户端 类 DSH 插件。插件在 DSH 对话中注册 8 个智能体工具,对接 xcrun mcpbridge 与 Apple 官方 SKILL.md,并提供右侧边栏 Xcode Workbench 面板。README 标明在 DSH 0.2.1-rc.5 上做过测试;许可证为 MIT。

核心能力

诊断、预览与构建测试

  • 单文件诊断(< 1 s):xcode_diagnostics 在传入 filePath 时调用 XcodeRefreshCodeIssuesInFile,依托 Xcode 活跃编译图做 Swift/ObjC 类型检查,无需每次冷启动 xcodebuild。
  • SwiftUI #Preview 快照:xcode_render_preview 驱动 Xcode 的 RenderPreview,支持 .xcodeproj、.xcworkspace 与 Swift Package;PNG 写入 .dsh-xcode/previews/,多模态模型会话中可附带图片。
  • 温构建与测试:xcode_build_test 复用 DerivedData 构建图,覆盖 build、build_log、list_tests、run_all_tests、run_some_tests(XCTest 与 Swift Testing)。

文档、Skills 与桥接兼容层

  • 本地 Apple 文档检索:xcode_search_docs 使用 DocumentationSearch,可搜索内置 Apple Developer Documentation 与 WWDC 文稿;可选 frameworks 参数限定框架。
  • 官方 Skills 同步:xcode_sync_skills 执行 xcrun agent skills export,解析当前 Xcode 版本自带的 SKILL.md,缓存于 ~/.cache/dsh-xcode/skills/,并注册到 DSH 会话的 ctx.skills。
  • Xcode 26 适配:自动从 JSON 文本补全缺失的 structuredContent、在多窗口间解析 tabIdentifier,并在摘要中剥离过大的 base64 预览串。
  • 逃生舱:xcode_call_tool 可 list 或 call 任意原始 mcpbridge 工具,便于跟进 Xcode 新版本工具而无需等待插件发版。

Workbench 与 dsh-ios 配对

右侧 Xcode Workbench 展示连接状态、工作区窗口、tabIdentifier、诊断列表、构建/测试摘要、预览图库,以及 dsh-ios 对等设备状态。与 @zseven-w/dsh-ios 通过 Symbol.for('zseven.dsh.apple.peer.v1') 做零安装耦合的发现:dsh-xcode 侧重 IDE 侧编译智能,dsh-ios 负责模拟器与 USB 真机的实时画面与交互。

八个工具一览

各工具在主机上默认注册;省略 tabIdentifier 时会从当前活跃工作区自动解析。非 macOS 或 Xcode 未运行时,会返回可操作的设置说明。

工具 作用概要
xcode_status 检查 xcode-select、Xcode 版本、mcpbridge/agent 能力、运行中 Xcode PID、窗口与 Skills、dsh-ios 对端状态
xcode_open_project 用 open -a Xcode 打开工程或 Package.swift,轮询直至 mcpbridge 连通并拿到 tabIdentifier
xcode_diagnostics 单文件或全工作区 Issue Navigator 诊断,支持 severity、pattern 过滤
xcode_build_test 构建、日志、列出/运行测试
xcode_render_preview 渲染文件中指定索引的 #Preview / PreviewProvider
xcode_search_docs 语义搜索 Apple 文档与 WWDC 内容
xcode_sync_skills 导出并注册 Apple 官方 Skills
xcode_call_tool 列出或调用原始 MCP 工具

安装与启用

DSH 侧安装命令以仓库 INSTALL.md 为准:

dsh plugin add @zseven-w/dsh-xcode

若需要模拟器或真机画面与 UI 联动,可另行安装配对插件(可选):

dsh plugin add @zseven-w/dsh-ios

环境前提(来自官方安装文档与 package.json):

  1. macOS,Xcode 26.3+(需先打开工程,并在 Xcode → Settings → Intelligence → Model Context Protocol 中开启 Allow External Agents)。
  2. Node.js:package.json 要求 >=24.11.0。

使用前请确认本机 DSH 版本接近 README 所述测试版本,并自行阅读仓库源码与 MIT 许可证;插件以当前 dsh 进程权限运行,安装前宜检查依赖与网络行为。

典型用法

下面步骤可在 DSH 对话中由智能体调用对应工具完成。

  1. 确认桥接状态:调用 xcode_status(默认 connect: true),确认 mcpbridge 已连接、窗口 tabIdentifier 可用。
  2. 打开工程(若 Xcode 尚未打开目标):xcode_open_project,可传 projectPath,默认等待 waitSeconds: 20。
  3. 改代码后快速验错:对刚编辑的文件调用 xcode_diagnostics,传入 filePath 做单文件诊断。
  4. 看 SwiftUI 预览:xcode_render_preview,必填 sourceFilePath,默认 previewDefinitionIndexInFile: 0。
  5. 构建或跑测试:xcode_build_test,action 取 build、run_all_tests 等;部分测试用 run_some_tests 并传 tests JSON 数组。
  6. 查 API:xcode_search_docs,query 必填,例如配合 frameworks: "SwiftUI,Observation"。
  7. 同步 Apple Skills:在升级 Xcode 后执行 xcode_sync_skills,再让智能体使用新注册的 Skills。
  8. Workbench:在工具结果行使用 Open Workbench,或从右侧边栏 + 启动 Xcode Workbench 查看诊断、构建摘要与预览图库。

适用场景与注意

适合:已在 macOS 使用 Xcode 26.3+ 的 Swift/SwiftUI 开发者,希望在 DeepSeek Harness 对话里直接读编译器状态、渲染 #Preview、在温构建图上跑测试,并可选地与 dsh-ios 衔接真机/模拟器操作。

注意:

  • 插件依赖 Xcode 保持打开且已允许外部智能体;同时运行 Xcode.app 与 Xcode-beta.app 时需注意 PID 与窗口路由。
  • 社区目录 skillhub.cn 插件页 与 GitHub 仓库独立维护,与 DeepSeek / 幻方无官方从属关系;安装与授权决策应以你本地审查的源码为准。
  • 当前 GitHub 星标为 0,属早期候选发布(0.1.0-rc.4),升级 DSH 或 Xcode 后建议先跑 xcode_status 再投入日常流程。

结尾

经过上面的步骤,@zseven-w/dsh-xcode 把 Apple 官方 xcrun mcpbridge 与 Skills 收敛为 DSH 内可用的 8 个工具与 Workbench 面板,减少冷 xcodebuild 与上下文膨胀带来的摩擦。更多细节见 GitHub 仓库 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye