用途:在 MaaFramework 中编写、注册与调试 Custom 识别与动作,用于 Pipeline 无法表达的逻辑,如读取画面外运行时数据(文件、网络、进程状态、时间)、跨节点数据传递、动态计数、复杂判定与自定义识别算法。
主要能力与判据:能 pipeline 就不 custom;视觉可判定的等待、点击、滑动、找字、循环、分支一律用 pipeline(循环=next 环+出口+max_hit)。仅当依赖画面外数据或字段表达不了判定时才上 Custom。字段硬边界:And/Or 仅布尔组合无跨节点算术;max_hit 只递增不可读写清除。
类型与用法:自定义识别用 CustomRecognition(analyze 返回命中 box),外部调用或复杂动作用 CustomAction(run 返回成功失败),横切钩子走 sink 通道。非标设备控制走 CustomController。参数经 custom_action_param / custom_recognition_param(JSON)进入,需运行时校验类型、必填与默认值。注册名与 pipeline 引用须逐字符一致,区分大小写。优先复用既有 pipeline 节点:context.run_recognition("<节点名>", image)。
Context 能力:run_task / run_recognition / run_action、run_recognition_direct / run_action_direct、wait_freezes、override_pipeline / override_next / override_image、get_node_data、set_anchor / get_anchor、get_hit_count / clear_hit_count、get_tasker、clone。签名与 API 以版本路由结果为准,不凭记忆写。
限制:回调内部循环、等待、网络 IO 不展开为节点图,节点 timeout 无法打断阻塞回调,耗时、取消、重试需自行管理;失败要显式返回,避免静默假成功;框架不主动打断回调,长循环需自查停止条件、外部 IO 设超时、清理用 finally/RAII;状态尽量最小化并注明生命周期。深入细节见 references/patterns.md 与 references/agent-mode.md。