mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix(feishu): unconditionally inc streaming sequence to prevent locking; send fallback as normal msg
This commit is contained in:
@@ -663,7 +663,7 @@ class MoviePilotAgent:
|
|||||||
and self.should_dispatch_reply
|
and self.should_dispatch_reply
|
||||||
and not self._tool_context.get("user_reply_sent")
|
and not self._tool_context.get("user_reply_sent")
|
||||||
):
|
):
|
||||||
await self.send_agent_message(remaining_text)
|
await self.send_agent_message(remaining_text, is_streaming_fallback=True)
|
||||||
elif (
|
elif (
|
||||||
remaining_text
|
remaining_text
|
||||||
and self.persist_output_message
|
and self.persist_output_message
|
||||||
@@ -743,17 +743,20 @@ class MoviePilotAgent:
|
|||||||
# 确保停止流式输出
|
# 确保停止流式输出
|
||||||
await self.stream_handler.stop_streaming()
|
await self.stream_handler.stop_streaming()
|
||||||
|
|
||||||
async def send_agent_message(self, message: str, title: str = ""):
|
async def send_agent_message(self, message: str, title: str = "", is_streaming_fallback: bool = False):
|
||||||
"""
|
"""
|
||||||
通过原渠道发送消息给用户
|
通过原渠道发送消息给用户
|
||||||
"""
|
"""
|
||||||
|
mtype = NotificationType.System if is_streaming_fallback else NotificationType.Agent
|
||||||
await AgentChain().async_post_message(
|
await AgentChain().async_post_message(
|
||||||
Notification(
|
Notification(
|
||||||
channel=self.channel,
|
channel=self.channel,
|
||||||
source=self.source,
|
source=self.source,
|
||||||
mtype=NotificationType.Agent,
|
mtype=mtype,
|
||||||
userid=self.user_id,
|
userid=self.user_id,
|
||||||
username=self.username,
|
username=self.username,
|
||||||
|
original_message_id=self.original_message_id,
|
||||||
|
original_chat_id=self.original_chat_id,
|
||||||
title=title,
|
title=title,
|
||||||
text=message,
|
text=message,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1240,13 +1240,14 @@ class Feishu:
|
|||||||
card_id = str(stream_meta.get("card_id") or "").strip()
|
card_id = str(stream_meta.get("card_id") or "").strip()
|
||||||
element_id = str(stream_meta.get("element_id") or self.STREAM_CARD_BODY_ELEMENT_ID).strip()
|
element_id = str(stream_meta.get("element_id") or self.STREAM_CARD_BODY_ELEMENT_ID).strip()
|
||||||
sequence = int(stream_meta.get("sequence") or 0) + 1
|
sequence = int(stream_meta.get("sequence") or 0) + 1
|
||||||
|
# 无论远端是否响应成功都自增 sequence,防止某次超时导致后续 sequence 一直因为没有递增而被拒绝
|
||||||
|
stream_meta["sequence"] = sequence
|
||||||
if card_id and element_id and self._update_streaming_card_content(
|
if card_id and element_id and self._update_streaming_card_content(
|
||||||
card_id=card_id,
|
card_id=card_id,
|
||||||
element_id=element_id,
|
element_id=element_id,
|
||||||
content=self._escape_card_text(text).strip() or " ",
|
content=self._escape_card_text(text).strip() or " ",
|
||||||
sequence=sequence,
|
sequence=sequence,
|
||||||
):
|
):
|
||||||
stream_meta["sequence"] = sequence
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
card = self._build_card(title=title, text=text, link=None, buttons=buttons)
|
card = self._build_card(title=title, text=text, link=None, buttons=buttons)
|
||||||
|
|||||||
Reference in New Issue
Block a user