npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-mobile-control

v0.1.1

Published

DSH plugin for controlling mobile devices (ADB / iOS simulator / WDA)

Readme

dsh-mobile-control

DeepSeek Harness 插件 · 操控手机 / DSH plugin for controlling mobile devices

通过 WebDriverAgent(WDA) 驱动 iOS 模拟器:截图、点击、找元素、打开 URL、抓可访问性树。 WDA 是跑在模拟器内部的 XCUITest 运行器,暴露 localhost:8100 HTTP 服务——零 macOS 辅助功能授权、不依赖 idb、能点任意 app(含系统弹窗)

Drives the iOS simulator through WebDriverAgent (WDA): screenshots, taps, element lookup, URL opening, accessibility-tree dumps. WDA is an in-simulator XCUITest runner exposing an HTTP API on localhost:8100 — no macOS accessibility permission, no idb, and it can tap any app, including system dialogs.

为什么用 WDA(而不是别的)

| 方案 | 问题 | |---|---| | idb (Meta) | homebrew-core 的 idb-companion formula 已下架,装不上 | | cliclick / AppleScript | 走 macOS CGEvent,需要给终端授「辅助功能」权限,否则点了没反应 | | WDA ✅ | 模拟器内部 XCTest 自动化特权点击,不走 CGEvent,任何 app 都能点 |

快速开始 Quick start

前置:完整版 Xcode(XCUITest 靠 testmanagerd 拉起,纯 simctl launch 起不来 HTTP 服务)。

bash scripts/wda-up.sh [UDID]            # 不传 UDID 用当前 Booted 的模拟器
curl -s localhost:8100/status | head -c 200   # 返回 build/os/device 即 OK

幂等设计:已在跑 → 秒返回;有缓存 → 免编译 ~30s;没缓存 → 首次 clone+编译一次(之后一直免编译)。端口自适应:WDA 构建产物的监听端口是编译时写死的(可能是 8100 或 8101 等),脚本从运行日志发现真实端口并写入 ~/.cache/webdriveragent/wda.port,插件和脚本都读它。模拟器包未签名、arch=arm64+x86_64,可跨 Mac 复用:把 Build/Products + .xctestrun 拷给别人,直接 test-without-building,谁都不用再编。真机不能这么白嫖(真机 WDA 必须用含设备 UDID 的描述文件重新签名)。

操控 API

docs/wda-drive.md:建会话、找元素、点击、坐标点击、可访问性树、截图、隐私预授权、scheme 打开 URL——全部 curl 可调。

DSH 工具 Tools

安装插件后,以下 mobile_* 工具自动注册进 agent 的工具集:

| 工具 | 说明 | |---|---| | mobile_status | 检查 WDA 是否在服务(端口自适应,默认 8100) | | mobile_wda_up | 幂等启动 WDA(首次 clone+编译,之后免编译 ~30s) | | mobile_screenshot | simctl 截图到 PNG | | mobile_find_element | 按 accessibility label / class 找 UI 元素(返回元素 id) | | mobile_tap | 点元素(elementId)或按逻辑点坐标(x/y)点击 | | mobile_accessibility_tree | 导出当前前台 app 的可访问性树 XML | | mobile_open_url | simctl openurl 打开 URL 或自定义 scheme 深链 | | mobile_grant_privacy | simctl privacy grant 预授权,避免系统弹窗挡自动化 |

# 安装后直接在 agent 会话里用自然语言触发:
#   "用 mobile_wda_up 启动 WDA,然后 mobile_tap 点 (268, 492)"
dsh plugin --profile demo add dsh-mobile-control

路线图 Roadmap

  • [x] WDA 幂等启动(scripts/wda-up.sh
  • [x] 建会话 / 找元素 / 点击 / 坐标点击 / 可访问性树
  • [x] simctl 截图 + privacy 预授权
  • [x] 自定义 scheme 打开 URL(deeplink)
  • [x] 封装为 DSH 工具(8 个 mobile_* tools)
  • [ ] Android(ADB)支持
  • [ ] 元素级滑动 / 长按 / 输入文本

安装 Install

# 发布到 npm 后
dsh plugin --profile demo add dsh-mobile-control

# 或从 GitHub 安装(源码安装需要 prepare 构建)
dsh plugin --profile demo add github:PangYiMing/dsh-mobile-control

许可证 License

MIT