Help us shape the future of Go! Take the 2026 Go Developer Survey

pmock-cli

command module
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 30, 2026 License: Apache-2.0 Imports: 3 Imported by: 0

README

pmock-cli

Release

PMOCK 开放 API 的命令行客户端。用团队的 Access Key / Secret Key 直接管理云手机、 应用、文件、网络和 RPA 任务,不需要打开客户端,也不需要本机登录态。

适合:

  • 在终端批量管理云手机
  • 写自动化脚本 / CI 任务
  • 给 AI Agent 提供可执行的 PMOCK 工具(MCP)

安装

npm(macOS / Linux)
npm install -g pmock-cli@latest

国内镜像如果还没同步,指定官方源:

npm install -g pmock-cli@latest --registry=https://registry.npmjs.org

验证:

pmock-cli version
一行安装(macOS / Linux,不需要 npm)
curl -fsSL https://raw.githubusercontent.com/haidaisiganbei/pmock-cli/main/scripts/install.sh | sh

安装到 ~/.local/bin/pmock-cli,并自动校验 checksums。

Windows

Windows 暂时使用 GitHub Release 中的 .zip:

https://github.com/haidaisiganbei/pmock-cli/releases

其他安装方式
go install github.com/haidaisiganbei/pmock-cli@latest

五分钟上手

# 1. 配置 AK/SK
pmock-cli config init

# 2. 检查配置和连通性
pmock-cli doctor

# 3. 查询设备
pmock-cli phone list --page-num 1 --page-size 100

# 4. 表格查看
pmock-cli phone list --format table

配置

交互式
pmock-cli config init

Secret 输入不会回显。配置保存在 ~/.pmock-cli/config.json,权限 0600。

非交互式
pmock-cli config init \
  --base-url "https://user.pmock.com/api" \
  --access-key "AK..." \
  --secret-key "SK..."
环境变量

CI 中推荐使用环境变量:

export PMOCK_ACCESS_KEY="AK..."
export PMOCK_SECRET_KEY="SK..."
export PMOCK_BASE_URL="https://user.pmock.com/api"
export PMOCK_TIMEOUT="30s"

优先级:

命令行参数 > 环境变量 > 配置文件 > 默认值
多套配置

为不同团队或账号保存独立配置:

export PMOCK_CLI_CONFIG="$HOME/.pmock-cli/team-b.json"
pmock-cli config init

之后固定使用:

export PMOCK_CLI_CONFIG="$HOME/.pmock-cli/team-b.json"

常用命令

命令组 用途
phone 云手机列表、创建、启停、重启、重置、续费、截图、GPS
phone action 点击、双击、长按、滑动、拖动、输入、应用操作
phone file 文件扫描、下载、上传
app 应用列表、安装、升级、启停
network 代理与网络检测
rpa RPA 模板与任务
product 商品、SKU、价格
team 团队成员
auth / config 鉴权与配置
doctor 诊断
mcp MCP Server
云手机
# 列表
pmock-cli phone list --page-size 100
pmock-cli phone list --name-or-code demo
pmock-cli phone list --status 1
pmock-cli phone list --group-id 123

# 开关机 / 重启
pmock-cli phone start --id 123 --wait
pmock-cli phone stop --id 123 --wait
pmock-cli phone restart --id 123 --wait

# 截图(默认删除手机中的截图文件)
pmock-cli phone screen --id 123
pmock-cli phone screen --id 123 --is-remove=false

# 需要花钱或不可逆的操作
pmock-cli phone create --spu-id 1 --sku-id 2 --num 1
pmock-cli phone remove --id 123 --yes
UI 自动化

动作类命令使用 code,不是 id:

pmock-cli phone action click --code A1 --pos-type 2 --pos 100,200 --wait
pmock-cli phone action input --code A1 --text "hello" --wait
pmock-cli phone action swipe --code A1 --pos1 100,200 --pos2 100,600
文件上传
pmock-cli phone file upload --id 123 --file ./video.mp4
pmock-cli phone file upload --id 123 --file ./app.apk --type app
  • 自动计算 MD5
  • 自动分片上传
  • 默认推送到 /sdcard/Download
  • --dest 可指定手机目录
  • --type app 返回的 envFileId 可传给 app install --file-id
应用
pmock-cli app list --page-size 10 --apk-name tiktok
pmock-cli app install --id 123 --file-id 456 --apk-pkg com.example.app \
  --apk-name Example --apk-version-name 1.0 --apk-version-code 1
RPA
pmock-cli rpa template list
pmock-cli rpa task list
pmock-cli rpa task add --template-id 9 --name daily --json @task.json --wait

更多命令:

pmock-cli --help
pmock-cli phone --help
pmock-cli docs phone start
pmock-cli commands

输出

默认输出 JSON:

{
  "traceId": "...",
  "code": 200,
  "msg": "查询成功",
  "data": {}
}
  • code 为 0 或 200 表示成功
  • 其他 code 表示失败,msg 是原因
  • 分页接口统一输出为 data.total + data.rows
{
  "data": {
    "total": 6,
    "rows": [ ... ]
  }
}
  • password、adbPassword、accessKey、token 等字段会自动替换为 ****

格式:

pmock-cli phone list --format json
pmock-cli phone list --format pretty
pmock-cli phone list --format table

退出码:

码 含义
0 成功
1 业务失败
2 参数 / 配置错误
3 网络、超时、鉴权失败

--allow-business-error 可以让业务失败也返回 0,适合只判断接口可达性的脚本。


更多用法

嵌套参数

标量参数用 flag,嵌套对象或数组用 --json:

pmock-cli phone create --spu-id 1 --sku-id 2 --num 1 \
  --json '{"tagIds":[1,2],"realResolution":true}'

pmock-cli rpa task add --template-id 9 --name daily --json @task.json
先看请求再执行
pmock-cli phone start --id 123 --dry-run

只输出 method、URL 和 body,不发送请求。

异步等待
pmock-cli phone start --id 123 --wait
pmock-cli phone action click --code A1 --pos-type 2 --pos 100,200 --wait
pmock-cli rpa task add --template-id 9 --name daily --json @task.json --wait

结果会写进 data.wait:

{
  "taskId": 1,
  "wait": {
    "ok": true,
    "taskStatus": 2,
    "phoneStatus": 1,
    "attempts": 2,
    "waitedMs": 1200
  }
}

MCP(AI Agent 接入)

{
  "mcpServers": {
    "pmock": {
      "command": "pmock-cli",
      "args": ["mcp"],
      "env": {
        "PMOCK_BASE_URL": "https://user.pmock.com/api",
        "PMOCK_ACCESS_KEY": "AK...",
        "PMOCK_SECRET_KEY": "SK..."
      }
    }
  }
}

工具按模块分组,调用时用 action 选择动作,params 传参数:

{
  "action": "start",
  "params": { "id": "1900000000000000123", "wait": true }
}
  • 支持 pmock_phone、pmock_phone_action、pmock_phone_file、pmock_app、pmock_network、pmock_rpa_template、pmock_rpa_task、pmock_product、pmock_brand、pmock_team、pmock_task、pmock_account
  • pmock_help 可以查询任意命令的完整参数
  • 删除、重置等破坏性动作需要 params.yes = true
  • 64 位 ID 必须用字符串传("id": "1900000000000000123"),不要写成 JSON 数字。MCP SDK 按 float64 解析数字,超过 2^53 会丢精度,服务端只会看到四舍五入后的 ID,最终报「手机不存在」。直接调用 CLI 时 --id 是字符串参数,不受影响

故障排查

MCP 报「手机不存在」,但 CLI 直接调用正常

大整数 ID 被 JSON 数字精度截断了。MCP 工具参数里的 ID 要加引号:

{ "action": "start", "params": { "id": "1900000000000000123" } }

数字形式在 2^53 以上会丢失末尾几位(例如 1900000000000000123 变成 1900000000000000000),API 自然查不到这台手机。新版 CLI 遇到这种数字会直接报错并提示改用字符串,而不是把错误 ID 发出去。--json 里嵌套的 ID 同理。

10123 无效的开发者编号

通常是环境或团队不匹配:

pmock-cli config show

确认:

  • base URL 是否正确
  • AK/SK 是否属于同一环境的同一团队
  • 客户端当前选中的团队是否一致
有设备但列表为空

先确认版本:

pmock-cli version

0.1.4 起已支持 rows 分页响应;旧版本可能显示 data: null。

npm 安装后还是旧版本
npm install -g pmock-cli@latest --registry=https://registry.npmjs.org --prefer-online
pmock-cli version
配置文件权限
chmod 600 ~/.pmock-cli/config.json
诊断
pmock-cli doctor

安全

  • AK/SK 是团队维度凭证,不要提交到仓库或发到公开渠道
  • 配置文件默认 0600
  • CI 使用 PMOCK_ACCESS_KEY / PMOCK_SECRET_KEY
  • remove、reset、new 等不可逆操作需要 --yes
  • 输出会隐藏密码、ADB 密码、token 等敏感字段
  • 如果凭证泄露,请在 PMOCK 客户端中重置

链接

参与开发请见 CONTRIBUTING.md。


Apache-2.0,见 LICENSE。

Documentation

Overview

pmock-cli is the standalone command line client for the PMOCK open API.

Directories

Path Synopsis
Package cmd wires the generated OpenAPI catalog into a Cobra command tree.
Package cmd wires the generated OpenAPI catalog into a Cobra command tree.
internal
auth
Package auth implements the PMOCK open API request signature.
Package auth implements the PMOCK open API request signature.
build
Package build carries version metadata injected at build time.
Package build carries version metadata injected at build time.
client
Package client talks to the PMOCK open API.
Package client talks to the PMOCK open API.
config
Package config resolves the credentials and endpoint used by pmock-cli.
Package config resolves the credentials and endpoint used by pmock-cli.
exitcode
Package exitcode defines the process exit contract shared by every command.
Package exitcode defines the process exit contract shared by every command.
output
Package output renders the API envelope and human-readable variants.
Package output renders the API envelope and human-readable variants.
phonefile
Package phonefile implements the multi-step file upload used by cloud phones.
Package phonefile implements the multi-step file upload used by cloud phones.
spec
Package spec parses the vendored PMOCK OpenAPI document and turns it into the CLI command catalog.
Package spec parses the vendored PMOCK OpenAPI document and turns it into the CLI command catalog.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL