diff --git a/.gitignore b/.gitignore index e03eab3d3..06e82627c 100644 --- a/.gitignore +++ b/.gitignore @@ -164,3 +164,4 @@ tmp output.wav metagpt/roles/idea_agent.py .aider* +/config/*.yaml diff --git a/metagpt/minecraft_team.py b/metagpt/minecraft_team.py index ffc0357fb..cc0c64ee9 100644 --- a/metagpt/minecraft_team.py +++ b/metagpt/minecraft_team.py @@ -15,7 +15,7 @@ from metagpt.roles.minecraft.minecraft_base import Minecraft from metagpt.environment import Environment -class GameMemory(BaseModel): +class GameEnvironment(BaseModel): """ 游戏环境的记忆,用于多个agent进行信息的共享和缓存,而不需要重复在自己的角色内维护缓存 """ @@ -78,7 +78,7 @@ class MinecraftPlayer(SoftwareCompany): dedicated to writing executable code. """ environment: Environment = Field(default_factory=Environment) - game_memory: GameMemory = Field(default_factory=GameMemory) + game_memory: GameEnvironment = Field(default_factory=GameEnvironment) investment: float = Field(default=50.0) task: str = Field(default="") game_info: dict = Field(default={}) diff --git a/metagpt/roles/minecraft/event_handler.py b/metagpt/roles/minecraft/event_handler.py deleted file mode 100644 index 3840abd4a..000000000 --- a/metagpt/roles/minecraft/event_handler.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -# @Date : 2023/9/23 14:29 -# @Author : stellahong (stellahong@fuzhi.ai) -# @Desc : -import json - -from metagpt.logs import logger - -from metagpt.roles.minecraft.minecraft_base import Minecraft as Base -from metagpt.schema import Message -from metagpt.actions.minecraft.player_action import PlayerActions -from metagpt.actions.minecraft.generate_actions import GenerateActionCode -from metagpt.actions.minecraft.process_event import HandleEvents - - -class EventHandler(Base): - def __init__( - self, - name: str = "Thompson", - profile: str = "Minecraft Event Handler", - goal: str = "To efficiently manage and respond to in-game events, providing information about the player.", - constraints: str = "Resource availability, server performance, adherence to server rules and regulations.", - ) -> None: - super().__init__(name, profile, goal, constraints) - # Initialize actions specific to the EventHandler role - self._init_actions([HandleEvents]) - - # Set events or actions the EventHandler should watch or be aware of - self._watch([PlayerActions, GenerateActionCode]) - self.last_events = {"env_events": {}, - "execute_results": {}} - - - async def _act(self) -> Message: - # 获取最新的消息 - - msg = self._rc.memory.get(k=1)[0] - query = msg.content if self._rc.state == 0 else msg.instruct_content - """ - todo: parse query info from message, e.g. test_round and action code - """ - test_round = 1 - logger.info(msg.cause_by) - - if msg.cause_by == GenerateActionCode: # 进行生成的代码执行, 获取的结果用于进行AI评估 - events = await HandleEvents().run(query) - result_msg = Message( - content=f"Round {test_round} of rollout done", - role=self.profile, - cause_by=HandleEvents, - sent_from=self.profile, - send_to="Task Reviewer", - ) - - self.perform_game_info_callback(events, self.game_memory.update_event) - - else: - events = await HandleEvents().run(query) - result_msg = Message( - content=events, - role=self.profile, - cause_by=HandleEvents, - sent_from=self.profile, - send_to="", - ) - - self.perform_game_info_callback(events, self.game_memory.update_event) - return result_msg diff --git a/metagpt/roles/minecraft/minecraft_base.py b/metagpt/roles/minecraft/minecraft_base.py index ef3c58084..c73837a36 100644 --- a/metagpt/roles/minecraft/minecraft_base.py +++ b/metagpt/roles/minecraft/minecraft_base.py @@ -49,8 +49,6 @@ class Minecraft(Role): self.game_memory = None self.event = {} - - # async def _think(self) -> None: if len(self._actions) == 1: # If there is only one action, then only this one can be performed @@ -75,7 +73,7 @@ class Minecraft(Role): async def _obtain_events(self): return await self.game_memory.on_event() - def set_memory(self, shared_memory: 'GameMemory'): + def set_memory(self, shared_memory: 'GameEnviroment'): self.game_memory = shared_memory def render_human_message(self, msg, *args, **kwargs): @@ -102,4 +100,3 @@ if __name__ == "__main__": result = "Async operation result" # 调用回调函数,并传递结果 # mc.perform_memory_callback(mc.my_callback) - print(mc.game_memory.current_task)