dsh-apple-mode:用 agent preset 把 Xcode AI 工具栈接入 DSH 会话

前言

如果你在 macOS 上用 DeepSeek Harness(dsh)写 Swift,大概率遇到过这类尴尬:模型能写出 SwiftUI 代码,却碰不到 Xcode 工程本身——新建 target、改构建设置、切换 scheme 和运行目标、读诊断信息、编辑 String Catalog,这些活儿都得你手动回 Xcode 里做。

dsh 的思路是一切皆插件,而 Xcode 26 起 Apple 官方提供了 mcpbridge,让外部工具能直接操作打开的工程。本文介绍 jihongboo/dsh-apple-mode,一个把这套能力装进 DSH 会话的 agent preset + 安装器。

这是什么

dsh-apple-mode 的定位是:DeepSeek Harness 的 Xcode AI integration mode——一个 agent preset 加安装脚本,为选用的 DSH 会话提供完整的 Xcode AI 工具栈。仓库由 jihongboo 维护,许可证为 MIT。

它把三层能力映射到 DSH 的三个机制上:

能力 DSH 机制
执行 26 个 mcp__xcode__* 工具 dsh-mcp-client(挂载在 preset 内)
知识 10 个 Apple 平台 skills ~/.agents/skills/(全局,按需加载)
行为 Xcode Intelligence 风格 persona agent preset(本仓库)

核心功能

26 个 Xcode MCP 工具

通过 Apple 官方 mcpbridge 提供,全部在 mcp__xcode__* 命名空间下,按功能分组:

分组 工具
Project I/O XcodeRead XcodeWrite XcodeUpdate XcodeMV XcodeRM XcodeMakeDir
Search XcodeGlob XcodeGrep XcodeLS
Targets & settings XcodeNewTarget XcodeListTemplates XcodeListTargets UpdateTargetBuildSetting UpdateFileCompilerFlags
Scheme / destination / test plans XcodeListSchemes XcodeSwitchScheme XcodeListRunDestinations XcodeSwitchRunDestination XcodeListTestPlans XcodeSwitchTestPlan
Diagnostics XcodeListNavigatorIssues XcodeRefreshCodeIssuesInFile
Localization StringCatalogRead StringCatalogEdit
Windows XcodeListWindows XcodeGetCurrentFile

Xcode Intelligence 风格 persona

preset 内置的 persona 改编自 IDEIntelligenceChat 提示模板,特点是 Swift 优先、工具辅助,并区分「解释」与「修改」两类请求。

10 个 Apple 平台 skills

安装时通过 xcrun agent skills export 在你本机的 Xcode 上生成,再合并到 ~/.agents/skills/(DSH 的 skill 根目录,热加载):

swiftui-specialist · swiftui-whats-new-27 · app-intents-specialist · app-intents-whats-new-27 · audit-xcode-security-settings · adopt-c-bounds-safety · uikit-app-modernization · modernize-tests · device-interaction · building-document-based-swiftui-applications

skills 本身是 Apple 作者的内容,在本机生成而不是仓库内置,就是为了避免再分发 Apple 的内容——仓库里只包含作者自己的代码、配置和文档。

为什么是 preset 而不是全局挂载

如果把 MCP server 全局挂到 profile,约 26 个大工具 schema(约 6k+ tokens/请求)会被注入每个会话,即使那个会话根本不碰 Xcode。挂载在 preset 内则只在选用 Apple Mode 的会话产生这份开销,其他会话保持轻量。

安装与启用

前置要求

  • macOS
  • DeepSeek Harness(developer preview,自动化建议固定确切的 dsh 版本):npx @deepseek-ai/dsh web
  • Xcode 26+(含 mcpbridgexcrun agent skills export

主安装路径

git clone https://github.com/jihongboo/dsh-apple-mode.git
cd dsh-apple-mode
./install.sh

install.sh 做三件事:

  1. 扫描 /Applications 中提供 mcpbridge 的 Xcode 安装(仅 Xcode 26+),多版本时交互选择;
  2. apple agent preset 安装到 ~/.dsh/.agent-presets/apple/(已有副本会先备份);
  3. 在本机生成 10 个 skills 并合并到 ~/.agents/skills/

选择 Xcode

机器上装了多个 Xcode(如 Xcode.appXcode-beta.app)时,安装器会列出候选:

Found Xcode installs providing mcpbridge:
  1) /Applications/Xcode-beta.app/Contents/Developer  (xcode-select default)
  2) /Applications/Xcode.app/Contents/Developer
Choose (1-2, default 1):
  • 默认使用 xcode-select 所选版本,preset 写入 command: xcrun mcpbridge,跟随未来的 xcode-select 变更;
  • 选择其他版本,则会把对应 mcpbridge 的绝对路径烘焙进 preset。

非交互安装与候选列表:

./install.sh --xcode /Applications/Xcode.app
./install.sh --list-xcodes

如果想在运行时切换、不重装,用:

./install.sh --runtime-selectable

之后启动 dsh 时设置环境变量即可切换版本,解析顺序为 DSH_XCODE_DEVELOPER_DIRxcrun → 最新的 /Applications/Xcode*.app

DSH_XCODE_DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer npx @deepseek-ai/dsh web

要驱动某个指定的运行中 Xcode 实例,在 preset 的 mcp-xcode 行加:

env: { MCP_XCODE_PID: '<pid>' }

启用

1、重启 dsh 或新建会话——preset 只能在空白会话创建时选择。

2、创建会话时选择 Apple Mode preset。

3、使用 mcp__xcode__* 工具前注意两点:Xcode 必须正在运行,且已打开目标项目/workspace;首次连接时 Xcode 会弹 MCP 访问对话框,点 Allow(允许),否则工具调用会被拒绝。

典型用法

全局 bundle(替代路径):如果想让 MCP server 进入 profile 的每个会话,可以改走插件方式安装 cordis.patch.yml 全局 bundle:

dsh plugin --profile web add "github:jihongboo/dsh-apple-mode"

注意两条安装路径只能选一条:两者都注册 serverName: xcode,重复的 server 名称会导致后加载实例在 load 时失败。全局 bundle 的代价是每个会话都要承担约 6k+ tokens 的 schema 注入。

日常使用:会话内让模型直接操作打开的工程,比如读改文件、新建 target、更新构建设置、切换 scheme 和运行目标、刷新代码诊断、编辑 String Catalog。构建、运行、测试仍在终端进行(xcodebuild,可接 xcsift 获得结构化输出);MCP 工具集覆盖的是项目手术、构建设置、诊断、运行目标和本地化这些「工程内操作」。

后续调整

  • 更换 Xcode:重跑 ./install.sh(重新选择),或改 ~/.dsh/.agent-presets/apple/agent.cordis.yml 里的 mcp-xcode 行,或用运行时环境变量;
  • 修改 persona:编辑同一文件中的 persona 行;
  • Xcode 更新后:重跑 ./install.sh 同步 skills(skills 会被替换,preset 会先备份)。

适用场景与注意事项

适合在 macOS 上用 DSH 做 Apple 平台开发、且希望 agent 直接操作 Xcode 工程的人。由于工具调用依赖 Xcode 运行中并打开项目,它不适合无头或脱离 Xcode 的场景。

几个注意点:

  • dsh 处于 developer preview,自动化流程建议固定确切的 dsh 版本;
  • preset 挂载与全局 bundle 二选一,不要同时装;
  • 创建会话时才可选 preset,老会话需要重启或新开;
  • 安全方面,插件以当前 dsh 进程的权限运行,安装前建议先检查仓库源码与许可证(本仓库为 MIT)。

结尾

dsh-apple-mode 值得关注的地方在于它对挂载成本的取舍:工具、技能、persona 三层能力用 preset 收拢,只有选用的会话付出代价,同时靠 xcrun agent skills export 规避了 Apple 内容的再分发问题。如果你同时用 dsh 和 Xcode 26,可以直接试用。

  • 插件目录页:https://www.skillhub.cn/plugins/jihongboo/dsh-apple-mode
  • GitHub 仓库:https://github.com/jihongboo/dsh-apple-mode

(目录页为社区维护的独立站点,与 DeepSeek 官方无从属关系。)

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

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

小夜