DSH 官方支持会话归档,但不提供查看归档列表、关闭内存中的会话、取消归档或删除归档会话的途径。这个插件填补了这一操作缺口。
功能¶
- 浏览归档会话:列出归档集中的会话,显示标题、会话 ID、工作区路径、创建时间、运行状态以及日志路径。
- 无重启关闭会话:使用
archived_session_close将空闲的内存会话分离并持久化,无需重启 DSH。 - 取消归档:将会话从归档集中移除,使其重新出现在侧边栏中。
- 删除归档:在明确确认后,物理删除会话日志目录。
- 设置 UI:在 DSH Web 设置中提供独立的“Archived Sessions”管理页面。
- HTTP API:提供简单的 JSON 端点,便于自动化操作。
安装¶
前置条件¶
- 已安装 DSH,命令行可执行
dsh。 - 如果需要从源码构建,需要 Node.js 和 npm。
安装步骤¶
- 下载或构建插件包(建议使用发布版本)。
- 执行安装命令:
dsh plugin --profile web add dsh-external-dsh-archive-session-0.0.9.tgz
- 安装完成后,重启 DSH 服务。
用法¶
Agent 工具¶
| 工具 | 描述 |
|---|---|
archived_sessions_list |
列出仍指向真实会话的归档会话。 |
archived_session_close |
关闭空闲的内存归档会话(刷新并分离),无需重启。 |
archived_session_unarchive |
将会话从归档集中移除,使其可通过常规 UI 访问。 |
archived_session_delete |
彻底删除归档会话。需要参数 confirm: true。 |
HTTP API¶
插件宿主在 /dsh-archive-session/api 路径下。
| 方法 | 路径 | Body | 描述 |
|---|---|---|---|
| GET | /archived |
- | 列出归档会话。 |
| POST | /close |
{ "sessionId": "..." } |
关闭空闲的内存会话。 |
| POST | /unarchive |
{ "sessionId": "..." } |
取消归档会话。 |
| POST | /delete |
{ "sessionId": "...", "confirm": true } |
删除归档会话。 |
注意事项¶
- 删除前必须关闭:DSH 在对话结束后仍会将会话对象保留在内存中。若要删除处于“运行/空闲”状态的会话,必须先使用
archived_session_close将其持久化,或重启 DSH。 - 取消归档以管理:归档会话默认在侧边栏中隐藏。若需通过常规 UI 打开、关闭或恢复会话,需使用
archived_session_unarchive。 - 忽略过期 ID:如果归档 ID 不再指向真实的会话日志,该 ID 会被忽略。
- 后端限制:删除功能仅支持 JSONL 持久化后端(路径通常为
~/.dsh/sessions)。SQLite 后端会被拒绝,因为 DSH 未提供公开的删除 API。