优化: 知识检索同项目加权与拒绝池
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user