前言¶
DeepSeek Harness(dsh)的 Web 工作台里,会话默认绑定在创建时所在的工作目录(文件夹)上;侧栏只能归档,不能把会话迁到其他 workspace,也无法从磁盘上彻底删掉。会话标题往往只反映首条消息,长对话后很难从列表里一眼认出内容。若你经常在多个项目目录间切换、或希望 Agent 也能整理会话,官方 UI 会缺这几块能力。
下面介绍社区插件 dsh-session-move(维护者 hwangjunjie,分类:客户端):在浏览器端补全「跨文件夹移动」「永久删除」「整段对话 AI 重命名」,并把同一套能力暴露给 Agent 工具与 HTTP 接口。
这是什么¶
dsh-session-move 是面向 DeepSeek Harness 的双端插件(host + browser),在 Web UI 中管理会话:拖拽或菜单把会话移到另一个文件夹、经确认后永久删除、以及用 LLM 根据整段对话生成标题。与官方行为对比如下(摘自插件 README):
| 能力 | 官方 dsh | 安装本插件后 |
|---|---|---|
| 将会话移到另一文件夹(workspace) | 会话锁定在创建目录 | 支持拖拽或菜单选择目标文件夹 |
| 永久删除会话 | 仅归档(隐藏,未真正删除) | 菜单确认后完整移除 |
| AI 重命名 | 自动标题多来自首条消息 | 一键:LLM 采样整段对话后生成 concise 标题 |
每项能力还对应 Agent 工具,便于自动化整理会话。
核心功能¶
移动会话¶
- 拖拽:在侧栏抓住某条会话,拖到另一文件夹标题上;悬停时目标高亮,松手即移动。
- 菜单:会话
...→ Move to folder… → 选择目标 → 确认。
移动会改写会话工作目录:更新会话头中的 cwd,把持久化日志迁到目标文件夹的 storage slug,并更新 workspace 记账;历史随会话一起走,之后在新目录下继续可用。
永久删除¶
会话 ... → Delete session → 勾选理解后果 → 确认。会先停止正在运行的 Agent,再移除日志目录、projection-cache 行与 workspace 记账,不会留在「未分组」里。
AI 重命名¶
会话 ... → AI Rename。LLM 在 token 预算内对整段对话做代表性采样,修正笔误并生成与对话语言一致的短标题。默认 timeoutMs 为 60 秒,运行中可取消;按钮在 Cancel(进行中)与 Done(完成)之间切换。
路由:若在插件配置里固定 renameAi.provider 与 renameAi.model,优先使用该路由;否则使用各会话最近一次请求的路由,失败或超时会 failover。可在 profile 的插件行中配置,例如:
- 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 |
按 session id + workspace id 移动会话 |
workbench_session_delete |
永久删除会话 |
workbench_session_rename_ai |
AI 重命名会话 |
HTTP 接口(供 UI 或直接调用)¶
| 路径 | 方法 | Body | 返回 |
|---|---|---|---|
/__sessionmove/info |
GET | — | 全部 workspace 及会话当前 workspace |
/__sessionmove/move |
POST | { sessionId, workspaceId } |
移动结果(旧/新 cwd、workspace id、agentReleased 等) |
/__sessionmove/delete |
POST | { sessionId } |
已移除内容 |
/__sessionmove/rename-ai |
POST | { sessionId } |
新标题 |
/__sessionmove/rename-ai-cancel |
POST | { sessionId } |
{ ok, cancelled },中止进行中的 AI 重命名 |
安装与启用¶
插件要求 Node >=22.19.0、dsh >=0.1.0-rc.6(见 package.json)。安装命令以 README 原文为准:
# from GitHub (recommended until published to npm)
dsh plugin --profile web add https://github.com/reinocheong/dsh-session-move/archive/refs/tags/v0.1.2.tar.gz
加载插件需重启对应 profile,例如 systemd 部署:
# systemd-managed installs
sudo systemctl restart dsh
若手动把包拷到 ~/.dsh/profiles/node_modules/,还需在 profile 的 cordis.patch.yml 中注册(dsh plugin add 会自动完成):
- insert:
- id: session-move
name: dsh-session-move
许可证:MIT。
典型用法小结¶
- 安装并重启 dsh Web profile。
- 在侧栏用拖拽或 Move to folder… 把会话迁到目标项目文件夹。
- 需要清理时用 Delete session 做永久删除(勿与官方归档混淆)。
- 长对话列表难辨时,用 AI Rename;需要固定模型时在
cordis.patch.yml的插件config.renameAi中配置。 - 在 Agent 流程中调用
workbench_session_move/workbench_session_delete/workbench_session_rename_ai做批量或脚本化整理。
移动的实现会同步 header cwd、日志目录、projection cache 与 workspace 注册表;对正在执行任务的会话,v0.1.2 起会释放 Agent 注册,避免移动后无法重新打开或续聊。细节见插件 README 的 “How it works” 与 Reliability 小节。
适用场景与注意¶
适合:在多 workspace / 多目录间整理 dsh 会话的开发者;希望彻底删除误开会话或归档仍占存储的场景;需要基于整段对话生成侧栏标题;或让 Agent 代为移动、删除、重命名会话。
注意:
- 插件与当前 dsh 进程同权限运行,安装前请自行审阅 GitHub 源码 与 MIT 许可证。
- 永久删除不可恢复,操作前确认会话 ID 与目录。
- AI 重命名依赖已配置的 LLM 路由与网络;超时或失败会尝试 failover。
- 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件为社区贡献的客户端能力扩展。
结尾¶
dsh-session-move 把官方 Web UI 未覆盖的会话迁移、真删除和整对话 AI 标题补到侧栏与 Agent 工具里,适合日常多项目使用 dsh 时保持侧栏整洁。更多信息见 SkillHub 目录页 与 GitHub 仓库。