• v2.0.1 b977f57fa4

    v2.0.1 发布说明

    pyh released this 2026-09-30 17:03:23 +08:00 | 3 commits to main since this release

    这是仓库历史重写后的第一个标签。此前的提交历史(含被重写的 v1.0.0–v2.0.0 标签与若干中间提交)已按作者要求删除,本标签指向唯一的一个提交,包含插件的完整当前状态。

    给会话加上真正不可逆的删除:停止会话、删除会话日志目录(保留 session.lock)、删除全部子智能体会话的日志与工具输出溢出文件、清理工作区登记项,并向已连接的页面广播 api-session/removed。

    另一处功能是清理 spill 后端留下的孤儿临时目录:设置 → 插件 → 会话彻底删除,占用 plugins.row.config 槽位,与官方插件「终端」的配置页同一位置。

    • 会话行右侧「…」菜单 → 删除会话
    • 会话行悬停区的删除按钮(在官方「归档」「置顶」之前)

    两者都先弹确认框,复刻系统 Modal 的样式与键盘行为(Esc 关闭、Tab 焦点圈定、打开时焦点进入、关闭后焦点归位)。

    • 仍在运行的会话无法从内存移除:先归档并停止,日志与溢出文件在下次启动 DSH 时删除;在此之前取消归档即取消这次删除。

    • 删除不可恢复,但不是安全擦除。

    • 工作区里的代码文件不受影响。

    • 有意不处理附件对象(按内容寻址、无引用计数)与投影缓存(派生且带生命周期身份校验)。

    • 行内按钮的悬停气泡由按钮自身定位;指针停在会话行时可能与行自己的悬停预览卡同时出现,插件不会去动宿主的行 DOM。

    • 插件页注册在 plugins.row.config,key 为 <包名>#<行 id>(@dsh-plugin/session-delete#session-delete),因此无需声明插件 Config 也能有自己的页面。

    • 跨半边通信用 connection.fetch 注册的 POST /api/plugin/session-delete/delete 与 .../orphans 两条受认证路由,浏览器半用文档相对路径请求以支持挂载前缀。

    • 宿主半只依赖稳定服务契约:sessionQuery(traceSession 取血缘、listSessions 取语料)、sessionPersistence(含 JSONL 后端的 locate() 诊断钩子)、workspaceRegistry、connection.fetch。

    • 浏览器半不 import 任何 Harness 客户端包,只引用 --dsw-* 主题 token,且不读写宿主 DOM。

    • 延迟删除台账只记录树根:启动清扫以根为单位整棵删除,记录子会话会导致重复删除与重复广播。

    https://gitea.iwake.top/dsh-plugin/session-delete.git#v2.0.1
    

    跟随 2.x 用 #semver:^2.0.1。宿主半变更需要重启 DSH;本地 link: 安装时刷新页面看不到改动,需要移除再重装让 profile 重新取一份。

    • 基于 DeepSeek Harness 0.2.0-rc.2 编写,其它版本与平台组合未逐一验证。
    • 上游若改动 dsh-client-ui-primitives 的内部结构,界面细节(例如悬停气泡)可能失配,但不会导致插件加载失败。
    Downloads