DeepSeek Harness 工作区是什么?DSH plugin 的工作区记录与会话账本

概念与架构发布于 2026-10-03作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH plugin工作区会话账本运行原理
DeepSeek Harness 的工作区是用户工作目录的一条持久记录:一个建在规范路径上的稳定 id、一个显示标题,以及归属于它的会话有序账本。搞懂工作区怎么记录、会话怎么归属,就知道 dsh plugin 为什么能按目录把会话分好组。

DeepSeek Harness 的工作区是用户工作目录的一条持久记录:一个建在规范路径上的稳定 id、一个显示标题,以及归属于它的会话有序账本(来源)。 它解决的是一个很朴素的问题:会话会越攒越多,怎么让它们按「你在哪个目录干活」自动分好组、并且下次打开还在。这篇讲工作区是什么、会话怎么归属、插件怎么用;怎么选与怎么用见《DeepSeek Harness 工作区怎么用》,会话数据模型见《DeepSeek Harness 会话存在哪怎么查》。

为什么要有工作区这个概念

会话本身只知道自己属于哪个目录(header 里的 cwd),并不知道「这几个会话应该被一起看成一组」——工作区补上的正是这层分组与持久化(来源)。 把问题拆开看:

  1. 会话数量会失控:一次任务可能开好几条会话,日子久了光靠时间排序根本找不回「上次在那个项目里干了什么」。
  2. 目录是天然的分组维度:你干活时天然以项目目录为单位,按目录分组比手工打标签更省事,也更不容易漏。
  3. 分组必须持久:临时分组没意义,下次启动就得重来;工作区把分组写进持久记录,所以「关了还在」。
  4. 分组信息不该打扰模型:这纯粹是给人用的组织手段,塞进对话上下文只会白占预算。

因此工作区被设计成宿主侧的可选能力,不属于 agent loop 主干,也对模型不可见:它没有工具、没有提示词文本、没有会话事件。

DeepSeek Harness 工作区是什么:一条持久记录

DeepSeek Harness 的工作区由稳定 id、显示标题与会话有序账本三部分组成,其中的路径是创建时解析出的规范路径,之后不再改写(来源)。 三个要点:

  1. 稳定 id:建在规范路径之上,用来在系统内唯一标识这个工作区;即便后来目录被移动,这个 id 也不会跟着改。
  2. 显示标题:默认取目录名,允许重复;可以改成任意字符串。它只是给人看的标签,不承担标识职责。
  3. 会话有序账本:记录归属它的会话 id,按手工顺序维护——新会话前插,活动不会引起重排。

会话怎么归属于工作区

在 DeepSeek Harness 里,会话归属需要两个条件同时成立:账本里有该会话的 id,且该会话 header 的规范 cwd 等于工作区路径(来源)。 由此推出:

  1. 结构上至多属于一个工作区:两个条件同时成立,一个会话不会同时落在两个目录名下。
  2. 归属的真源是账本:归属不从未经校验的 cwd 直接派生,账本才是权威;cwd 只用于校验,不用来「自动认领」。
  3. 加入是显式动作:新会话要被归属,需要显式调用加入;已归属的会话也可以从账本移除。
  4. 移除不影响会话本身:从账本移除只是解除分组,不会动会话自己的事件日志——分组与数据是两层。

路径为什么是规范路径,目录没了怎么办

DeepSeek Harness 的工作区路径一经创建就记录规范路径,之后即使目录消失也不会被改写——记录里保留的是创建时解析出的真实路径(来源)。 这一点常被误解,说清楚两点:

  1. 记录不负责「检测目录是否存在」:要判断目录当前是否还在,需要单独做一次实时的目录检查,而不是依赖记录里的路径;记录本身不会因为目录消失而自我更新。
  2. 路径稳定带来稳定的归属判定:正因为路径一经确定不再改写,会话的 cwd 校验才有确定的比较基准;否则目录一变,历史归属就会集体漂移。

历史怎么引导:只在首次启动做一次

DeepSeek Harness 只在首次成功启动时,用已持久化的 header 引导一次历史分组:把规范 cwd 有效的会话按目录归入工作区,最新的排在最前(来源)。 关于这次引导,三个要点:

  1. 只发生一次:它是「把老会话补上分组」的一次性动作,不是每次启动都重跑的例程。
  2. 没有 cwd 的历史会话保持未分组:缺少这块信息就无法校验归属,于是它们停在未分组状态,这也是正常现象。
  3. 此后的会话只能显式加入:引导之后创建的会话不会自动被塞进某个工作区;想让它归属,就走显式的加入动作。

插件怎么用:registry 与 directoryPicker

DSH plugin 通过 ctx.workspaceRegistry 这个注册表入口来使用工作区能力,它负责注册与解析工作区、维护顺序与会话账本;目录选择则由 ctx.directoryPicker 这个抽象接缝承担(来源)。 两个入口分工不同:

  1. ctx.workspaceRegistry 管数据:工作区的创建、解析、顺序维护与会话账本操作都在这里,插件要读写工作区就走它。
  2. ctx.directoryPicker 管交互:目录选择被做成抽象接缝,不同接入方式(图形界面、脚本等)各自提供实现,因此同一套工作区逻辑可以适配多种前端。
  3. 两个入口都属宿主侧:它们都不进入模型可见的上下文,所以不会因为工作区变多而增加提示词开销。想在界面上按工作区组织插件配置,可在「设置 → 插件市场」即 DSH Plugin Hub 里找现成实现。

怎么在界面里选择工作区见《DeepSeek Harness 工作区怎么用》。

理解工作区的注意事项

把工作区理解成「目录 + 会话账本」的绑定记录,就不会和会话本身混淆。

  1. 工作区不是目录本身:它是目录的一条持久记录,目录没了记录也还在。
  2. 归属看账本加 cwd 校验:两个条件缺一不可,缺一个就不算成员。
  3. 顺序是手工的:活动不会自动重排,新会话前插。
  4. 未分组是正常状态:没有 cwd 的历史会话就不归属任何工作区。
  5. 删除工作区不动会话日志:会话会回到未分组,但记录本身还在。
  6. 插件对模型不可见:这块能力不进入对话上下文,不占提示词预算。
  7. 操作向教程见《DeepSeek Harness 工作区怎么用》;会话数据模型见《DeepSeek Harness 会话存在哪怎么查》。

来源:DeepSeek Harness 官方文档 - 工作区、官方文档 - 会话查询。

常见问题

DeepSeek Harness 的工作区到底是什么,为什么需要它?

**DeepSeek Harness 的工作区是用户工作目录的一条持久记录:一个稳定 id、一个显示标题,加上归属于它的会话有序账本。** 它把「哪个目录」和「哪些会话属于它」绑定起来,因此界面里能按目录把会话分好组,这个分组是持久保存的。

DeepSeek Harness 工作区里的会话是怎么归属的?

**在 DeepSeek Harness 里,一个会话要归属于某工作区,需要同时满足两个条件。** 一是工作区的会话账本里有它的 id,二是该会话的 header 里规范 cwd 等于工作区路径;两个条件同时成立才算成员,因此一个会话在结构上至多属于一个工作区。

DeepSeek Harness 工作区路径会不会因为目录被移动或改名而失效?

**DeepSeek Harness 的工作区路径一经创建就记录规范路径,之后即使目录消失也不会被改写。** 记录里保留的是创建时解析出的真实路径;要判断目录当前是否还在,需要单独做一次实时的目录检查,而不是依赖记录里的路径。

DeepSeek Harness 会为历史会话自动建工作区吗?

**DeepSeek Harness 只会在首次成功启动时,用已持久化的 header 引导一次历史分组。** 它把规范 cwd 有效的会话按目录归入工作区,最新的排在前面;此后创建的会话只能通过显式加入的方式进入某个工作区,历史里没有 cwd 的会话则保持未分组。

DSH plugin 通过什么入口读取 DeepSeek Harness 的工作区信息?

**DSH plugin 通过 ctx.workspaceRegistry 这个注册表入口来使用 DeepSeek Harness 的工作区能力。** 它负责注册与解析工作区、维护顺序与会话账本;此外还有 ctx.directoryPicker 这个抽象接缝负责目录选择,供不同接入方式替换实现。

相关术语

工作区(workspace)
工作区是 DeepSeek Harness 中用户工作目录的持久记录,由稳定 id、显示标题与归属会话的有序账本组成。— DeepSeek Harness 官方文档 - 工作区
会话账本
会话账本是 DeepSeek Harness 工作区里记录归属会话 id 的有序列表,按手工顺序维护,新增会话前插,活动不会重排。— DeepSeek Harness 官方文档 - 工作区
ctx.workspaceRegistry
ctx.workspaceRegistry 是 DeepSeek Harness 暴露的工作区注册表入口,负责工作区的创建、解析、顺序维护与会话归属校验。— DeepSeek Harness 官方文档 - 工作区
ctx.directoryPicker
ctx.directoryPicker 是 DeepSeek Harness 中目录选择能力的抽象接缝,供不同接入方式提供各自的实现。— DeepSeek Harness 官方文档 - 工作区

来源