Repository navigation
dsh-session-eater v0.6.0
这一版把「吃不了」这件事说清楚了:拖到不能吃的会话时,当场在鱼头上给出红色 + 原因
(以前只有屏幕底部一条容易被漏看的回执,像"点了没反应");删除前那句询问也精简成只问一句,
并把这条会话烧掉多少 token 写进去了。
-
修复:拖"正在聊的这个会话"上来时不再像"点了没反应"。以前只拦在松手那一刻,
而且提示只出现在屏幕底部那条约 6 秒的 toast 上 —— 眼睛盯着左上角的鱼,很容易漏掉。
现在拒绝是就地给出的:- 拖到鱼头上还没松手,投放区就变红、那行字直接写原因(「别喂正在聊的这个会话」),
鱼闭着嘴(不摆出要吃的张嘴样子,"没反应"和"在犹豫"不再分不清); - 松手时整块晃两下、停在红色状态约 1.8 秒,底部再补一条 toast(双通道);
- 判定逻辑收拢成
refusalOf()一处,dragover与drop共用,不再有重复的拦截分支。 - 空白会话走同一套拒绝 UI(同样是红色 + 写明「空白会话不用清理…」+ 闭嘴)。
- 宿主回 409「会话还在跑」也走同一套就地拒绝。以前它落进普通失败分支,弹的是
「没吃下去:该会话正在运行…」,看着像插件出错;其实这条和前两条一样只是"此刻不能吃"。
现在客户端保留宿主给的code(session-running)并路由到同一个refuse():
红色投放区 + 「会话还在跑,先停下来再喂」+ 鱼闭嘴摇头,1.8 秒后自动归位。
可改文案 17 段(新增「会话还在跑」这条)。
- 拖到鱼头上还没松手,投放区就变红、那行字直接写原因(「别喂正在聊的这个会话」),
-
新增:删除前确认会写出这个会话消耗了多少 token,而且只问一句:
「消耗了1.2Mtoken,真的给我吃吗?」—— 不列会话名、不写轮数与缓存命中率
(弹窗正文只有"询问语 + 按钮行"两个元素,最小化打断)。- 确认期间大肥鱼张着嘴不动、脑袋慢慢点、腮红亮着(
data-eager),一副"快给我吃"的
渴望表情;跟悬停时那种咀嚼dse-chew明确区分 —— 这里是静止张开(animation:none)。 - token 数来自内核自己的会话投影缓存(
storages/session_projcache/sessions/<id>.json的
tokenUsage.totals),与界面同源。特意不去解session.v3.jsonl.zstd—— 那是多帧 zstd
(5MB 的会话要解出 19MB 文本、花 300ms),而且里面data.usage是「每轮一条、上下文递增」的,
求和会算出 5 亿这种荒谬值(正确读法是取最后一条,还得自己拼 4 个 bucket)。 - 总量 = 未缓存输入 + 输出 + 缓存读 + 缓存写;读不到时(空白会话 / 投影还没生成)退回
不带数字的「真的给我吃吗?」,不写"未知"。 - 宿主新增
POST /usage(读的是小 JSON,几十毫秒);客户端在 drop 时 await 一次并缓存。 - 可改文案 15 段 → 17 段:新增「确认弹窗标题(带用量)」(里面的
{tokens}会被替换成实际用量)
与「拒绝:会话还在跑」。
- 确认期间大肥鱼张着嘴不动、脑袋慢慢点、腮红亮着(