优化: 知识检索同项目加权与拒绝池

This commit is contained in:
lxy
2026-10-05 23:41:27 +08:00
parent 0f3c3ce1aa
commit 9e81182b4f
9 changed files with 387 additions and 22 deletions
+12 -1
View File
@@ -31,6 +31,11 @@ import { setContextCallbacks } from './useAiEvents'
// 若需 per-window 独立压缩态需改为事件同步/inject-provide,改造成本大,暂不处理。
const isCompressing = ref(false)
// B4 自动压缩可见信号:AiAutoCompressed 到达时置 true,4s 后自灭。输入区 hint 行消费,
// 长会话用户对「上下文何时被压缩」有一次性感知(不打断 LLM 流,不弹 toast)。
const autoCompressedFlash = ref(false)
let autoCompressedFlashTimer: ReturnType<typeof setTimeout> | null = null
/**
* 注入上下文生命周期回调到统一事件分发器(幂等)。
*
@@ -49,8 +54,12 @@ async function initContextListener(callbacks: {
callbacks.onCompressed?.(convId, summary)
},
onAutoCompressed: () => {
// loop 自动压缩静默——仅复位 loading(冗余兜底,Auto 路径前端 loading 本就 false)
// loop 自动压缩:B4 可见信号——置 flash(输入区 hint 行短暂显示「上下文已自动压缩」),
// 4s 自灭;仍不弹 toast、不刷新视图(不打断 LLM 流,消息本就可见非折叠困惑)。
isCompressing.value = false
autoCompressedFlash.value = true
if (autoCompressedFlashTimer) clearTimeout(autoCompressedFlashTimer)
autoCompressedFlashTimer = setTimeout(() => { autoCompressedFlash.value = false }, 4000)
},
onCleared: (convId) => callbacks.onCleared?.(convId),
onError: (convId, message) => {
@@ -108,6 +117,8 @@ export function useAiContext() {
return {
// 状态
isCompressing,
// B4: 自动压缩完成一次性可见信号(输入区 hint 行消费,4s 自灭)
autoCompressedFlash,
// 操作
clearContext,
compressContext,