freud-zero-mvp / session_logger.py
Feng Chike
Freud Zero MVP: 心理咨询AI系统(清洁部署)
408f650
import json
from datetime import datetime
from pathlib import Path
class SessionLogger:
def __init__(self, session_dir="sessions"):
self.session_dir = Path(session_dir)
self.session_dir.mkdir(exist_ok=True)
self.session_id = datetime.now().strftime("%Y%m%d_%H%M%S")
self.turns = []
self.start_time = datetime.now().isoformat()
def log_turn(self, turn_number, user_message, counselor_message, disclosure_score, dimension_score, reason, mcts_trace=None):
turn_log = {
"timestamp": datetime.now().isoformat(),
"turn_number": turn_number,
"user_message": user_message,
"counselor_message": counselor_message,
"disclosure_score": disclosure_score,
"dimension_score": dimension_score,
"reason": reason,
}
if mcts_trace is not None:
turn_log["mcts_trace"] = mcts_trace
self.turns.append(turn_log)
self._save()
def _save(self):
session_log = {
"session_id": self.session_id,
"start_time": self.start_time,
"turns": self.turns
}
with open(self.session_dir / f"session_{self.session_id}.json", "w", encoding="utf-8") as f:
json.dump(session_log, f, ensure_ascii=False, indent=4)
def get_filepath(self):
return str(self.session_dir / f"session_{self.session_id}.json")