Skip to content
AI & Agents
Skill

/byted-acep-api

通过本地 Python CLI 和 OpenAPI 客户端管理、排查火山云手机资源。适用于查询实例和资源、截图、执行命令、查看任务、检查应用、主机和机房容量、标签、DNS、路由,以及操作已授权的测试云手机实例。

From plugin
agentkit-samples
417156 skills
Install
$ npx -y skills add bytedance/agentkit-samples --skill byted-acep-api --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/byted-acep-api

Context preview

The summary Claude sees to decide when to auto-load this skill.

通过本地 Python CLI 和 OpenAPI 客户端管理、排查火山云手机资源。适用于查询实例和资源、截图、执行命令、查看任务、检查应用、主机和机房容量、标签、DNS、路由,以及操作已授权的测试云手机实例。

SKILL.md

byted-acep-api.SKILL.md
name: byted-acep-api
description: 通过本地 Python CLI 和 OpenAPI 客户端管理、排查火山云手机资源。适用于查询实例和资源、截图、执行命令、查看任务、检查应用、主机和机房容量、标签、DNS、路由,以及操作已授权的测试云手机实例。
license: Apache-2.0
version: 1.2.0

火山云手机 Skill

当用户要求查看或操作已配置测试业务下的火山云手机资源时,使用这个 skill。

运行约束

  • 不要静态配置 DC。应根据用户请求或当前资源可用性选择 DC。
  • 先通过 `list-products` 查业务 ID,再在每条命令里显式传入 `product_id`。
  • 创建和订购资源时必须显式选择业务资源类型:云盘存储使用 `100`,本地存储使用 `200`。
  • 更新实例镜像或规格时,优先先关机;涉及强制更新时,提醒用户确认可能带来的影响。
  • 后付费实例资源组只支持复购。在订购后付费资源前,先确认该业务已经在火山云手机控制台下过单,并且能查到 `OrderId`。
  • 截图优先使用直连方式 `get-presigned-edge-url --api-type TakeScreenshot`。
  • `batch-screen-shot` 作为回退方式使用;当业务已配置截图存储且用户明确需要该链路时再用。
  • 除非用户明确要求,否则不要输出签名 URL。
  • 查询已安装应用时优先使用 `get-pod-app-list`;仅在确有需要时才回退到 Android `pm list packages`。
  • 除非用户明确要求,否则不要输出 access key、secret key、Authorization header 或完整签名 URL。
  • 创建、删除、开关机、重启、重置、安装/卸载、文件传输、应用启动/关闭,以及 Android 命令执行都属于有状态变更操作。除非用户明确要求执行该操作,否则先确认。

命令入口

以下示例默认在当前 skill 包目录下执行:

python3 scripts/vephone_cli.py <command> [args]

这个 skill 已内置 `scripts/vephone_cli.py` 和 `scripts/core/`,可以直接运行,不依赖仓库根目录下的实现。

命令以显式 flags 的形式暴露常用参数。除 `list-products` 等少数查询命令外,大多数业务命令都把 `product_id` 作为第一个位置参数;查看某个命令支持哪些过滤条件时,直接用 `python3 scripts/vephone_cli.py <command> -h`。如果认证配置不在默认位置,可以用 `--config /path/to/config.json` 指定配置文件路径;这个全局参数放在子命令前后都可以。

如果现有命令还没有覆盖到目标 OpenAPI Action,可以使用通用命令:

python3 scripts/vephone_cli.py action-call ListOperableProduct --json-body --param Count=10 --param CloudphoneProductType=5
python3 scripts/vephone_cli.py action-call GetProductResource --product-id <product_id>
python3 scripts/vephone_cli.py action-call SetProxy --json-body --params-json '{"ProductId":"<product_id>","PodIdList":["pod-1"],"ProxyStatus":1,"ProxyConfig":{"version":"v2","type":"socks5","address":"203.0.113.52","port":"12345"}}'

`action-call` 的 `--param` 使用 `Key=Value` 形式,`Value` 会优先按 JSON 解析,失败时按字符串处理,所以可以直接传 `true`、`123`、`[1,2]`、`{"k":"v"}`。注意在常见 shell 中如果不对 `Key=Value` 做引用/转义,形如 `--param Foo={"k":"v"}` 的双引号可能会被 shell 吞掉,导致程序实际收到 `Foo={k:v}` 并触发 JSON 解析失败;当 `Value` 含双引号、空格或复杂 JSON 时,请用单引号包裹整个 `Key=Value`(如 `--param 'Foo={"k":"v"}'` / `--param 'PodIdList=["pod-1"]'`),或优先使用 `--params-json`(如 `--params-json '{"Foo":{"k":"v"}}'`)。若希望强制按字符串传入 `true`/`123` 等,请使用 JSON 字符串形式:`--param Name='"123"'`。需要批量传参时用 `--params-json`;如果同时传了同名键,`--param` 会覆盖 `--params-json`。默认按 query string 调用,带 `--json-body` 时改为 JSON body。

实例管理

只读操作:

python3 scripts/vephone_cli.py list-products --count 10
python3 scripts/vephone_cli.py list-pods <product_id> --max-results 10
python3 scripts/vephone_cli.py list-pods <product_id> --configuration-code-list <code1,code2> --dc-list <dc1,dc2> --online-list 1,2 --next-token <token>
python3 scripts/vephone_cli.py detail-pod <product_id> <pod_id>
python3 scripts/vephone_cli.py get-pod-metric <product_id> <pod_id>
python3 scripts/vephone_cli.py get-pod-property <product_id> <pod_id>

有状态变更操作:

python3 scripts/vephone_cli.py create-pod <product_id> --name <name> --template-id <template_id> --configuration-code <code> --dc-id <dc> --resource-type 200 --image-id <image_id> --display-layout-id <layout_id> --phone-template-id <template_id>
python3 scripts/vephone_cli.py update-pod <product_id> <pod_id> --image-id <image_id> --display-layout-id <layout_id> --configuration-code <code>
python3 scripts/vephone_cli.py update-pod <product_id> <pod_id> --image-id <image_id> --force
python3 scripts/vephone_cli.py delete-pod <product_id> <pod_id>
python3 scripts/vephone_cli.py power-on-pod <product_id> <pod_id>
python3 scripts/vephone_cli.py power-off-pod <product_id> <pod_id>
python3 scripts/vephone_cli.py reboot-pod <product_id> <pod_id>
python3 scripts/vephone_cli.py reset-pod <product_id> <pod_id>
python3 scripts/vephone_cli.py create-pod-one-step <product_id> --configuration-code <code> --dc <dc> --app-list <app_id:version_id,...>
python3 scripts/vephone_cli.py update-pod-property <product_id> --pod-id <pod_id> --pod-settings '[{"SettingsName":"locale_language","SettingsType":"global","SettingsValue":"zh-CN","SettingsValueType":"string"}]'
python3 scripts/vephone_cli.py update-pod-resource-apply-num <product_id> --resource-set-id <resource_set_id> --apply-num <num>
python3 scripts/vephone_cli.py backup-pod <product_id> --pod-id-list <pod_id1,pod_id2>
python3 scripts/vephone_cli.py restore-pod <product_id> --pod-id-list <pod_id1,pod_id2>
python3 scripts/vephone_cli.py pod-mute <product_id> --pod-id <pod_id> --mute true --display-list <display1,display2>
python3 scripts/vephone_cli.py pod-adb <product_id> --pod-id <pod_id> --enable true
python3 scripts/vephone_cli.py pod-stop <product_id> --pod-id <pod_id>
python3 scripts/vephone_cli.py pod-data-delete <product_id> --pod-id <pod_id> --file-path-list </sdcard,/data/data> --package-list <pkg1,pkg2>
python3 scripts/vephone_cli.py set-proxy <product_id> --pod-id-list <pod_id1,pod_id2> --proxy-status 1 --proxy-config '{"version":"v2","type":"socks5","address":"203.0.113.52","port":"12345"}'
python3 scripts/vephone_cli.py get-proxy <product_id> --pod-id-list <pod_id1,pod_id2>
python3 scripts/vephone_cli.py backup-data <product_id> --pod-id-list <pod_id1,pod_id2> --backup-all false --include-path-list </data/app,/data/data> --exclude-path-list </data/anr>
python3 scripts/vephone_cli.py restore-data <product_id> --backup-data-id <backup_data_id> --pod-id-list <pod_id1,pod_id2>
python3 scripts/vephone_cli.py list-backup-data <product_id> --status completed --max-results 20
python3 scripts/vephone_cli.py delete-backup-data <product_id> --backup-data-id-list <backup_data_id1,backup_data_id2>

`list-pods` 支持通过 `--max-results` 和 `--next-token` 分页。`create-pod` 可以用 `--image-id` 指定初始镜像。`delete-pod`、`reset-pod`、`update-pod --force` 这类操作有明显影响,执行前先确认。像 `--app-list`、`--pod-settings`、`--specify-host-list`、`--proxy-config` 这类结构化参数,直接看对应命令的 `-h` 获取格式说明。

资源、DC、主机与镜像查询

python3 scripts/vephone_cli.py list-dcs <product_id>
python3 scripts/vephone_cli.py get-dc-bandwidth-daily-peak <product_id> <dc_id_list>
python3 sc
Read more
Ships withagentkit-samples

欢迎来到 AgentKit 代码工坊(Samples)仓库! AgentKit 是火山引擎推出的企业级 AI Agent 开发平台,为开发者提供完整的 Agent 构建、部署和运维解决方案。平台通过标准化的开发工具链和云原生基础设施,显著降低复杂智能体应用的开发部署门槛。 本代码库包含了一系列示例和教程,帮助您理解、实现和集成 AgentKit 的各项功能到您的应用中。

Get the whole plugin
Stats
428
Stars
91
Forks
Active
Maintenance
Python
Language
Apache-2.0
License
7h ago
Last commit
9mo ago
Created

Repo: bytedance/agentkit-samples