[Bug] WebChat 聊天偏好在刷新后重置:流式输出、显示思考内容及发送快捷键

未关闭 适合新手
#10,316 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@C10H14N2O5 已经在做这个了。

开始于 2026年10月2日。

  • #10324 来自 @C10H14N2O5 —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
javascript
领域
frontend

调研方向

从 dashboard/src/components/chat/Chat.vue 开始,重点查看三个偏好的初始化,以及参考行附近现有的 chat.transportMode localStorage 处理。验证当前行为,然后让这三个选项在同一浏览器中刷新页面后仍然保留,并确认复现步骤不再将它们恢复为默认值。

由索引模型根据 Issue 内容生成。

描述

bug
问题描述

在 AstrBot v4.29.0-beta.1 的 WebChat「设置 → 聊天」中,「流式输出」「显示思考内容」和「发送快捷键」的选择均未在刷新后保留,而同一菜单中的 SSE/WebSocket 传输方式能够保留用户选择。

这些设置集中在同一菜单中,却采用不同的持久化策略,使用上略显反直觉。是否使用流式输出、是否显示思考内容,以及选择哪种发送快捷键,都比较偏向个人使用习惯,因此期望刷新页面后能够保留这些选择。

目前不确定上述三项设置不持久化是有意设计,还是遗漏,希望维护者确认预期行为。如果并非有意设计,我愿意提交 PR,参照同一菜单中 SSE/WebSocket 传输方式的现有做法,使用浏览器本地存储保存这三项偏好。

如何复现?
  1. 打开 WebChat,进入「设置 → 聊天」。
  2. 关闭「流式输出」和「显示思考内容」,将「发送快捷键」改为 Shift+Enter。
  3. 刷新当前网页。
  4. 再次打开「设置 → 聊天」,观察这三项设置恢复默认值。

对照测试:更改 SSE/WebSocket 传输方式后刷新网页,该选择能够保留。

实际行为与预期行为
设置 刷新后的实际行为
流式输出 恢复开启
显示思考内容 恢复开启
发送快捷键 恢复为 Enter
SSE/WebSocket 传输方式 保留用户选择

期望行为:在同一浏览器中刷新页面后,保留上述三项聊天偏好,使其与传输方式设置的持久化行为保持一致。

如果刷新后恢复默认值属于预期设计,希望说明这些设置采用不同持久化策略的原因;如果预期应保留,则希望补齐持久化。


AstrBot 版本

v4.29.0-beta.1

操作系统

Windows

部署方式

AstrBot Launcher

使用的消息平台适配器

WebChat(WebUI 内置聊天页面)

其他系统信息

后端系统环境
  • OS:Windows 11 Pro,x86_64
  • DisplayVersion:25H2
  • Build:26200.9457
前端系统环境
  • OS:Windows 11 Home,x86_64
  • DisplayVersion:25H2
  • Build:26200.9550
  • Browser:Microsoft Edge 154.0.4258.48(正式版本)(64 位)

错误日志与辅助信息

目前没有已确认与刷新后状态重置相关的后端错误日志;该现象无需发送聊天消息即可复现。

对发布提交 f20fba64c29623d248629f4d4bb9474bf4e745bc 的代码核对发现:

  • 三项设置分别以 ref(true)、ref(true) 和 ref("enter") 初始化,未发现保存和恢复这些偏好的逻辑。对应源码
  • 传输方式从 localStorage 的 chat.transportMode 读取,并在选择变化时写回。对应源码

这些代码可以解释当前行为,但不能据此确认不持久化是否属于有意设计。


检查清单
  • 我已在 Issue 列表中搜索过相关问题仍无法解决,或该问题从未被报告过。
  • 我已尝试过禁用所有插件,排除了可能是因插件导致的问题。
  • 我报告的问题与 AstrBot 本体相关,而非在报告某一插件的问题。
  • 我已阅读并同意本项目的贡献者行为准则。
  • (可选)我愿意提交 PR 以帮助修复该问题。
主要语言
Python
星标
45.3k
派生
3.3k
平均合并
1 天 6 小时
30 天内合并 PR
135

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

AstrBotDevs/AstrBot 的其他 Issue

查看 AstrBotDevs/AstrBot 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。