75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
import time
|
|
from typing import List, Optional, Dict, Any
|
|
|
|
|
|
class CycleInfo:
|
|
"""循环信息记录类"""
|
|
|
|
def __init__(self, cycle_id: int):
|
|
self.cycle_id = cycle_id
|
|
self.start_time = time.time()
|
|
self.end_time: Optional[float] = None
|
|
self.action_taken = False
|
|
self.action_type = "unknown"
|
|
self.reasoning = ""
|
|
self.timers: Dict[str, float] = {}
|
|
self.thinking_id = ""
|
|
self.replanned = False
|
|
|
|
# 添加响应信息相关字段
|
|
self.response_info: Dict[str, Any] = {
|
|
"response_text": [], # 回复的文本列表
|
|
"emoji_info": "", # 表情信息
|
|
"anchor_message_id": "", # 锚点消息ID
|
|
"reply_message_ids": [], # 回复消息ID列表
|
|
"sub_mind_thinking": "", # 子思维思考内容
|
|
}
|
|
|
|
def to_dict(self) -> Dict[str, Any]:
|
|
"""将循环信息转换为字典格式"""
|
|
return {
|
|
"cycle_id": self.cycle_id,
|
|
"start_time": self.start_time,
|
|
"end_time": self.end_time,
|
|
"action_taken": self.action_taken,
|
|
"action_type": self.action_type,
|
|
"reasoning": self.reasoning,
|
|
"timers": self.timers,
|
|
"thinking_id": self.thinking_id,
|
|
"response_info": self.response_info,
|
|
}
|
|
|
|
def complete_cycle(self):
|
|
"""完成循环,记录结束时间"""
|
|
self.end_time = time.time()
|
|
|
|
def set_action_info(self, action_type: str, reasoning: str, action_taken: bool):
|
|
"""设置动作信息"""
|
|
self.action_type = action_type
|
|
self.reasoning = reasoning
|
|
self.action_taken = action_taken
|
|
|
|
def set_thinking_id(self, thinking_id: str):
|
|
"""设置思考消息ID"""
|
|
self.thinking_id = thinking_id
|
|
|
|
def set_response_info(
|
|
self,
|
|
response_text: Optional[List[str]] = None,
|
|
emoji_info: Optional[str] = None,
|
|
anchor_message_id: Optional[str] = None,
|
|
reply_message_ids: Optional[List[str]] = None,
|
|
sub_mind_thinking: Optional[str] = None,
|
|
):
|
|
"""设置响应信息"""
|
|
if response_text is not None:
|
|
self.response_info["response_text"] = response_text
|
|
if emoji_info is not None:
|
|
self.response_info["emoji_info"] = emoji_info
|
|
if anchor_message_id is not None:
|
|
self.response_info["anchor_message_id"] = anchor_message_id
|
|
if reply_message_ids is not None:
|
|
self.response_info["reply_message_ids"] = reply_message_ids
|
|
if sub_mind_thinking is not None:
|
|
self.response_info["sub_mind_thinking"] = sub_mind_thinking
|