晴天
|
58f5525445
|
fix(assistant): 连续错误自动熔断,避免无限重试循环 (#226)
在路径拦截 + sanitize 的基础上再加一道保险:用户粘贴的不只是
markdown 本地图片、而是其他 API 不接受的内容时(如意外内容格式、
鉴权失败、quota 耗尽),单纯清洗无法解决,用户反复点"重试"会陷
入同样的错误循环。
熔断机制:
- 2 分钟滑动窗口内,同一错误指纹累计 ≥3 次触发熔断
- 错误指纹归一化:去掉数字(时间戳/请求 ID)、URL、多余空白,
只对比核心语义
- 熔断状态下重试按钮禁用 + 警告色样式,hint 文案改为"请先检查
API 配置或网络",点击后 toast 提示而非触发重试
- 自动恢复:修改配置(saveConfig)或新建会话(createSession)时
调用 resetCircuit() 清空失败历史
UI 共用:抽出 createRetryBar(session, circuitOpen) 供 sendMessageDirect
和 retryAIResponse 两处复用,消除原本重复的 30 行错误处理代码。
新增 .ast-retry-bar-circuit CSS 变体(warning 色 + 禁用态)。
翻译键(11 语言):
- retryCircuitHint — 熔断状态下的重试栏 hint
- retryCircuitBlocked — 点击已禁用重试按钮时的 toast
Refs: #226
|
2026-04-20 03:25:40 +08:00 |
|
晴天
|
9ff91f74d8
|
feat: IME-aware chat input, message copy button, Git path scanning
- Fix IME composition issue: Enter during Chinese/Japanese/Korean input
method composition no longer prematurely sends messages (assistant.js)
Uses e.isComposing + keyCode 229 guard on keydown handler
- Add one-click copy button to chat message bubbles (both chat.js and
assistant.js), with hover-reveal animation and checkmark feedback
- Add 'copy' icon to SVG icon library (Lucide style)
- Add CSS for msg-copy-btn in chat.css and assistant.css
- Implement scan_git_paths Rust command: scans common Git installation
locations on Windows/macOS/Linux (Program Files, Scoop, Chocolatey,
GitHub Desktop, VS Code, MSYS2, Homebrew, Xcode CLT, etc.)
- Register scan_git_paths in lib.rs, tauri-api.js, dev-api.js
- Add scan button + results UI in settings.js Git path section
- Add i18n keys: gitScan, gitScanning, gitScanEmpty, gitScanUse
|
2026-04-06 00:14:18 +08:00 |
|