Open MistEO opened 1 month ago
另外我感觉 custom handler 就是应该跟着 resource 走的,或许接口也应该重构一下
突然有了一个神奇的想法,给 ExecAgent 做一套 API,类似
MaaInitExecAgent(argc, argv);
当调用过这个初始化接口后,MaaSyncContextClick 等函数,实现会变成 print / input 相关操作,供 pipeline json 流程调用 而当没调用过这个初始化接口时,MaaSyncContextClick 等函数仍保持直接调用原先真正的 SyncContext 操作,这样开发者可以直接调试
也就是集成方的同一套代码,他自己可以直接运行去调试(实际是 dlopen MaaFramework 并调用 C API),也可以由 pipeline exec agent 调用(实际是 print / input)
实际的实现细节可能集成方更加无感,例如自动检测 argv,如果不是 pipeline 传进来的,MaaInitExecAgent 就什么也不做
并且,我们可以提供大量的 Get / Set 接口,集成方可以实时获取任务中的信息,例如
hit_times = MaaGetTaskHitTimes("MyTask")
if hit_times < 3:
MaaSyncContextClick(100, 100)
else:
MaaSetTaskNextList(["TaskA, TaskB"])
按照这样的思路,我们可以进一步在 Pipeline 中提供一些事件,如
{
"TaskA": {
"on_timeout": "MyTimeoutExec.py"
}
}
resource
├─exec_agent
│ └─MyTimeoutExec.py
├─image
├─model
│ └─ocr
└─pipeline
# MyTimeoutExec.py
MaaSetTaskNextList(["TaskA, TaskB"])