相关文档:Application 应用模块 | 条件操作框架 | CV 流水线架构
OneDragon 的 Operation 模块构成了整个框架的核心执行引擎,采用基于状态机的操作流程控制,为复杂的游戏自动化任务提供了强大而灵活的执行框架。
- OperationBase: 最基础的操作抽象层 (后续考虑删除)
- Operation: 具体的操作实现层,支持节点图执行
- Application: 应用层,封装完整的业务逻辑
- OneDragonApp: 一条龙应用层,支持多应用编排和调度 (后续替换成分组应用)
- 基于节点图的状态转换机制
- 支持条件分支和循环控制
- 内置重试和错误处理机制
- 全局事件总线机制
- 支持异步事件处理
- 松耦合的组件通信
职责: 定义所有操作的基本接口和结果结构
核心类:
class OperationResult:
success: bool # 执行结果
status: str # 状态描述
data: Any # 返回数据
class OperationBase:
def execute(self) -> OperationResult
def op_success(status, data) -> OperationResult
def op_fail(status, data) -> OperationResult设计特点:
- 统一的结果返回格式
- 简洁的成功/失败状态表示
- 支持任意类型的数据返回
职责: 实现基于节点图的复杂操作流程控制
核心属性:
ctx: OneDragonContext- 全局上下文_node_map: dict[str, OperationNode]- 节点映射_node_edges_map: dict[str, list[OperationEdge]]- 边映射_current_node: OperationNode- 当前执行节点
执行流程:
- 初始化阶段: 构建节点图,确定起始节点
- 执行循环: 按节点图执行,处理状态转换
- 结果处理: 根据最终状态返回操作结果
关键方法:
_init_network(): 构建操作节点网络_execute_one_round(): 执行单轮操作_get_next_node(): 根据结果选择下一个节点
职责: 表示操作流程中的单个执行步骤
核心属性:
class OperationNode:
cn: str # 节点名称
func: Callable # 节点处理函数
op_method: Callable # 类方法处理函数
op: OperationBase # 子操作
retry_on_op_fail: bool # 失败时是否重试
node_max_retry_times: int # 最大重试次数
timeout_seconds: float # 超时时间注解支持:
@operation_node(name='节点名称', is_start_node=True)
def node_method(self) -> OperationRoundResult:
# 节点逻辑实现
return self.round_success()职责: 定义节点间的连接关系和转换条件
核心属性:
class OperationEdge:
node_from: OperationNode # 源节点
node_to: OperationNode # 目标节点
success: bool # 成功条件
status: str # 状态匹配条件
ignore_status: bool # 是否忽略状态注解支持:
@node_from(from_name='源节点', status='特定状态')
@operation_node(name='目标节点')
def target_node(self) -> OperationRoundResult:
# 目标节点逻辑职责: 表示单轮操作的执行结果
结果类型:
class OperationRoundResultEnum(Enum):
RETRY = 0 # 重试
SUCCESS = 1 # 成功
WAIT = 2 # 等待
FAIL = -1 # 失败便捷方法:
round_success(): 创建成功结果round_fail(): 创建失败结果round_retry(): 创建重试结果round_wait(): 创建等待结果