perf(hub-ai): reduce CPU load during trading coach chat
Cache chat context, parallelize exchange fetches, skip fund history writes, defer rolling summary to a background thread, and cache markdown rendering on the client. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""中控 AI:单会话聊天(直到用户点击新开)。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import threading
|
||||
from typing import Any, Optional
|
||||
|
||||
from hub_ai.attachments import parse_chat_attachments
|
||||
@@ -20,7 +21,7 @@ from hub_ai.config import (
|
||||
)
|
||||
from hub_trades_lib import current_trading_day
|
||||
from hub_ai.context import (
|
||||
build_daily_context,
|
||||
build_chat_context,
|
||||
format_chat_context_for_chat,
|
||||
format_chat_position_overview,
|
||||
)
|
||||
@@ -213,7 +214,7 @@ def send_chat_message(
|
||||
user_prompt += "\n\n【附件正文】\n" + _clip_text(parsed["text_append"], 3000)
|
||||
system_prompt = CHAT_GENERAL_SYSTEM
|
||||
else:
|
||||
ctx = build_daily_context(exchanges, trading_day=day)
|
||||
ctx = build_chat_context(exchanges, trading_day=day)
|
||||
day = ctx["trading_day"]
|
||||
brief_ctx, excerpt = _trading_context_bundle(ctx, prior_count=prior_count)
|
||||
user_prompt = build_chat_user_prompt(
|
||||
@@ -247,13 +248,21 @@ def send_chat_message(
|
||||
attachments=parsed.get("attachment_meta") or [],
|
||||
)
|
||||
session = append_chat_message(sid, "assistant", reply)
|
||||
refresh_session_rolling_summary(
|
||||
sid,
|
||||
prior_summary=prior_rolling,
|
||||
user_text=user_visible,
|
||||
assistant_text=reply,
|
||||
bot_mode=bot_mode,
|
||||
)
|
||||
summary_kwargs = {
|
||||
"session_id": sid,
|
||||
"prior_summary": prior_rolling,
|
||||
"user_text": user_visible,
|
||||
"assistant_text": reply,
|
||||
"bot_mode": bot_mode,
|
||||
}
|
||||
|
||||
def _refresh_summary_bg() -> None:
|
||||
try:
|
||||
refresh_session_rolling_summary(**summary_kwargs)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
threading.Thread(target=_refresh_summary_bg, daemon=True).start()
|
||||
session = get_active_session() or session
|
||||
return {
|
||||
"ok": True,
|
||||
|
||||
Reference in New Issue
Block a user