dsh-plugin-pinky:把 Pinky 手机控制 MCP 接到 DeepSeek Harness

前言

在 DeepSeek Harness(dsh)里开发智能体时,常见需求是让助手能「看到」并操作一台真实手机上的 App,而不是只在沙箱里写脚本。自行拼装 MCP 客户端、维护 Pinky 的启动命令和 profile 补丁,既要对齐 dsh 版本,又要处理各平台可执行文件路径。

下面介绍社区维护的 dsh-plugin-pinky(retweve)。它是一个纯配置型 dsh 插件:向 profile 插入 dsh 自带的 @deepseek-ai/dsh-mcp-client 行,用于启动本机已安装的 Pinky MCP 服务,使会话中出现 mcp__pinky__* 工具。Pinky 负责连接安卓或 iPhone,风险操作由你在 Pinky 里批准;本插件不打包 Pinky,也与 Pinky 项目无隶属关系。

这是什么

  • 仓库:retweve/dsh-plugin-pinky(MIT,维护者 retweve)
  • 分类:工作流(社区目录:skillhub 插件页)
  • 版本(package.json):0.1.0;要求 dsh >= 0.2.1-rc.2
  • 内容:约 40 行 cordis.patch.yml 与元数据,无可执行代码;作用是把官方 MCP 客户端挂到 Pinky 的命令行(mcp 子命令)上

上游 Pinky 为 Apache-2.0(DIYgod)。插件在 dsh 进程权限下运行;安装前建议自行审阅补丁与许可证。

核心功能

安装并启用后,该 profile 下各会话可获得 Pinky 暴露的工具与资源,例如:

  • 工具:phone_connect、phone_observe、phone_tap、phone_type、phone_launch、phone_handoff、phone_release 等(在 dsh 中以 mcp__pinky__* 出现)
  • MCP 资源服务名:pinky

行为要点(由 Pinky 在连接时下发说明,此处仅归纳 README 中的描述):

  1. phone_connect 开始任务(任务名在 Pinky 中可见),phone_release 结束任务。
  2. 动作返回屏幕变化,元素带 [ref] 编号便于后续点击;phone_observe 可读整屏。
  3. 支付等敏感步骤在 Pinky 弹出批准卡片,智能体不能代你批准;银行/钱包/密码类 App 默认屏蔽,验证码打码,你可随时接管手机。
  4. user_took_over / paused 时智能体通过 phone_handoff 请你交还;stopped 表示你在 Pinky 中按了 Stop——该会话不能再使用这台手机,且 Stop all 后 10 分钟内新会话也不能使用任何手机。

Pinky 在本地运行;批准、屏蔽与打码由 Pinky 本地网关执行,不依赖本插件或提示词。

前置条件

  1. 本机已安装并运行 Pinky,且已在 Pinky 中通过「Add phone」添加并授权手机。启动 MCP 的方式:Windows 为 Pinky.exe mcp,macOS/Linux 为 pinkyctl mcp,或使用应用自带的可执行路径。
  2. dsh 版本不低于 0.2.1-rc.2。
  3. 手机经 USB 或无线调试连接(Pinky 自带 adb)。

安装与启用

在 dsh 桌面版:设置 → 插件 → 使用下列 GitHub 规格安装:

github:retweve/dsh-plugin-pinky

npm 包路径在 README 中写明为发布后可用:

dsh plugin --profile <profile> add dsh-plugin-pinky

若插件管理器提示变更未生效,重启 dsh 并新开一会话。工具列表中应出现 mcp__pinky__*。

配置 Pinky 可执行路径

插件按平台解析 Pinky 路径;环境变量 PINKY_BIN 可覆盖默认值:

平台 默认路径
Windows %LOCALAPPDATA%\Programs\Pinky\Pinky.exe
macOS /Applications/Pinky.app/Contents/MacOS/Pinky
Linux /opt/pinky/pinky

便携版或自定义安装时,在 profile 用户补丁 ~/.dsh/profiles/<profile>/cordis.patch.yml(或 --patch 叠加层)中覆盖整行 config。注意:config 为整体替换,需写全每个字段。

- id: mcp-pinky
  config:
    serverName: pinky
    transport: stdio
    command: 'D:\Pinky\Pinky.exe'
    args:
      - mcp
    toolCallTimeoutMs: 120000
    failOnStartupError: false

补丁中 failOnStartupError: false 表示 MCP 连接失败时 dsh 仍可启动,但需在日志中排查 Pinky 路径或进程状态。

典型用法

在新会话中可用自然语言让智能体读屏,例如:

  • 英文:“Use Pinky to see what’s on my phone.”
  • 中文:「用 Pinky 看看我手机现在什么画面。」

经 phone_connect 建立任务后,再按需调用观察、点击、输入、启动 App 等工具;敏感步骤在 Pinky 等你确认。

常见问题

现象 处理
没有 mcp__pinky__* Pinky 路径错误或未安装。检查路径,或设置 PINKY_BIN / 覆盖 command;查看 dsh MCP 连接日志。
工具有但调用失败 Pinky 未运行,或没有已连接手机。打开 Pinky 并添加/重连手机。
device_offline 手机断连。在 Pinky 中重新连接。
stopped 曾按 Stop。Stop all 后等待 10 分钟再开新任务,必要时新开会话。
approval_denied / 超时 批准卡片约 60 秒;在 Pinky 中操作,或在 Pinky → 设置 → 安全 中调整规则。

卸载

在 dsh 插件管理器中移除,或执行 dsh plugin remove。会去掉 bundle 中的 mcp-pinky 行,不影响其他配置。

结尾

dsh-plugin-pinky 把「真实手机 + 人工批准」这条链路收成一条 GitHub 安装规格和一份可读补丁,适合已在用 Pinky、又希望 dsh 智能体直接调用 mcp__pinky__* 的开发者。第三方插件请只从信任来源安装。

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

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

小夜