feat:优化webui多个页面的人机交互,修复插件地址问题,放宽插件id限制,增加高级页面缩进,统计页面快捷按钮,优化新手引导
This commit is contained in:
@@ -143,6 +143,33 @@ def _serialize_messages(messages: List[Any]) -> List[Dict[str, Any]]:
|
||||
return [_serialize_message(message) for message in messages]
|
||||
|
||||
|
||||
def _enrich_session_identity(data: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""为监控事件补充会话展示所需的群/用户标识。"""
|
||||
|
||||
session_id = data.get("session_id")
|
||||
if not session_id:
|
||||
return data
|
||||
|
||||
try:
|
||||
from src.chat.message_receive.chat_manager import chat_manager
|
||||
|
||||
chat_stream = chat_manager.get_session_by_session_id(str(session_id))
|
||||
except Exception:
|
||||
return data
|
||||
|
||||
if chat_stream is None:
|
||||
return data
|
||||
|
||||
session_name = chat_manager.get_session_name(str(session_id))
|
||||
if session_name:
|
||||
data.setdefault("session_name", session_name)
|
||||
data.setdefault("is_group_chat", chat_stream.is_group_session)
|
||||
data.setdefault("group_id", chat_stream.group_id)
|
||||
data.setdefault("user_id", chat_stream.user_id)
|
||||
data.setdefault("platform", chat_stream.platform)
|
||||
return data
|
||||
|
||||
|
||||
def _serialize_tool_results(tools: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
|
||||
"""标准化最终 planner 卡中的工具结果列表。"""
|
||||
|
||||
@@ -266,6 +293,7 @@ async def _broadcast(event: str, data: Dict[str, Any]) -> None:
|
||||
try:
|
||||
from src.webui.routers.websocket.manager import websocket_manager
|
||||
|
||||
data = _enrich_session_identity(data)
|
||||
subscription_key = f"{MONITOR_DOMAIN}:{MONITOR_TOPIC}"
|
||||
total_connections = len(websocket_manager.connections)
|
||||
subscriber_count = sum(
|
||||
@@ -291,12 +319,24 @@ async def _broadcast(event: str, data: Dict[str, Any]) -> None:
|
||||
logger.warning(f"MaiSaka 监控事件广播失败: {exc}", exc_info=True)
|
||||
|
||||
|
||||
async def emit_session_start(session_id: str, session_name: str) -> None:
|
||||
async def emit_session_start(
|
||||
session_id: str,
|
||||
session_name: str,
|
||||
*,
|
||||
is_group_chat: bool,
|
||||
group_id: Optional[str],
|
||||
user_id: Optional[str],
|
||||
platform: str,
|
||||
) -> None:
|
||||
"""广播会话开始事件。"""
|
||||
|
||||
await _broadcast("session.start", {
|
||||
"session_id": session_id,
|
||||
"session_name": session_name,
|
||||
"is_group_chat": is_group_chat,
|
||||
"group_id": group_id,
|
||||
"user_id": user_id,
|
||||
"platform": platform,
|
||||
"timestamp": time.time(),
|
||||
})
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ from .display.display_utils import build_tool_call_summary_lines, format_token_c
|
||||
from .display.prompt_cli_renderer import PromptCLIVisualizer
|
||||
from .display.stage_status_board import remove_stage_status, update_stage_status
|
||||
from .history_utils import drop_leading_orphan_tool_results
|
||||
from .monitor_events import emit_session_start
|
||||
from .reasoning_engine import MaisakaReasoningEngine
|
||||
from .reply_effect import ReplyEffectTracker
|
||||
from .reply_effect.image_utils import extract_visual_attachments_from_sequence
|
||||
@@ -136,6 +137,7 @@ class MaisakaHeartFlowChatting:
|
||||
self._jargon_miner = JargonMiner(session_id, session_name=session_name)
|
||||
|
||||
self._reasoning_engine = MaisakaReasoningEngine(self)
|
||||
self._monitor_session_start_task: Optional[asyncio.Task[None]] = None
|
||||
self._tool_registry = ToolRegistry()
|
||||
self._reply_effect_tracker = ReplyEffectTracker(
|
||||
session_id=self.session_id,
|
||||
@@ -144,6 +146,24 @@ class MaisakaHeartFlowChatting:
|
||||
judge_runner=self._run_reply_effect_judge,
|
||||
)
|
||||
self._register_tool_providers()
|
||||
self._emit_monitor_session_start()
|
||||
|
||||
def _emit_monitor_session_start(self) -> None:
|
||||
"""向 WebUI 监控面板同步当前会话的展示标识。"""
|
||||
|
||||
try:
|
||||
self._monitor_session_start_task = asyncio.create_task(
|
||||
emit_session_start(
|
||||
session_id=self.session_id,
|
||||
session_name=self.session_name,
|
||||
is_group_chat=self.chat_stream.is_group_session,
|
||||
group_id=self.chat_stream.group_id,
|
||||
user_id=self.chat_stream.user_id,
|
||||
platform=self.chat_stream.platform,
|
||||
)
|
||||
)
|
||||
except RuntimeError:
|
||||
logger.debug("MaiSaka 监控会话开始事件未发送:当前没有运行中的事件循环")
|
||||
|
||||
@staticmethod
|
||||
def _is_reply_effect_tracking_enabled() -> bool:
|
||||
|
||||
Reference in New Issue
Block a user