You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Exporting ONE session decodes EVERY persisted session (loadAll) — multi-long-session machines OOM the documented handoff workaround | 导出单个会话会解码存储里的全部会话(loadAll)——多长寿会话机器上官方交接手段 OOM 崩溃 #5062
Activity
ranxianglei commentedon Oct 28, 2026
(ai: vllm-qwen/qwen3.8-27b)
查重: 不重复。 open+closed 按 export/OOM/loadAll/heap/handoff 多组关键词检索,无同机制条目。最接近的 #4750(bound ordinary session loads)是「单次加载体积上限/惰性字段」机制,与本题「选择环节水化全树」不同失败域;#4247/#4248 是交接文档内容缺失,症状不同。
标签: bug / dsh / scope/storage / p2(有绕行的功能性缺陷——加大堆可能可过,非核心车道可用性停摆;按 issue 建议打标)。
审核三步结论:
src/export.ts:357确认exportSession第一步即const all = [...(await store.loadAll()).values()],与是否给了 selector 无关;而listSessions(同文件 :47)早已走unifiedSessionSummaries()一条 SQL 的快路径(Identity pipeline: key sessions by (agent, conversation id) in the unified store — decouple fold ledgers from protocol/host origin (#2938 / #2847 / #2671 defect-1) #2960 R2.1),选择环节却没复用。issue 描述的机制成立。loadSync(id, meta)只水化一个;legacy/水化失败保留全量扫描+stderr 提示;错误文案不变;回归测试正反双向钉住)。实现中另发现两个同机制面的点,一并处理并在 PR 披露:unifiedSessionSummaries()在 mysql 网络后端上返回[]而非其契约承诺的null(sync facade 的 miss 值),这会让listSessions在健康的 mysql+full 安装上显示空列表——顺手加一行守卫,独立标注 commit;开工计划:分支
2026-10-29_export-single-session-no-loadall,PR 引用 Closes #5062。回归测试:unified 存储放 N 个会话,按 id/label 导出正确且loadAll零调用(原型 spy 钉死);legacy 腿钉住仍走 walk 的回退方向(#3617 门禁纪律正反双向);空库文案、no-match、歧义前缀三处错误文本逐字对齐旧行为。fix(persist): summary facade misses on network backends instead of le…
ranxianglei commentedon Oct 29, 2026
[bot] (ai: vllm-qwen/qwen3.8-27b)
进度汇报:上一会话因一次长时间无响应的操作卡住 30 分钟被强制重启。已从中断现场恢复——工作树里留有一处中断造成的残缺代码(新函数返回了一个不存在的变量,属编译错误),先修复后继续。现已完成开发并开 PR。
PR #5084(Closes #5062):#5084
两个提交:①主修复(src/export.ts + 回归测试);②同机制附带发现(src/persist.ts 一行守卫)。
八问结论:
bili export <id>在导出任意一个会话之前会解码磁盘上全部已持久化会话;持有多个长会话的机器上直接 OOM 崩溃(exit 134),文档化的「坏会话导出 handoff」绕行方案([Bug][dsh-native] turn fails with bare TypeError (reading 'length') host-side before the request reaches the proxy - very long-lived session, intermittent #5026)还没跑起来进程就死了。exportSession无条件先做全量目录扫描+全量解码,再拿选择器去匹配——选一个会话的代价被绑死在「解码所有会话」上。bili export完全不可用(崩溃),但不影响代理主链路、压缩与数据本身。[]而非契约承诺的null,健康 mysql+full 安装上会话列表显示为空——现按契约回退文件扫描。验证:新增回归测试 6/6 绿(双向钉死:full 模式下全量扫描可证明零调用;legacy 模式下可证明仍恰好走一次;含损坏信封不阻塞健康会话的 #5026 场景);既有四个 export 相关套件 16/16 绿;typecheck 干净。全量回归以 CI 为准。
判定:可进入 review/merge(以 CI 绿为最终门禁)。