Files
X-Agents/agent/app/agent/memory/session.py
DESKTOP-72TV0V4\caoxiaozhu b2bc9988a9 feat: 重构前后端架构,添加Go后端和Python Agent服务
- 新增 Go 语言后端服务(server/),包含用户认证、Agent管理、数据库连接等API
- 新增 Python Agent 服务(agent/),实现Agent核心逻辑和工具集
- 前端从原生HTML迁移到Vue.js框架(web/src/)
- 添加 Docker Compose 支持(docker-compose.yml)
- 添加项目架构文档(docs/ARCHITECTURE.md)
- 添加环境变量示例(.env.example)和本地启动脚本(start-local.ps1)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 16:39:42 +08:00

63 lines
2.0 KiB
Python

"""
会话管理器 - 管理 Agent 的会话历史
"""
from typing import Any, Optional
from collections import defaultdict
from datetime import datetime
class SessionManager:
"""会话管理器"""
def __init__(self, max_history: int = 10):
"""
初始化会话管理器
Args:
max_history: 每个会话保留的最大历史消息数
"""
self.max_history = max_history
self.sessions: dict[str, list[dict]] = defaultdict(list)
self.metadata: dict[str, dict] = {}
def add_message(self, session_id: str, role: str, content: str):
"""添加消息到会话"""
self.sessions[session_id].append({
"role": role,
"content": content,
"timestamp": datetime.now().isoformat()
})
# 限制历史长度
if len(self.sessions[session_id]) > self.max_history:
self.sessions[session_id] = self.sessions[session_id][-self.max_history:]
def get_history(self, session_id: str) -> list[dict]:
"""获取会话历史"""
return self.sessions.get(session_id, [])
def clear_session(self, session_id: str):
"""清除会话"""
if session_id in self.sessions:
del self.sessions[session_id]
if session_id in self.metadata:
del self.metadata[session_id]
def set_metadata(self, session_id: str, key: str, value: Any):
"""设置会话元数据"""
if session_id not in self.metadata:
self.metadata[session_id] = {}
self.metadata[session_id][key] = value
def get_metadata(self, session_id: str, key: str, default: Any = None) -> Any:
"""获取会话元数据"""
return self.metadata.get(session_id, {}).get(key, default)
def list_sessions(self) -> list[str]:
"""列出所有会话ID"""
return list(self.sessions.keys())
def get_session_count(self) -> int:
"""获取会话数量"""
return len(self.sessions)