Skip to main content

代劳 Python API

pip install dailo-sdk,从 dailo 导入 API。编辑器可补全、查看文档和跳转源码;脚本在代劳设备中执行。

execution() 返回当前执行 ID 和 retry_of_execution_id。持久化连续失败计数时,只在重跑来源与上次执行 ID 一致时继承计数;手动重启、停止后再启动或更换账号应重新计数。

默认诊断记录达到 1 秒的 API 调用或状态驻留,包含近期操作和同帧图文;每次驻留去重,状态改变后重新记录,异常即时记录。单次 wait_until 的等待过程最多报告一次耗时,最终调用诊断仍保留。应用安装、权限、启动和停止也纳入耗时记录。

统计等待诊断时区分过程与最终异常;两者的 operation 都可能是 wait_until,diagnostic 都是 slow_api。按 reason 和原执行异常识别终态,不以总条数大于1判节流失败。

诊断补采画面不再次执行业务观察守卫,避免同一次异常重复触发延期等状态修改;正常观察和动作仍执行守卫。

拖拽轨迹包含起止坐标、移动交付完成、申请松手及松手完成的耗时;移动交付后才开始画面稳定判断,稳定等待失败仍执行松手。系统交付不代表游戏已处理输入,动作结果仍按真实画面确认。

守卫实际返回False并阻塞到预算耗尽时才抛出 ObservationGuardTimeout,其 observation 保留最后拒绝的同帧画面。守卫允许画面但调用预算已耗尽时抛普通TimeoutError;不能把普通定位超时记为网络失败或账号延期。

定位器的一次调用共用守卫、动作、until结果等待与诊断预算;wait_until、画面变化等待与守卫嵌套时继承较早deadline,内部等待只取得剩余时间。复制执行上下文的deadline互相隔离;晚到条件成功仍按超时处理。等待诊断使用本次操作提供的画面及缓存文字;无本次画面时,仅在剩余预算内补采新帧,不额外OCR。采帧/编码截图的时间计入同一预算;耗尽后不再补采,未取得字段为空。日志以collection=budgeted和frameSource=operation / diagnostic / unavailable说明来源。Python回调和原生调用不会因此被强制中断,不能把这个预算当作硬截止时间。

text 使用当前画面文字,region 对指定区域执行局部文字块识别。数字字段可用 text(region=区域, line=True) 读取指定区域的一行文字;同帧区域识别使用 frame.matches(..., region=区域)。

列表翻页可用 text(".+", region=名单区域).drag(x1, y1, x2, y2),等待名单稳定后松手,避免惯性跨页。settle=False 等待系统完成手势,不等待画面稳定;侧视相机或过渡按钮仍需确认可操作状态。until=目标界面 按需等待动作结果。

image(path, size=(宽, 高)) 按画面中的尺寸匹配原图,尺寸使用 720p 坐标;缩放和缓存由宿主处理。

color_at(x, y) 读取 RGB,可判断按钮高亮或可操作区域,不需要图像处理库。

from dailo import app, get_config, node, text
from dataclasses import dataclass

@dataclass
class Settings:
    rounds: int = 5

settings = get_config(Settings)  # 显式读取 UI 配置,属性可补全

app("com.example.game").launch()
node(text="登录").click()  # 默认隐式等待 30 秒
print(text())             # 读取画面文字,输出显示在设备左下角

text("登录") 定位包含文字的行,exact=True 匹配整行;node、image、color 定位控件、图片、颜色,PNG 透明区域不参与匹配。定位结果支持 click()、wait()、disappear()、is_visible();all() 立即读取全部目标,需要滚动稳定时显式使用 settled()。入口.click(until=目标界面) 等目标可操作后点击一次,再等目标界面;click(offset=(0, 30)) 点击目标中心下方 30 像素。wait_until(lambda: 条件) 支持多个合法出口,默认 30 秒。使用 httpx 下载文件,install_app(path) 安装或更新并保留应用数据。app(package) 查询版本、启动、停止及授予权限。stage(message) 同步关键阶段;普通 print / loguru 日志更新设备,结束时同步结果。status_position(x, y) 调整状态行位置(左、下边距,dp)。

settled()(含 drag 的 settle)只确认匹配位置稳定,结果可能为空,不保证目标存在或可操作。需要目标存在时先调用 目标.wait();缩放或页面过渡期间,应先等待同帧实际字段或图像出现,再执行手势,并用 until 或实际画面条件确认结果。

frame = observe() 固定一份画面;frame.text()、frame.matches(pattern)、frame.images({名称: image(...)}) 和 frame.pixel(x, y) 读取同一帧。图像批量匹配可指定 grayscale=True,返回边界及相关度。匹配结果保存文字、边界、中心与相关度;取证时帧ID和时间使用所属 frame.observation_id、frame.captured_at_us。observe(text=False) 延后 OCR;observe(source=path, text=False) 读取保存的图像。frame.crop(path, region) 保存同帧模板,log(message, image=frame.screenshot) 保存对应图文日志。

数字字段可用 frame.text(region=区域, line=True, allow_chars="0123456789"):在原识别模型每步分数上仅选择允许字符与CTC空白,再按原CTC解码;不删除或替换解码后的文字。默认 allow_chars=None 不限制字符,空字符串无效。调用方仍须校验完整字段;数字约束不保证业务数值正确。

set_observation_guard(callback) 在动作前检查同帧画面;返回 False 阻止动作并等画面变化。SDK 默认记录慢调用和超过一秒的状态驻留,包括阶段、实际文字、最近调用及同帧截图。defer_until(带时区的datetime, reason=原因) 结束本次任务并表达最早重跑时间。

点击、定位器滑动/拖动、填充及按键输入另留一条 input_action 文字日志,记录单调时钟微秒的开始/返回时间、目标和 returned/raised;不额外采帧。返回只代表输入 API 完成,业务成效仍需实际后续画面确认。

notifications(after=提交前的time.time(), package_name=包名) 读取本次提交后的瞬时 Toast / 通知,每项包含文字、应用及 Unix 时间;服务最多保留最近32条,重启清空。提示属于独立事件,不代表当前截图内容。

network_proxy() 读取 Android ConnectivityManager 当前实际生效的代理,返回 host、port、exclusions、pac_url;无代理时返回 None。系统设置字段为空不代表内存中的代理已清除。

Metadata

Release files for dailo-sdk 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dailo-sdk 0.1.0
File Size Uploaded
dailo_sdk-0.1.0.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dailo-sdk 0.1.0
File Interpreter ABI Platform
dailo_sdk-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 32.5 kB

Release files / dailo_sdk-0.1.0.tar.gz

Download URL dailo_sdk-0.1.0.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
38bbee429d43efc543ca430b441f5001f49e675d995f4165bdd9feb1c3516180
BLAKE2b-256 checksum
How to use checksums
882245de3cf52af8096a3c4a4dad974cbe32154efd95fe818cda19c82cda871c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / dailo_sdk-0.1.0-py3-none-any.whl

Download URL dailo_sdk-0.1.0-py3-none-any.whl
Size 17.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d5875511211911d306d4773e4eda543d9037f2a567034b0cc6d14c1112860ca2
BLAKE2b-256 checksum
How to use checksums
aaab992f52c1722e52c132be3e10206dd4ce8bf0c0cb71f8ea10f71923e0c5e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page