refactor: 统一 Packet 通信协议 + 后端配置管理 + UI 清理
- 合并 server.py 到 core/__init__.py,使用统一 Packet 协议 - 后端管理配置持久化 (~/.trulymem/config.json) - 前端移除 ConfigService,通过 BackendClient 与后端通信 - 删除 UI 中冗余的 AI 推理逻辑 (chat_service, tool_service, message_handler) - 删除 core/tools 重复文件 (tool_executor, tool_limiter) - 提示词管理器支持用户自定义 (~/.trulyemem/system_prompt.md) - 启动入口优化配置路径逻辑 - 更新测试覆盖 (42 tests) - 更新文档
This commit is contained in:
@ -1,98 +0,0 @@
|
||||
"""消息处理器"""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import TYPE_CHECKING
|
||||
from ..models.message import Message, ToolCall, ToolResult
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..services.chat_service import ChatService
|
||||
from ..widgets.message_history import MessageHistory
|
||||
from ..widgets.operation_log import OperationLog
|
||||
|
||||
|
||||
class MessageHandler:
|
||||
"""消息处理器"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
chat_service: "ChatService",
|
||||
message_history: "MessageHistory",
|
||||
operation_log: "OperationLog"
|
||||
):
|
||||
self._chat_service = chat_service
|
||||
self._message_history = message_history
|
||||
self._operation_log = operation_log
|
||||
|
||||
async def handle_user_message(self, content: str) -> None:
|
||||
"""处理用户消息"""
|
||||
# 创建用户消息
|
||||
user_message = Message(
|
||||
role="user",
|
||||
content=content,
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
|
||||
# 添加到历史
|
||||
self._message_history.add_message(user_message)
|
||||
|
||||
# 发送到聊天服务
|
||||
await self._process_response(content)
|
||||
|
||||
async def _process_response(self, user_input: str) -> None:
|
||||
"""处理响应"""
|
||||
streaming_message = None
|
||||
|
||||
async for event in self._chat_service.send_message(user_input):
|
||||
if event["type"] == "user_message":
|
||||
# 用户消息已处理
|
||||
pass
|
||||
|
||||
elif event["type"] == "content_delta":
|
||||
# 流式内容更新
|
||||
if streaming_message is None:
|
||||
# 创建流式消息
|
||||
streaming_message = Message(
|
||||
role="assistant",
|
||||
content="",
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
self._message_history.add_message(streaming_message)
|
||||
|
||||
# 更新消息内容
|
||||
self._message_history.update_latest_message(event["content"])
|
||||
|
||||
elif event["type"] == "assistant_message":
|
||||
# 模型消息完成
|
||||
if streaming_message:
|
||||
# 更新最终消息(包含工具调用信息)
|
||||
streaming_message.content = event["content"]
|
||||
streaming_message.tool_calls = event.get("tool_calls")
|
||||
streaming_message.tool_results = event.get("tool_results")
|
||||
else:
|
||||
# 如果没有流式消息,直接添加
|
||||
message = Message(
|
||||
role="assistant",
|
||||
content=event["content"],
|
||||
timestamp=datetime.now(),
|
||||
tool_calls=event.get("tool_calls"),
|
||||
tool_results=event.get("tool_results")
|
||||
)
|
||||
self._message_history.add_message(message)
|
||||
|
||||
elif event["type"] == "tool_call":
|
||||
# 工具调用开始
|
||||
pass
|
||||
|
||||
elif event["type"] == "tool_result":
|
||||
# 工具执行结果
|
||||
log_entry = event["log_entry"]
|
||||
self._operation_log.add_log(log_entry)
|
||||
|
||||
elif event["type"] == "error":
|
||||
# 错误处理
|
||||
error_message = Message(
|
||||
role="assistant",
|
||||
content=f"错误: {event['error']}",
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
self._message_history.add_message(error_message)
|
||||
Reference in New Issue
Block a user