mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-11 15:15:18 +02:00
fixbug:u优化了重复执行的错误和engineer提早结束任务的错误
This commit is contained in:
parent
6e0990f251
commit
0469d1ed7d
1 changed files with 22 additions and 6 deletions
|
|
@ -155,6 +155,8 @@ class RoleZero(Role):
|
|||
### 2. Plan Status ###
|
||||
plan_status, current_task = self._get_plan_status()
|
||||
|
||||
plan_status_formated = self._format_plan_status(plan_status)
|
||||
|
||||
### 3. Tool/Command Info ###
|
||||
tools = await self.tool_recommender.recommend_tools()
|
||||
tool_info = json.dumps({tool.name: tool.schemas for tool in tools})
|
||||
|
|
@ -168,7 +170,7 @@ class RoleZero(Role):
|
|||
### Make Decision Dynamically ###
|
||||
prompt = self.cmd_prompt.format(
|
||||
current_state=self.cmd_prompt_current_state,
|
||||
plan_status=plan_status,
|
||||
plan_status=plan_status_formated,
|
||||
current_task=current_task,
|
||||
requirements_constraints=self.requirements_constraints,
|
||||
)
|
||||
|
|
@ -384,11 +386,10 @@ class RoleZero(Role):
|
|||
"""command requiring special check or parsing"""
|
||||
command_output = ""
|
||||
|
||||
if cmd["command_name"] == "Plan.finish_current_task" and not self.planner.plan.is_plan_finished():
|
||||
# task_result = TaskResult(code=str(commands), result=outputs, is_success=is_success)
|
||||
# self.planner.plan.current_task.update_task_result(task_result=task_result)
|
||||
self.planner.plan.finish_current_task()
|
||||
command_output = "Current task is finished. "
|
||||
if cmd["command_name"] == "Plan.finish_current_task":
|
||||
if not self.planner.plan.is_plan_finished():
|
||||
self.planner.plan.finish_current_task()
|
||||
command_output = "Current task is finished. If all tasks are finished, use 'end' to stop."
|
||||
|
||||
elif cmd["command_name"] == "end":
|
||||
self._set_state(-1)
|
||||
|
|
@ -420,6 +421,21 @@ class RoleZero(Role):
|
|||
)
|
||||
return plan_status, current_task
|
||||
|
||||
def _format_plan_status(self, plan_status):
|
||||
"""format plan status"""
|
||||
# Example:
|
||||
# [GOAL] create a 2048 game
|
||||
# [TASK_ID 1] (finished) Create a Product Requirement Document (PRD) for the 2048 game. This task depends on tasks[]. [Assign to Alice]
|
||||
# [TASK_ID 2] ( ) Design the system architecture for the 2048 game. This task depends on tasks[1]. [Assign to Bob]
|
||||
plan_status_formated = f"[GOAL] {plan_status['goal']}\n"
|
||||
if len(plan_status["tasks"]) > 0:
|
||||
plan_status_formated += "[Plan]\n"
|
||||
for task in plan_status["tasks"]:
|
||||
plan_status_formated += f"[TASK_ID {task['task_id']}] ({'finished' if task['is_finished'] else ' '}){task['instruction']} This task depends on tasks{task['dependent_task_ids']}. [Assign to {task['assignee']}]\n"
|
||||
else:
|
||||
plan_status_formated += "No Plan \n"
|
||||
return plan_status_formated
|
||||
|
||||
def _retrieve_experience(self) -> str:
|
||||
"""Default implementation of experience retrieval. Can be overwritten in subclasses."""
|
||||
context = [str(msg) for msg in self.rc.memory.get(self.memory_k)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue