Skip to content

fix: 灵感助手 AI 断连/报错时增加错误感知与自动重试 - #174

Open
zhiwu215 wants to merge 1 commit into
RhythmicWave:devfrom
zhiwu215:fix/assistant-error-notify
Open

fix: 灵感助手 AI 断连/报错时增加错误感知与自动重试#174
zhiwu215 wants to merge 1 commit into
RhythmicWave:devfrom
zhiwu215:fix/assistant-error-notify

Conversation

@zhiwu215

Copy link
Copy Markdown
Contributor

Related #171

改动概述

  • 新增流停滞看门狗,超时无输出自动中止并通知
  • 错误卡片 UI 展示失败原因,支持一键重试
  • LLM 连接级自动重试(网络抖动/5xx 等瞬时错误)
  • 失败时播放降调提示音,与完成音区分
  • 桌面通知策略改为三档(关闭/仅失败/全部)

文件改动说明

后端

  • backend/app/services/ai/core/chat_model_factory.py — 新增 LLM_CONNECT_MAX_RETRIES 常量定义(唯一来源);build_chat_model 系列函数新增 max_retries 参数透传
  • backend/app/services/ai/assistant/assistant_service.py — 删除本地重复常量,改为从 chat_model_factory import;stream_chat_plain 传入 max_retries
  • backend/app/services/ai/core/react_text_agent.py — 同上,删除重复常量;stream_chat_with_react_protocol 传入 max_retries
  • backend/app/services/ai/core/tool_agent_stream.py — 同上,删除重复常量;stream_agent_with_tools 传入 max_retries

前端 — 核心逻辑

  • frontend/.../utils/taskDoneNotifier.ts — 共享 AudioContext 避免重复创建;新增失败降调提示音;抽取 _dispatchNotification 消除 notifyTaskDone/notifyTaskFailed 重复逻辑;新增 DesktopNotificationMode 三档类型;删除冗余 TaskFailedNotifyOptions 别名
  • frontend/.../composables/useAgentPreferences.ts — 新增 taskDoneDesktopNotificationMode 偏好项(none/failed_only/all)及其读写/持久化逻辑,兼容旧 taskDoneDesktopNotificationEnabled 布尔值
  • frontend/.../composables/useAssistantStreamMessageOps.tserror 事件处理改为设置 msg.error 字段(取代 toolsInProgress 拼接 emoji);重新生成时清除 error
  • frontend/.../composables/agentChatEvents.ts — 工具调用进度文本移除 emoji 前缀

前端 — 组件

  • frontend/.../components/assistants/AssistantPanel.vue — 新增流停滞看门狗(armStreamStallWatchdog/disarmStreamStallWatchdog);新增 handleStreamFailure 统一错误处理;提取 buildNotifyOptions 辅助函数精简通知传参;onClose 区分完成/失败通知
  • frontend/.../components/shared/AgentMessageList.vue — 新增错误卡片 UI(.msg-error-card)含失败原因与重试按钮;空内容失败消息保留操作栏;工具状态文本移除 emoji
  • frontend/.../components/setting/AssistantSettings.vue — 桌面通知设置从开关改为三档 radio-group;提示音说明文案补充失败场景
  • frontend/.../components/editors/CodeMirrorEditor.vue — 通知调用补充 desktopNotificationMode 参数

前端 — 类型

  • frontend/.../types/agentChat.tsAgentChatMessage 新增 error?: string 字段
  • frontend/.../types/assistantPanel.tsAssistantPanelMessage 新增 error?: string 字段

验证

image image

- 新增流停滞看门狗,超时无输出自动中止并通知
- 错误卡片 UI 展示失败原因,支持一键重试
- LLM 连接级自动重试(网络抖动/5xx 等瞬时错误)
- 失败时播放降调提示音,与完成音区分
- 桌面通知策略改为三档(关闭/仅失败/全部)
@RhythmicWave

Copy link
Copy Markdown
Owner

感谢贡献,这个改动比较多,晚点我再看看

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants