修复: 模型停用无效根因 + 上下文归位/压缩守卫
- 模型停用无效根因: get_active_provider 两条路径均不校验 enabled(显式活跃直返/默认只挑 is_default) → 收敛为启用集合解析,无启用 provider 明确报错 - 压缩/标题兜底模型不校验 enabled → 新增 resolve_fallback_model 纯函数(title 复用同一实现,单一源无双轨) - 上下文多夹层归位修复: gather_tool_responses 聚拢该头全部响应(此前第二个夹层之后的响应仍被判未闭合剥除) - 压缩后台任务加内容版本哨兵(取首条消息 id,否掉 len:压缩期间 loop 正常 append 会致守卫永不生效) + panic 兜底复位标志 - 902 超时类失败与其它 Fatal 区分停靠文案(点继续可续跑) - 子代理事件按 conv 改挂(route_scope) + 运行期事件推父会话视图 - 飞书 13a 真根因: run_stream_refresher 死代码(提前 drop)+静默钟被心跳重置 → 帧通道+仅内容事件重置 - 项目详情文件查看: F22 目录不存在误显非 Git 仓库 / F24 模块为仓库子目录时 git 徽标全失效(scope_git_path 按 show-prefix 剥前缀) - 更新徽章通道错配(Tauri 事件 vs window CustomEvent 同名不同通道,徽章此前永不触发) - ProjectCard 卡片根 keydown 顶替内嵌按钮(补 e.target 守卫) - i18n 坏键 ai.aiTool.rejectedHint → aiTool.rejectedHint(双缺会渲染裸 key) - miniapp 三处: 会话列表刷新漏网/看门狗节流致新一轮无兜底/newConversation 漏清看门狗
This commit is contained in:
@@ -18,7 +18,7 @@ import { aiApi } from '@/api'
|
||||
import { state } from '@/stores/ai'
|
||||
import { t } from '@/i18n/i18n-helpers'
|
||||
import { resetStreamWatchdog, clearStreamWatchdog } from './useAiStream'
|
||||
import { findToolCall, removePendingApprovalById } from './aiShared'
|
||||
import { bumpToolEpoch, findToolCall, removePendingApprovalById } from './aiShared'
|
||||
import { dispatchApprovalIPC } from './useToolApproval'
|
||||
|
||||
/**
|
||||
@@ -87,7 +87,7 @@ async function approveToolCall(toolCallId: string, approved: boolean, decision?:
|
||||
tc.status = isDeny ? 'rejected' : 'running'
|
||||
}
|
||||
if (isDeny) {
|
||||
tc.result = t('ai.aiTool.rejectedHint')
|
||||
tc.result = t('aiTool.rejectedHint')
|
||||
}
|
||||
}
|
||||
// 同步从待审批集合移除(含 per-conv 集合;不等后端 AiApprovalResult 事件来移,防 loading 卡死)
|
||||
@@ -108,6 +108,7 @@ async function approveToolCall(toolCallId: string, approved: boolean, decision?:
|
||||
if (tc) {
|
||||
tc.status = 'completed'
|
||||
tc.result = t('ai.approvalNotDelivered', { error: errMsg })
|
||||
bumpToolEpoch()
|
||||
}
|
||||
throw e
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user