前言¶
如果你在 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 做三件事:
- 掃描
/Applications中提供mcpbridge的 Xcode 安裝(僅 Xcode 26+),多版本時交互選擇; - 把
appleagent preset 安裝到~/.dsh/.agent-presets/apple/(已有副本會先備份); - 在本機生成 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 官方無從屬關係。)