Skip to content

Commit d0c1795

Browse files
committed
feat(minecraft): 添加事件类型过滤
1 parent af80c73 commit d0c1795

5 files changed

Lines changed: 16 additions & 2 deletions

File tree

src/plugins/minecraft/config-template.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ short_message_threshold = 10
6969
long_message_threshold = 15
7070
# 相似度阈值
7171
similarity_threshold = 0.7
72+
# 忽略的事件类型
73+
ignore_event_types = ["blockIsBeingBroken"]
7274

7375
# 游戏状态配置
7476
[minecraft.game_state]

src/plugins/minecraft/events/event.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def to_dict(self) -> Dict[str, Any]:
4848
}
4949

5050
def __str__(self) -> str:
51-
return f"MinecraftEvent(type='{self.type}', message='{self.message}', tick={self.tick})"
51+
return f"MinecraftEvent(type='{self.type}', message='{self.message}', tick={self.tick}, username={self.username}, only_message={self.only_message}, step_num={self.step_num}, timestamp={self.timestamp})"
5252

5353
def __repr__(self) -> str:
5454
return self.__str__()

src/plugins/minecraft/events/event_manager.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ def __init__(self, max_event_history: int = 20, config: Dict[str, Any] = None):
2222
self.long_message_threshold = event_manager_config.get("long_message_threshold", 15)
2323
self.similarity_threshold = event_manager_config.get("similarity_threshold", 0.7)
2424

25+
self.ignore_event_types = event_manager_config.get("ignore_event_types", ["blockIsBeingBroken"])
26+
2527
def update_event_history(self, agent_events: List[MinecraftEvent], current_step_num: int):
2628
"""更新事件历史记录,去重并保留最近的记录"""
2729
if not agent_events:
@@ -151,6 +153,8 @@ def get_current_events_text(self, current_events: List[MinecraftEvent], agent_na
151153
if current_events:
152154
for event in current_events:
153155
if hasattr(event, "type") and hasattr(event, "message"):
154-
clean_message = event.message.replace(agent_name, "你")
156+
clean_message = event.message.replace(f"<{agent_name}>", "<你>")
157+
if event.type in self.ignore_event_types:
158+
continue
155159
event_messages.append(f"[{event.type}] {clean_message}")
156160
return event_messages

src/plugins/minecraft/message/message_builder.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def build_state_message(
3838
# 构建消息文本
3939
message_text = self._build_message_text(event_manager, game_state.current_event, agent_info["name"])
4040

41+
if not message_text:
42+
return None
43+
4144
message_segment = Seg(
4245
type="seglist",
4346
data=[

src/plugins/minecraft/plugin.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ async def _send_state_to_maicore(self):
155155
self.game_state, self.event_manager, self.agents_config
156156
)
157157

158+
# 如果消息为空,则执行no_op
159+
if not msg_to_maicore:
160+
await self.action_executor.execute_no_op()
161+
return
162+
158163
await self.core.send_to_maicore(msg_to_maicore)
159164
self.logger.info(
160165
f"已将 Mineland 事件状态 (step {self.game_state.current_step_num}, done: {self.game_state.current_done}) 发送给 MaiCore。"

0 commit comments

Comments
 (0)