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+(含 mcpbridge 與 xcrun 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.app 和 Xcode-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_DIR → xcrun → 最新的 /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 官方無從屬關係。)

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

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

小夜