jonah791/dsh-session-eject

jonah791★ 1TypeScript最后同步: 2026-08-21

在 GitHub 打开

README 摘要

dsh-session-eject — 会话应急删帧插件 2026-08-18 主人需求开发:模型走第三方服务有外部审核,会话上下文一旦混入敏感内容,整个会话将因审核无法使用。本插件把「近几帧」从会话事件流中物理删除,重启后模型上下文不再包含被删内容。 能力 工具 用途 session eject recent 删除会话最近 N 帧(DSH step 粒度),物理重写 session.jsonl.zstd + 清理派生缓存 session eject status 删前诊断:目标会话、step 帧总数、事件行规模、自动触发状态 自动面:监听 llm/stream 瀑布,捕获 provider 审核类错误(content policy / moderation / 敏感 等特征词)→ 自动删最近 autoFrames 帧 → 正常退出(watch 守护拉起,会话重载后上下文干净)。 工作原理(实测验证) - 会话 = 事件溯源日志 sessions/ --/ /session.jsonl.zstd (zstd 多帧容器:header 一帧 + 每批事件一帧) - 平台持久层只提供 append (无删事件 API),但加载器只扫描完整 JSONL 记录并容忍 torn tail—— 物理重写文件是平台可接受的修复方式 - 删帧按 step/start 边界定位:删最近 N 帧 = 保留到「倒数第 N 个 step 起始 seq」之前的全部事件(含该 step 的 chunk / 工具调用链) - 重写保持原始行(含 packChunks 存储行 text-chunks 等),布局不变字节兼容;header 帧原样保留 - 派生缓存 storages/session projcache.json 按会话+seq 版本键控,删帧后同步删除该会话条目,否则增量投影不一致 使用 1. 诊断:爱丽丝调 session eject status 确认目标会话与帧数 2. 删除: session eject recent { frames: 2, sessionId?: ..., dryRun?: true, reason: "..." } - dryRun: true 先预览(不落盘) - 执行后需重启 web 生效:爱丽丝随后调 daemon restart (自动面则自行正常退出由守护拉起) 3. 自动面:配置 autoTrigger 开启后无需人工干预; maxAutoTriggers 防误触发循环(超限暂停自动面 10 分钟) 配置 边界与注意 - 「一帧」= 一个 step(一次完整思考+工具调用链);一帧内 chunk 存储行不可分割,整帧保留/删除 - 删除是物理删除,不留痕迹;不可恢复(如无备份请谨慎) - 工具执行时若目标文件正被持久化 writer 写…

在 GitHub 查看完整 README →
工具/开发dsh-plugin

分类