DeepSeek Harness 插件

jihongboo/dsh-apple-mode

Star 数 ★ 3 分类 工具与能力 收录于 2026-08-14

DSH 的 Xcode AI 集成:26 个 Xcode MCP 工具(mcpbridge)+ Apple 平台技能 + Xcode Intelligence 风格 persona(agent preset 或全局 bundle)。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

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

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

English · 简体中文

DeepSeek Harness(dsh)的 Xcode AI 集成模式 —— 一个 agent preset(模式)+ 安装脚本,让 DSH 会话获得完整的 Xcode AI 能力栈:

  • 26 个 Xcode MCP 工具(mcp__xcode__*),通过 Apple 官方 mcpbridge 桥接
  • Xcode Intelligence 风格的 persona(Swift 优先、工具辅助、解释/改动分流),改编自 IDEIntelligenceChat 提示词模板
  • 10 个 Apple 平台技能(SwiftUI、App Intents、安全加固、bounds safety 等),安装时从你自己的 Xcode 本地生成

📌 dsh-plugin 话题仓库。DeepSeek Harness 处于开发者预览阶段,自动化场景请锁定具体版本。

为什么用"模式(preset)"而不是全局接入 MCP?

三样能力在 DSH 里对应三个不同机制:

层 能力 DSH 机制
执行 26 个 mcp__xcode__* 工具 dsh-mcp-client(挂在 preset 内)
知识 10 个 Apple 技能 dsh-skill-filesystem(全局、懒加载)
行为 Xcode Intelligence persona agent preset(本仓库)

若把 MCP 全局接入,26 个大工具 schema(约 6k+ tokens/请求)会常驻每一个会话。挂在 preset 内则只有选择该模式的会话背负成本——建会话时选 Apple Mode即获得全套能力,其他会话保持轻量。

环境要求

  • macOS
  • DeepSeek Harness 0.2.0+(插件安装路径;桌面端即 0.2.x)。DSH 0.1.x 请用 install.sh 的旧版磁盘 preset——见版本兼容性。
  • Xcode 26+(含 mcpbridge 与 xcrun agent skills export)。使用 MCP 工具时,需要保证 Xcode 已启动并打开了相应的项目,并且在 Xcode 弹出的 MCP 接入对话框中点击允许(见使用方法)。

安装

DSH 0.2.0+(桌面端 / 当前版本)——推荐

用插件管理器安装插件,其 bundle patch 会声明 Apple Mode agent preset:

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

追加 tag 可锁定已发布版本——推荐这么做,因为不带 tag 的安装会跟随默认分支:

dsh plugin --profile web add "github:jihongboo/dsh-apple-mode#v1.1.1"

(桌面端:设置 → 插件 → 从 GitHub 安装。)重启 DSH,新建会话时选择 Apple Mode。

关于插件管理器的 pnpm 警告:本包是纯配置包——没有 scripts、没有依赖、没有构建步骤(见 package.json)。如果市场页提示"pnpm ≥ 10 拒绝执行 git 依赖的 prepare 脚本,需要在 pnpm-workspace.yaml 里写 allowBuilds",可以放心跳过:本包没有任何需要构建或执行的代码,授权只会无谓地扩大授权面。发布到 npm(见 docs/publishing.md)后该警告会彻底消失。

然后本地生成 Apple 技能——插件刻意不重新分发它们:

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

DSH 0.1.x——旧版磁盘 preset

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

install.sh 会做三件事:

  1. 检测你机器上的 Xcode,并让你选择由哪个提供 mcpbridge(见下文)。
  2. 安装磁盘 preset → ~/.dsh/.agent-presets/apple/(已有副本自动备份)。
  3. 通过 xcrun agent skills export 在你机器上本地生成 10 个 Xcode 技能到 ~/.agents/skills/。

为什么不直接打包技能? 技能是 Apple 官方内容。安装时从你自己的 Xcode 生成可以避免重新分发 Apple 内容——仓库只包含我们自己的代码、配置和文档。

版本兼容性

DSH 0.2 重做了 agent preset:preset 现在是 bundle patch 里声明的 @deepseek-ai/dsh-agent-preset 行,注册表不再扫描目录。

DSH preset 机制 如何获得 Apple Mode
0.2.0+(桌面端) bundle patch 声明 @deepseek-ai/dsh-agent-preset 行 dsh plugin --profile web add "github:jihongboo/dsh-apple-mode"
0.1.x(旧版 npx/brew) ~/.dsh/.agent-presets/<id>/ 磁盘目录 ./install.sh

技能在两个版本上都从 ~/.agents/skills 发现,所以 ./install.sh --skills-only 通用。

选择 Xcode(多版本共存)

如果装了多个 Xcode(如 Xcode.app、Xcode-beta.app、Xcode-26.2.app),mcpbridge 位于各自的 Contents/Developer/usr/bin——且只有 Xcode 26+ 才有。

DSH 0.2.0+:preset 的 MCP 行执行 xcrun mcpbridge,Xcode 由 xcode-select 决定:

sudo xcode-select -s /Applications/Xcode-26.2.app/Contents/Developer   # 全局切换
DEVELOPER_DIR=/Applications/Xcode-beta.app/Contents/Developer dsh web  # 或单次启动指定

要驱动某个正在运行的特定 Xcode 实例,在 preset 的 mcp-xcode 行加 env: { MCP_XCODE_PID: '<pid>' }(改本仓库的 cordis.patch.yml,或在 profile patch 里覆盖 preset-apple 行)。

DSH 0.1.x:install.sh 会扫描 /Applications 下所有包含 mcpbridge 的安装并提示你选择:

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 选中的 Xcode → preset 使用 command: xcrun mcpbridge(可移植,跟随 xcode-select 变化)。
  • 选择其他 → 所选 …/Contents/Developer/usr/bin/mcpbridge 以绝对路径写进安装后的 preset。
  • 非交互:./install.sh --xcode /Applications/Xcode.app(或 --xcode …/Contents/Developer);./install.sh --list-xcodes 列出候选。
  • 运行时切换、无需重装:./install.sh --runtime-selectable 安装 bin/mcpbridge 作为命令;启动 dsh 时设置 DSH_XCODE_DEVELOPER_DIR=/Applications/…/Contents/Developer 即可切换。(解析顺序:DSH_XCODE_DEVELOPER_DIR → xcrun → 最新的 /Applications/Xcode*.app。)

之后想改:重跑 ./install.sh、编辑 ~/.dsh/.agent-presets/apple/agent.cordis.yml 的 mcp-xcode 行,或用上面的运行时环境变量。

备选:全局接入 MCP(所有会话)

preset 把约 26 个工具 schema 限定在 Apple Mode 会话内。若希望所有会话都能用 Xcode MCP 工具,在你的 profile patch(~/.dsh/profiles/<profile>/cordis.patch.yml)里插入客户端行:

- insert:
    - id: mcp-xcode
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: xcode
        transport: stdio
        command: xcrun
        args: ['mcpbridge']
        toolCallTimeoutMs: 120000

两种方式二选一:两个存活的 serverName: xcode 实例会冲突,后加载的会失败。详见 docs/global-mcp.md。

使用方法

  1. 重启 dsh(或直接新建会话——preset 只能在空白会话选择)。
  2. 建会话时选择 Apple Mode。
  3. 该会话即可使用:
    • mcp__xcode__* 工具——直接操作打开的 Xcode 工作区:XcodeRead/Write/Update/MV/RM、XcodeGlob/Grep/LS、UpdateTargetBuildSetting/UpdateFileCompilerFlags、XcodeListNavigatorIssues、scheme/运行目标/测试计划切换、XcodeNewTarget、StringCatalogRead/Edit 等
    • 全部 Apple 平台技能(按需懒加载)
    • Apple 优先、工具辅助的工作方式

使用 mcp__xcode__* 工具之前:

  1. 需要保证 Xcode 已启动,并且在其中打开了要操作的项目/工作区。
  2. 首次建立连接时,Xcode 会弹出 MCP 接入对话框——请点击允许。在点击允许之前,工具调用会被拒绝。

构建/运行/测试仍在终端进行(xcodebuild,建议管道到 xcsift 获得结构化输出);MCP 工具集负责工程手术、构建设置、诊断、运行目标与本地化。

内容清单

MCP 工具(26 个,命名空间 mcp__xcode__*)

分组 工具
工程读写 XcodeRead XcodeWrite XcodeUpdate XcodeMV XcodeRM XcodeMakeDir
检索 XcodeGlob XcodeGrep XcodeLS
目标与设置 XcodeNewTarget XcodeListTemplates XcodeListTargets UpdateTargetBuildSetting UpdateFileCompilerFlags
Scheme/运行/测试 XcodeListSchemes XcodeSwitchScheme XcodeListRunDestinations XcodeSwitchRunDestination XcodeListTestPlans XcodeSwitchTestPlan
诊断 XcodeListNavigatorIssues XcodeRefreshCodeIssuesInFile
本地化 StringCatalogRead StringCatalogEdit
窗口 XcodeListWindows XcodeGetCurrentFile

技能(10 个,安装时生成)

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

仓库结构

.
├── presets/apple/            # agent preset:agent.cordis.yml + preset.yml(0.1.x 用)
├── bin/mcpbridge             # 运行时切换用的 mcpbridge 启动器(--runtime-selectable)
├── cordis.patch.yml          # bundle patch:声明 Apple Mode(DSH 0.2+)
├── package.json              # bundle manifest(dsh.bundle.patch)
├── docs/
│   ├── XCODE_AI_INTEGRATION.md  # 完整接入说明(中文)
│   ├── global-mcp.md            # 全局 bundle 与 preset 的取舍
│   └── publishing.md            # 发布到 npm 的步骤
├── install.sh               # 安装 preset + 本地生成技能
├── uninstall.sh
└── LICENSE                  # MIT

自定义

  • 更换 Xcode:重跑 ./install.sh(选择器)、./install.sh --xcode <路径>(非交互)、--runtime-selectable + DSH_XCODE_DEVELOPER_DIR,或在 mcp-xcode 行加 env: { MCP_XCODE_PID: '<pid>' } 指定某个正在运行的实例。详见选择 Xcode(多版本共存)。
  • persona:编辑同文件的 persona 行文本。
  • Xcode 升级后同步技能:重跑 ./install.sh(技能整体替换,preset 自动备份)。
  • 对齐上游 standard preset:与 node_modules/@deepseek-ai/dsh/config/agent-presets/standard/agent.cordis.yml 做 diff。

安全说明

  • MCP 工具调用不经过 DSH 文件沙箱,走工具级审批流程。XcodeUpdate/XcodeWrite 会直接修改真实 Xcode 工程文件(含 project.pbxproj)。
  • preset 仅在你主动选择时激活;install.sh 不触碰任何全局配置。

参与贡献

欢迎 PR 与 issue。如果你发布自己的 DSH 扩展,请打上 dsh-plugin 话题,并考虑提交到 awesome-dsh-plugin。

许可证

MIT。Xcode AI 技能由安装脚本在你的机器上从你自己的 Xcode 生成,仍受 Apple 许可约束;persona 提示词风格改编自 Xcode Intelligence 模板(行为指导,非 Apple 源码文本)。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。