fix(bridge): 不再抢写 snapshot.json(会把别的会话串进浮窗);镜像缓存深度 40→80
实测串台:插件 tick 一停顿,桥就把另一个会话的 40 行写进 snapshot.json,浮窗显示成别人的对话。 现在桥只写 snapshot-bridge.json,浮窗按 sessionId 匹配后才用它补缺字段,永远不会串会话。 镜像缓存每会话保留 80 行(原来 40),仍然每 3 秒落盘一次。
This commit is contained in:
@@ -236,15 +236,10 @@ function writeSnapshot() {
|
||||
const snap = buildSnapshot()
|
||||
if (!snap) return
|
||||
fs.mkdirSync(STATE_DIR, { recursive: true })
|
||||
// 兜底文件总是写:插件缺的字段(token/上下文估算、标题)由浮窗用它补齐
|
||||
// 只写兜底文件:snapshot.json 是插件的"正本"。桥去写它会把**别的会话**塞给浮窗(实测串台过:
|
||||
// 插件 tick 一停顿,桥就把另一个会话的 40 行写了进去)。浮窗按 sessionId 匹配后再用它补缺字段。
|
||||
fs.writeFileSync(SNAPSHOT_BRIDGE, JSON.stringify(snap))
|
||||
// 插件在写就不抢 snapshot.json:mtime 3 秒内视为它的
|
||||
try {
|
||||
const st = fs.statSync(SNAPSHOT)
|
||||
if (Date.now() - st.mtimeMs < 3000 && readJson(SNAPSHOT)?.source !== 'mirror-bridge') return
|
||||
} catch { }
|
||||
fs.writeFileSync(SNAPSHOT, JSON.stringify(snap))
|
||||
log(`snapshot: ${snap.sessionId} "${(snap.title || '').slice(0, 24)}" turns=${snap.metrics.turns} steps=${snap.metrics.steps} rows=${snap.messages.length} ctx=${snap.metrics.contextUsed == null ? '-' : Math.round(snap.metrics.contextUsed * 100) + '%'}`)
|
||||
log(`bridge: ${snap.sessionId} "${(snap.title || '').slice(0, 20)}" rows=${snap.messages.length} cache=${snap.metrics.cacheHit == null ? '-' : Math.round(snap.metrics.cacheHit * 100) + '%'}`)
|
||||
} catch (e) { log('write failed:', String(e?.message || e)) }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user