OpenManus 的Flow组件实现了一个灵活的工作流管理系统,主要用于协调多个智能体的协作,以完成复杂任务。Flow组件的核心是基于计划的执行模型,它将任务分解为一系列步骤,然后逐步执行这些步骤,直到任务完成。
设计特点:
execute
抽象方法,要求子类实现关键属性:
agents
: 智能体字典,存储Flow中可用的所有智能体tools
: 可选的工具列表primary_agent_key
: 主要智能体的键名初始化逻辑:
关键方法:
primary_agent
: 属性方法,获取主要智能体get_agent
: 根据键名获取特定智能体add_agent
: 添加新智能体到Flow中execute
: 抽象方法,执行Flow设计特点:
设计特点:
状态类型:
NOT_STARTED
: 未开始IN_PROGRESS
: 进行中COMPLETED
: 已完成BLOCKED
: 已阻塞辅助方法:
get_all_statuses
: 获取所有可能的状态值get_active_statuses
: 获取活动状态值(未开始或进行中)get_status_marks
: 获取状态标记符号映射设计特点:
关键方法:
create_flow
: 静态方法,根据Flow类型和智能体创建Flow实例llm
: 语言模型实例,用于计划创建和总结planning_tool
: 计划工具实例,用于管理计划executor_keys
: 执行者智能体的键名列表active_plan_id
: 当前活动计划的 IDcurrent_step_index
: 当前执行步骤的索引主要执行Flow (execute
方法):
计划创建Flow (_create_initial_plan
方法):
步骤执行Flow (_execute_step
方法):
计划完成Flow (_finalize_plan
方法):
步骤获取 (_get_current_step_info
方法):
步骤完成 (_mark_step_completed
方法):
计划文本获取 (_get_plan_text
方法):
计划文本生成 (_generate_plan_text_from_storage
方法):
plans
: 字典,存储所有计划数据_current_plan_id
: 当前活动计划的 IDcreate
: 创建新计划update
: 更新现有计划list
: 列出所有计划get
: 获取特定计划set_active
: 设置活动计划mark_step
: 更新步骤状态delete
: 删除计划# 创建智能体
agents = {"manus": Manus()}
# 使用工厂创建Flow
flow = FlowFactory.create_flow(
flow_type=FlowType.PLANNING,
agents=agents,
)
# 执行Flow
result = await flow.execute(prompt)
execute
方法,传入用户输入# 内部计划创建Flow
await self._create_initial_plan(input_text)
# 获取当前步骤
self.current_step_index, step_info = await self._get_current_step_info()
# 选择执行者
executor = self.get_executor(step_type)
# 执行步骤
step_result = await self._execute_step(executor, step_info)
# 完成计划
result += await self._finalize_plan()
execute
方法# 创建智能体和Flow
agents = {"manus": Manus()}
flow = FlowFactory.create_flow(flow_type=FlowType.PLANNING, agents=agents)
# 执行Flow
result = await flow.execute("创建一个网站爬虫")
# 创建多个智能体
agents = {
"planner": PlanningAgent(),
"coder": SWEAgent(),
"researcher": Manus()
}
# 创建Flow并指定执行者
flow = FlowFactory.create_flow(
flow_type=FlowType.PLANNING,
agents=agents,
primary_agent_key="planner",
executors=["coder", "researcher"]
)
# 执行Flow
result = await flow.execute("分析市场数据并创建可视化")
OpenManus 的Flow组件通过分离计划创建、步骤执行和状态管理的职责,它能够支持复杂任务的分解和执行,同时保持代码的可维护性和可扩展性。核心的基于计划的执行模型和多智能体协作机制使Flow能够处理各种复杂任务,从而实现更高级的自动化和问题解决能力。