dsh web 和终端会话互通吗?DeepSeek Harness 网页开会话、终端接力与双开风险

配置与使用发布于 2026-09-24作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH plugindsh web会话管理resume
dsh web、终端应用共用同一个 $DSH_HOME,所以网页里开的会话在终端仍能找到:会话日志以 JSONL 落在 profile 的 sessions 目录。本文讲清会话怎么按 profile 与工作目录归属、终端用 --resume 接力的写法,以及双开同一会话为什么会报 seq gap。

dsh web 和终端用的是同一份会话数据——网页里开的会话,终端能找到;但同一会话不能两边同时开。 判断依据只有一条:它们都指向同一个 $DSH_HOME。本文讲清会话在哪、怎么接力、以及双开为什么会损坏会话。

概览:dsh web 与终端是同一份数据

网页与终端不是两套数据,而是同一份 $DSH_HOME 的两个前端。 会话日志以 JSONL 文件落在 profile 的 sessions 目录里,所以「换个入口继续」这件事本身成立(来源)。真正需要小心的是并发写入:两个实例同时打开同一会话会写出序列缺口,直接损坏会话。

DeepSeek Harness 网页与终端共用同一份会话:$DSH_HOME 是唯一事实源

会话、配置与 DSH插件都放在 $DSH_HOME(默认 ~/.dsh),与启动方式无关,所以 npx 启动的 web、全局安装的 web、终端里的应用看到的是同一批数据。 切换入口不会丢会话,这也是为什么同一个环境里换命令启动后,历史会话还在(来源)。

两个关键归属规则:

  1. 会话归属 profile:每个 profile 有独立的目录与依赖,会话数据跟着 profile 走;
  2. 会话按工作目录分组:项目目录名由会话创建时的工作目录转写而来,形如 --项目路径--;没有工作目录的会话落在 _no-cwd/ 下。

先定位:你的会话文件在哪个目录

定位会话的唯一入口是 profile 的 sessions 目录——先找到它,后面所有操作才有落点。 会话日志以 JSONL 追加文件存储在 profile 数据目录下的会话存储路径,由 session-persistence-jsonl 定义(来源)。

  1. 列出该 profile 的会话目录:
bash
ls -la ~/.dsh/profiles/<profile>/sessions

预期:看到按项目分组的目录(形如 --项目路径--)与其中的会话文件; 2. 确认文件格式,预期:默认是 session.jsonl.zstd(zstd 压缩、带校验);把压缩配置配成 none 时是 session.jsonl; 3. 需要核对内容时先解压再查看,预期:能读到逐条追加的会话事件;不要用编辑器直接改这个文件。

用终端接力 dsh web 里的会话

终端侧应用自带 --resume 参数,把它指向会话 id 就能继续;注意 --resume 属于被启动的应用,不是 dsh 启动器。 官方 CLI README 明确划分了启动器与应用的参数边界(来源)。

  1. 在 Web UI 里找到目标会话,记下它的会话 id;
  2. 用对应 profile 的终端应用接力:
bash
dsh --profile tui --resume <会话 id>      # 前提是已装 tui profile

预期:终端里加载出该会话的历史,可以继续往下对话; 3. 若提示 profile 不存在,说明该终端 profile 尚未创建,预期:先在 Web UI 里把需要的会话内容导出或截图,再决定是否创建对应 profile; 4. 参数写法以你本机 dsh --profile <name> --help 的输出为准,预期:能看到该应用自己声明的 resume 类参数。

别双开同一个 DeepSeek Harness 会话:seq gap 是这么来的

同一会话同时被两个实例打开时,并发追加会写出重叠的序列号,加载时报 seq gap in committed region。 根因是两个进程各用自己内存里的游标追加,JSONL 后端没有跨进程协调(来源)。

  1. 触发条件有两条,叠加后几乎必现:同一个 $DSH_HOME 同时被两个实例打开,且期间有中断的工具调用;
  2. 报错现象,预期:会话打不开,日志报序列缺口;
  3. 规避做法,预期:同一时间只保留一个入口操作同一会话;需要换端时先把当前端停掉(确认没有进程监听 3080),再到另一端打开;
  4. 已经损坏时先备份会话文件再从日志尾部处理,具体步骤见《DeepSeek Harness 会话日志报 seq gap 打不开》。

dsh 归档不等于删除:界面能做的与文件系统能做的

界面里的「归档」只是不显示,真删只能走文件系统。 被归档的会话从 workspace 分组、Ungrouped、内容搜索与平铺列表中消失,但日志文件与 workspace 记账席位都没被改动,而且当前版本界面没有查看或取消归档的入口(来源)。

  1. 只想让它不出现在列表里 → 用归档,预期:列表变干净,数据仍在;
  2. 想真正删除 → 先停掉 dsh:
bash
lsof -i :3080

预期:确认没有进程在监听,再进下一步; 3. 备份后删除目标会话目录,预期:rm -rf "$DSH_HOME/sessions/--<项目>--" 删某个项目;这是不可恢复操作、没有回收站,删前先 cp -r "$DSH_HOME/sessions" "$DSH_HOME/sessions.bak"; 4. 重启 dsh,预期:列表里不再出现这些会话。

dsh 会话越攒越多会拖慢宿主

会话日志只增不减会拖慢会话搜索与启动,建议按项目定期清理(来源)。 判断与清理顺序:

  1. 看体量:du -sh ~/.dsh/profiles/<profile>/sessions,预期:得到占用大小;
  2. 找出大项目目录,预期:定位到已完成项目的会话目录;
  3. 备份 + 清理,预期:搜索与启动恢复轻快,且需要时还能从备份找回。

来源:DeepSeek Harness 官方文档 - Quickstart、dsh CLI README、session-persistence-jsonl

常见问题

在 dsh web 网页里聊的会话,能切到终端用命令继续接着做下去吗?

能——DeepSeek Harness 的网页和终端读的是同一份数据:两者都指向同一个 $DSH_HOME(默认 ~/.dsh),会话日志以 JSONL 落在 profile 的 sessions 目录里。终端侧应用自带 --resume 参数(如 dsh --profile tui --resume 会话 id),web 与终端之间切换不会丢会话内容。

DeepSeek Harness 的会话文件到底存在哪个目录,怎么定位?

DeepSeek Harness 的会话日志以 JSONL 追加文件存储在 profile 数据目录下的会话存储路径,由 session-persistence-jsonl 定义。定位命令是 ls -la ~/.dsh/profiles/<profile>/sessions:默认日志文件是 session.jsonl.zstd(zstd 压缩带校验),把压缩配成 none 时是 session.jsonl,没有工作目录的会话落在 _no-cwd/ 下。

dsh web 和终端能同时打开同一个会话吗?会有什么后果?

不建议——DeepSeek Harness 的会话被两个实例同时打开就会损坏:两个进程同时打开同一个 DSH_HOME 并并发写会话日志时,各自用内存里的游标追加、JSONL 后端没有跨进程协调,写出的 seq 会重叠,加载时报 seq gap in committed region,会话就损坏了。触发条件是「同一 DSH_HOME 被两个实例同时打开」加上「期间有中断的工具调用」,两者叠加几乎必现。

dsh 界面上找不到会话的「删除」按钮,只想删掉某个会话怎么办?

dsh 界面里能做的只有归档:被归档的会话从分组与搜索结果中消失,但会话日志文件和 workspace 记账席位都没被改动,而且当前版本界面没有查看或取消归档的入口。要真删只能走文件系统:先停掉正在运行的 dsh,再删除对应项目目录下的会话文件,删完重启生效。

会话文件越攒越多,会不会拖慢 dsh 启动速度和会话搜索的速度?

会——DeepSeek Harness 的会话日志只增不减,超大会话会拖慢会话搜索与启动。建议定期清理已结束项目的会话目录,清理前先整目录备份,别顺手把整个 $DSH_HOME 删掉——配置与插件都在那里。

相关术语

会话日志(JSONL)
会话日志是 DeepSeek Harness 记录对话与工具调用的追加式文件,以 JSONL 格式存储在 profile 数据目录下的 sessions 路径中,由 session-persistence-jsonl 包定义;默认落盘为 session.jsonl.zstd。— DeepSeek Harness 官方仓库
--resume
--resume 是终端侧应用用来继续某个历史会话的参数,属于被启动的应用而不是 dsh 启动器;写法如 dsh --profile tui --resume <会话 id>,前提是对应 profile 已安装。— dsh CLI README
$DSH_HOME
$DSH_HOME 是 DeepSeek Harness 的用户数据目录(默认 ~/.dsh),profile、配置与会话数据都在其中;Web UI 与终端应用共用这一份目录,所以两端看到的会话是同一批。— dsh CLI README
seq gap
seq gap 是会话日志加载时的完整性报错,指日志序列号出现缺口、committed 区域无法拼接;常见成因是两个进程同时写同一个会话日志导致游标重叠。— DeepSeek Harness 官方仓库

来源