拖拽移动、彻底删除并让 AI 总结对话重命名会话
36.2/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库缺少 package.json,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/reinocheong/dsh-session-move.git按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 52 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库缺少 package.json,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-session-move(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/9 15:22:29
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 取源不可用(Error: github tarball HTTP 404 @ https:
- · api.github.com
- · repos
- · reinocheong
- · dsh-session-move
- · tarball)
扫描于 2026/11/3(0 天前)
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/dsh-session-title-llm@deepseek-ai/dsh-session-title@deepseek-ai/dsh-timeout给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 拖拽移动会话
- 永久删除会话
- AI总结后重命名
在 Web UI 里管理 DeepSeek Harness 会话:拖拽或菜单移到其他文件夹、永久删除、AI 总结对话后重命名,还带智能体工具。
README
由 DeepSeek 最新模型翻译生成dsh-session-move
GitHub stars
License: MIT
Awesome DSH Plugin
在 DeepSeek Harness 网页界面里管理会话 —— 移动、删除、AI 重命名,支持拖拽。
面向 DeepSeek Harness (dsh) 的双端插件(宿主 + 浏览器)。补齐官方界面缺失的能力:
| 功能 | 官方 dsh | 安装本插件后 |
| 把会话移动到别的文件夹(workspace) | ❌ 会话被锁定在创建时的文件夹里 | ✅ 拖拽 或 菜单 → 选择弹窗 |
| 彻底删除会话 | ❌ 只有归档(隐藏,记录仍在磁盘) | ✅ 菜单 → 风险确认弹窗 → 完整删除 |
| AI 重命名会话 | ⚠️ 有自动标题,但只根据第一条消息 | ✅ 一键:LLM 总结整个对话生成标题 |
每个功能同时提供 agent 工具(workbench_session_move、workbench_session_delete、workbench_session_rename_ai),让 agent 也能帮你整理会话。
展开完整文档(README 剩余 1 节)
dsh-session-move
GitHub stars
License: MIT
Awesome DSH Plugin
在 DeepSeek Harness 网页界面里管理会话 —— 移动、删除、AI 重命名,支持拖拽。
面向 DeepSeek Harness (dsh) 的双端插件(宿主 + 浏览器)。补齐官方界面缺失的能力:
| 功能 | 官方 dsh | 安装本插件后 |
| 把会话移动到别的文件夹(workspace) | ❌ 会话被锁定在创建时的文件夹里 | ✅ 拖拽 或 菜单 → 选择弹窗 |
| 彻底删除会话 | ❌ 只有归档(隐藏,记录仍在磁盘) | ✅ 菜单 → 风险确认弹窗 → 完整删除 |
| AI 重命名会话 | ⚠️ 有自动标题,但只根据第一条消息 | ✅ 一键:LLM 总结整个对话生成标题 |
每个功能同时提供 agent 工具(workbench_session_move、workbench_session_delete、workbench_session_rename_ai),让 agent 也能帮你整理会话。
安装
从 GitHub 安装(发布到 npm 前的推荐方式)
dsh plugin --profile web add https://github.com/reinocheong/dsh-session-move/archive/refs/tags/v0.1.5.tar.gz
重启 profile 使插件生效:
systemd 托管的安装
sudo systemctl restart dsh
手动安装说明(把包复制到 ~/.dsh/profiles/node_modules/ 自己装时):必须在 profile 的 cordis.patch.yml 里手动注册:
- insert:
- id: session-move
name: dsh-session-move
dsh plugin add 会自动完成这一步。
使用方法
🗂 把会话移动到别的文件夹
拖拽 — 按住侧边栏里任意会话行,拖到另一个文件夹标题上。悬停时目标文件夹会高亮,松手即移动。
菜单 — 打开会话的 ... 菜单 → 移动到文件夹… → 选择目标文件夹 → 确认。
移动会连带改变会话的工作目录:改写会话 header 里的 cwd、把持久化日志移到目标文件夹的存储目录、更新 workspace 记账 —— 历史记录随会话一起走,移动后会话继续在新目录下工作。
🗑 删除会话
打开会话的 ... 菜单 → 删除会话 → 勾选「我已了解后果」→ 确认。
删除是完整且永久的:先停止运行中的 agent,再删除日志目录、投影缓存行和 workspace 记账。不会残留成「未分组」的孤儿记录。
✨ AI 重命名
打开会话的 ... 菜单 → AI 重命名 — LLM 阅读整个对话的均匀采样(控制 token 预算内覆盖全时间线),自动纠正错别字,用对话本身的语言生成简洁标题。
默认使用会话自身的模型路由。要固定别的 provider/model,配置插件行:
- id: session-move
name: dsh-session-move
config:
renameAi:
provider: deepseek-official
model: deepseek-v4-flash
targetWords: 6
targetCjkCharacters: 14
maxInputBytes: 8192
maxOutputTokens: 96
timeoutMs: 60000
Agent 工具
| 工具 | 说明 |
| workbench_session_move | 把会话移动到另一个 workspace(按 session id + workspace id)。 |
| workbench_session_delete | 永久删除一个会话。 |
| workbench_session_rename_ai | AI 重命名一个会话。 |
HTTP 端点
这些端点支撑 UI,也可直接调用:
| 端点 | 方法 | 请求体 | 返回 |
| /__sessionmove/info | GET | — | 所有 workspace + 会话当前所在 workspace |
| /__sessionmove/move | POST | { sessionId, workspaceId } | 移动结果(旧/新 cwd、workspace id、agentReleased) |
| /__sessionmove/delete | POST | { sessionId } | 删除了什么 |
| /__sessionmove/rename-ai | POST | { sessionId } | 新标题 |
实现原理(简述)
dsh 的「文件夹」(workspace)不是随意归类的容器。会话属于哪个文件夹,由会话的工作目录(cwd)决定——cwd 冻结在会话日志(zstd 压缩)的 header 行里。因此移动会话意味着:
1. 停止/刷新运行中的 agent;
2. 把 header 行的 cwd 改写为目标文件夹路径(解压第一个 zstd 帧 → 改 JSON → 重压 → 尾部帧逐字节保留);
3. 把日志目录物理移动到目标文件夹的存储 slug;
4. 通过 workspace registry 从旧 workspace 摘除、挂到新 workspace(同时刷新内存索引,UI 即时更新,无需重启)。
所有存储变更都经由 dsh 自身的 storageDomain,内存与磁盘保持一致,不会留下半挂账的记录。
可靠性(v0.1.5)
会话 id 定位的四条匹配路径现已统一使用相同的安全标准:
- 所有标题匹配路径一律「唯一才接受」。 v0.1.4 只给最后一条 displayTitle 兜底路径加了唯一性校验;前两条更高优先级的路径(精确 s.title 匹配与去 fork 后缀的 s.title 匹配)仍静默返回第一条命中。而当前 profile 里恰好有两条普通会话持有完全相同的持久标题「开始 Gyden OS WebUI 设计治理」——缺失的校验不是理论风险。现在四条路径共用同一个 uniqueBy(pick, wantText) 辅助函数:只在命中唯一时操作;歧义时报「找不到」且序列号为空。对于标题重复的极少数情况(主要出现在 subagent 会话中,普通会话极少),插件不再猜测——选择「报找不到」而不是静默删错会话。
- fiber 降级现在有明确日志。 readSessionIdFromRow 的三个失败分支各写入一条 console.warn([dsh-session-move] …),让 DSH 换掉 React 内部结构时的操作员能立即从 DevTools 发现降级,而不是静默退回标题匹配。
可靠性(v0.1.4)
没有持久标题的会话现在也能正常操作 —— 此前这类会话根本无法删除:
- 改为从 React fiber 树读取该行的真实 session id。 侧栏会话行只把 id 放在 React prop(node.id)里,DOM 上没有任何属性携带它。插件原先抓行的显示文本,再拿去比 SessionSummary.title,而该字段是可选的,host 投影出持久标题前一直是 undefined。于是每一条无标题会话(含空会话)都解析不出来:弹窗报「未能在会话列表中找到该会话」,确认按钮无论怎么勾选都是禁用的。现在从 row.__reactFiber$… 向上取 memoizedProps.node.id(按 session id 的形状校验)—— 这也正是官方行在拖拽 dragstart 时写进 dataTransfer 的同一个值。
- 标题匹配保留为有护栏的兜底。 fiber 读取失败时,退回按人读标签 displayTitle(与 title 不同,它永远有值)匹配,且只在命中唯一时才接受。同一目录下的多条无标题会话会共用同一个 cwd 目录名作为显示标签,猜错就会作用到错误的会话上 —— 删除不可逆 —— 因此歧义匹配一律按「找不到」处理,绝不猜测。
可靠性(v0.1.3)
本次修复两个会让 AI 重命名对话框永久转圈的缺陷:
- 无限「发起→中止」循环(客户端) —— 重命名的 effect 调用了 setBusy(true),而 busy 仍留在依赖数组里。React 因此会在每次状态变化时执行上一次 effect 的 cleanup,把刚发出的 fetch 中止掉;被中止的请求又把 busy 置回 false,循环重启。表现为转圈永不停、永不成功、也永不报错。现在 effect 用按 session id 记录的 startedRef 做护栏,依赖数组只留 target,每次重命名只发出一个请求。
- timeoutMs 声明了却从未生效(服务端) —— AI_RENAME_DEFAULTS 声明了 timeoutMs: 60000,但传给流的是永不触发的 new AbortController().signal,provider 卡住时整个 HTTP 请求会永久挂起。现在用 @deepseek-ai/dsh-timeout 的 deadline(request.signal, config.timeoutMs, ...) 包住整条流 —— 与官方 dsh-session-title-llm 提供方同一写法 —— 文档里写的超时终于真实生效。
- 结果存得住、看得见(客户端) —— 会话列表刷新从请求回调移到了对话框的关闭路径。在请求中途刷新会让对话框重新挂载、清空状态,导致明明已经改成功的重命名看不到任何确认。
可靠性(v0.1.2)
移动会把会话位置的每一处记录都同步到位——不止 header 和日志目录:
- 投影缓存——会话在投影缓存(session_projcache)里的 identity.cwd 会跟着移动更新,web 会话列表立刻解析到正确的存储 slug(冷会话不再 ENOENT,移动后不再留下「未分组」残留)。
- 启动对账——插件启动时会审计每一条投影缓存记录与磁盘 header 是否一致,修复历史上半途移动或手动整理留下的陈旧 identity.cwd,让列表首屏就显示真实会话标题,而不是文件夹占位名。
- 活会话——移动时如果会话正加载在内存中,其 header 是冻结的快照;插件会先从 live agents store 摘除再挂到目标工作区,挂载校验不会读到过期的 cwd(这正是「物理移动成功却掉进未分组」的根因)。
- 运行中的会话(v0.1.2 修复)——移动正在执行任务的会话时,除了取消当前回合,还会从 agents 注册表释放 agent(发出 agent/disposed)。这是关键:dsh 的 agent 工厂在重建会话前会等待「session 与 agent 双双离开注册表」(waitForDrainingConfiguredIdentity 监听 session/disposed 和 agent/disposed);只取消回合而不释放 agent,等待会永远挂起,移动后的会话无法重新打开/恢复(表现为「能打字、只有提示音、没有回复」)。客户端在移动成功后也会无感重载被移动的会话视图——移动会把当前会话实例标记为 removed(输入框变成「会话不可用」),且该标志无法原位清除:插件会先切换到另一个会话(此时被移会话尚未重新入列,sweepDeferred 会真正销毁其陈旧 scope),刷新列表后再切回,从新位置冷加载重建(历史完整、输入框立即可用),整个过程只需约几百毫秒、无整页刷新;任何一步失败则自动整页刷新兜底,绝不会卡在「会话不可用」。
每个修复都是 fail-soft:修不了就记一条 warning、保持原状,绝不损坏数据。
性能与资源占用
插件刻意保持轻量:
- 零运行时依赖 — 只用 Node 内置模块 + dsh 自带的包(dsh-tools、dsh-llm、dsh-session-title、dsh-session-title-llm、dsh-timeout),不新增任何安装。
- 无后台任务 — 没有定时器、轮询或常驻连接。移动/删除/重命名都是纯请求驱动:请求处理期间才干活,其余时间完全空闲。
- 体积小 — 整个插件源码约 100KB,驻留内存相对于运行中的 dsh 进程可忽略。
- 操作快 — 无状态端点响应约 1ms(如 /__sessionmove/info);唯一可能稍慢的是 AI 重命名,它按需调用一次 LLM(几秒钟,超时可配置),平时绝不运行。
- 客户端开销小 — 一个 DOM 观察器 + 三个弹窗组件(仅在打开时渲染),空闲时浏览器端零运行成本。
环境要求
- Node.js >=22.19.0(与 package.json engines 一致)
- dsh 0.1.0-rc.6 或更新版本
- AI 重命名需要官方 @deepseek-ai/dsh-session-title / @deepseek-ai/dsh-session-title-llm 包(dsh 自带)
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
reinocheong/dsh-session-move
拖拽移动、彻底删除并让 AI 总结对话重命名会话
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目