跳转至

任务流程 Trace

任务流程 Trace 用来判断一条任务走到了哪个阶段。遇到“任务没动”“打开了错误 App”“任务突然失败”时,先看这一类。

task_route_key

表示一次任务的路线身份已经确定。它通常出现在任务刚进入状态机后。

{
  "task_id": "task-20260506-001",
  "source": "schedule",
  "source_id": "morning-checkin",
  "package_name": "com.example.app",
  "user_task": "打开 App,完成签到",
  "user_playbook": "进入首页后点击签到按钮",
  "task_map_mode": "manual",
  "route_id": "schedule:morning-checkin",
  "ts": "2026-05-06T09:00:01.120+0800",
  "event": "task_route_key"
}
字段 说明
task_id 本次任务运行的标识。反馈问题时可用它串起同一次任务的 trace。
source 任务来源,例如手动任务、定时任务或通知触发任务。
source_id 来源任务的内部标识。普通用户通常不需要关心。
package_name 任务指定或解析到的目标 App 包名。
user_task 用户填写的任务描述。
user_playbook 用户填写的操作文档。
task_map_mode 是否启用任务路线,以及路线模式。
route_id 本次任务查找路线时使用的内部路线标识。
ts 事件发生时间。
event 固定为 task_route_key

fsm_state_enter

表示状态机进入某个阶段。看这一类事件,可以知道任务卡在哪一步。

{
  "task_id": "task-20260506-001",
  "state": "INIT",
  "user_task": "打开 App,完成签到",
  "ts": "2026-05-06T09:00:01.180+0800",
  "event": "fsm_state_enter"
}
字段 说明
task_id 本次任务。
state 当前进入的阶段,例如 INITAPP_RESOLVEROUTINGVISION_ACT
user_task 当前阶段处理的任务文本。有些阶段可能没有这个字段。
event 固定为 fsm_state_enter

常见 state

状态 说明
INIT 初始化设备状态、屏幕信息、输入能力。
TASK_DECOMPOSE 尝试把任务拆成更小步骤。
APP_RESOLVE 判断应该打开哪个 App。
ROUTE_PLAN 准备普通页面路由。
PREPARE_DEVICE 启动或切换到目标 App。
ROUTING 执行路线或页面跳转。
VISION_ACT 进入视觉模型观察和操作阶段。

fsm_init_ready

表示初始化完成。它能帮助判断设备信息和当前前台 App 是否读取成功。

{
  "task_id": "task-20260506-001",
  "device_info": {"width": 1080, "height": 2400, "density": 440},
  "current_activity": {"ok": true, "package": "com.android.launcher", "activity": "Launcher"},
  "app_candidates": 120,
  "page_candidates": 0,
  "text_input_support": {"adb_keyboard_installed": true},
  "ts": "2026-05-06T09:00:01.450+0800",
  "event": "fsm_init_ready"
}
字段 说明
device_info 屏幕宽高和密度。定位异常时可参考。
current_activity 当前前台应用和 Activity。
app_candidates core 读取到的候选应用数量。为 0 时可能影响 App 解析。
page_candidates 页面候选数量,通常用于调试。
text_input_support 输入能力状态,例如是否检测到 ADB Keyboard。

fsm_sub_task_begin / fsm_sub_task_end

表示一个子任务开始或结束。一个用户任务可能会被拆成多个子任务。

{
  "task_id": "task-20260506-001",
  "index": 0,
  "sub_task_id": "default",
  "mode": "single",
  "app_hint": "",
  "app_hint_used": false,
  "ts": "2026-05-06T09:00:02.100+0800",
  "event": "fsm_sub_task_begin"
}
{
  "task_id": "task-20260506-001",
  "index": 0,
  "sub_task_id": "default",
  "mode": "single",
  "status": "success",
  "ts": "2026-05-06T09:00:18.400+0800",
  "event": "fsm_sub_task_end"
}
字段 说明
index 第几个子任务。
sub_task_id 子任务标识。普通用户无需关心具体值。
mode 子任务类型,例如单步任务。
status 子任务结果,常见为 successfailed

fsm_app_resolve_done

表示目标 App 已经确定。

{
  "task_id": "task-20260506-001",
  "package": "com.example.app",
  "app_name": "示例 App",
  "source": "llm",
  "ts": "2026-05-06T09:00:03.000+0800",
  "event": "fsm_app_resolve_done"
}
字段 说明
package 最终选择的目标 App 包名。
app_name App 名称。
source 选择来源,例如模型判断或兜底逻辑。

如果这里的 App 不对,通常需要在任务配置里手动选择目标 App,或者把任务描述写得更明确。