DeepSeek Harness 会话记录在哪、怎么查?DSH plugin 会话历史与检索

配置与使用发布于 2026-10-03作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH plugin会话历史session-query配置使用
DeepSeek Harness 的会话日志保存在 $DSH_HOME/sessions 下的未压缩 JSONL;要用代码检索,可用 ctx.sessionQuery 的 filterSessions、filterEvents 与搜索接口,按 id、cwd、时间、类型、surface 或语义文本过滤。

DeepSeek Harness 的会话日志保存在 <dsh_home>/sessions 下的未压缩 JSONL;要用代码检索,走 ctx.sessionQuery 的 filterSessions、filterEvents 与 searchSessions、searchEvents,按 id、cwd、时间、类型、surface 或语义文本过滤(来源)。

DeepSeek Harness 会话记录在哪:sessions 与 JSONL

会话持久化落在 <dsh_home>/sessions 下的未压缩 JSONL;逻辑会话语料库在 live 数据存在时会优先使用 live 数据(来源、来源)。 先分清两层:

  1. 原始日志位置 — 以 Python SDK 的 sdk-minimal 为例,会话日志就是你传入的 dsh_home 下 sessions/ 里的未压缩 JSONL。预期:注意磁盘占用与隐私,别把含敏感信息的日志外发。
  2. 逻辑来源优先级 — 语料库在有 live 数据时优先用它,持久化后端作为后备。预期:正在跑的会话读到的就是当前状态,而不是旧快照。
  3. 两个可用性标记 — SessionRecord 同时给出 live(id 当前是否存在于 ctx.sessions)与 persisted(活动持久化后端是否列出该 id,含已观察但尚未实体化的会话)。预期:判断一个会话是活的还是只落盘,看这两个。

会话里能出现哪些行为,取决于它加载了哪些插件。想给会话补能力,可以先进 DSH Plugin Hub 浏览社区插件。

DeepSeek Harness 怎么查:ctx.sessionQuery 与过滤器

ctx.sessionQuery.filterSessions(filters) 对完整逻辑会话列表应用 SessionResultFilter,ctx.sessionQuery.filterEvents(sessionId, filters) 按 seq 升序返回匹配文档;过滤器数组之间是 AND 组合,子句里的 values 是 OR 组合(来源)。 可用的过滤维度:

  1. 会话级过滤 — id、cwd、created-at、parent、availability。预期:按目录、创建时间区间或父子关系筛会话。
  2. 事件级过滤 — seq、time、type、surface、text。预期:定位到某个会话里的具体事件。
  3. 文本过滤 — text 是字面、大小写不敏感、允许灵活空白的语义文本扫描,与具体搜索提供方无关。预期:按关键词找事件,不必先建索引。
  4. 语义文本包含什么 — 消息、工具调用与工具结果、附件,以及失败原因与状态详情都会纳入语义文本,另外还有推理(reasoning)、被阻止的提示词、结果事件等。预期:能按「当时报了什么错」这类语义去查。
  5. 搜索范围 — searchSessions() 按匹配度最强的事件对话排序,searchEvents() 检索单个会话;请求策略由提供方决定。预期:先粗筛会话,再细查事件。

DeepSeek Harness 事件在会话表面里处于什么状态

分类使用与模型历史推导相同的 foldSurface() 状态转换,因此 surface 能告诉你一个事件是当前上下文、被替换,还是只剩日志(来源)。 三种取值:

  1. current — 当前模型上下文。预期:模型此刻真的看得到。
  2. shadowed — 被替换掉的上下文。预期:模型看不到了,但日志仍在。
  3. log-only — 只存在于原始日志里。预期:用于审计与回溯。

需要恢复预检时用 SessionLogSnapshot:它是完整原始日志,脱离运行时并经过回放验证。预期:拿到的是一份自洽、可回放的历史,而非运行中的引用。

注意事项与常见问题

  1. JSONL 未压缩:长期运行会累积,注意清理与磁盘规划。
  2. SDK 不读 ~/.dsh:会话位置取决于你传入的 dsh_home,详见《DeepSeek Harness 怎么用 Python 调用》。
  3. surface 别和 type 混用:前者是位置,后者是事件种类。
  4. web 与终端会话能互通:但那讲的是同一会话的多端接力,见《dsh web 和终端会话互通吗》。
  5. 想找会话里用了哪些插件:去 DSH Plugin Hub 对照。

来源:会话查询(官方文档)、Python SDK 入门(官方文档)

常见问题

DeepSeek Harness 的会话记录存在哪里?

DeepSeek Harness 的会话持久化落在 <dsh_home>/sessions 下的未压缩 JSONL:Python SDK 的 sdk-minimal profile 就把会话日志写在这里。注意 SDK 只用你传入的 dsh_home,不会读 ~/.dsh。

DeepSeek Harness 怎么查历史会话?

在 DeepSeek Harness 里用 ctx.sessionQuery 的过滤器:filterSessions 对整条逻辑会话列表套用 SessionResultFilter,filterEvents 按 seq 升序返回某个会话的匹配文档;过滤器数组之间是 AND、子句里的 values 是 OR。

DeepSeek Harness 的会话检索支持全文搜索吗?

支持:DeepSeek Harness 的 ctx.sessionQuery 还提供 searchSessions 与 searchEvents 两个在搜索结果页,前者按匹配度最强的事件对话排序,后者检索单个会话;请求策略由具体提供方决定,与上层解耦。

DeepSeek Harness 会话里 current、shadowed、log-only 是什么意思?

在 DeepSeek Harness 里,它们是事件在折叠后会话表面里的位置:current 是当前模型上下文,shadowed 是被替换掉的上下文,log-only 只存在于原始日志里。分类用的是与模型历史推导相同的 foldSurface() 状态转换。

怎么判断一个会话是活的还是已持久化的?

DeepSeek Harness 的 SessionRecord 同时暴露两个可用性标记:live 表示 id 当前是否存在于 ctx.sessions,persisted 表示活动持久化后端是否列出了该 id(含它已经观察到但尚未实体化的会话)。

相关术语

session-query
session-query 是 DeepSeek Harness 的会话查询能力,定义逻辑会话语料库的查询词汇;当 live 数据存在时优先使用 live 数据,负责精确读取、来源优先级、关系追踪与语义提取。— DeepSeek Harness 官方文档 - 会话查询
SessionRecord
SessionRecord 是全语料库列表返回的会话记录,含优先取自 live 源的 header,并单独公开 live 与 persisted 两个来源可用性标记。— DeepSeek Harness 官方文档 - 会话查询
SessionEventSurface
SessionEventSurface 描述一个事件在折叠后会话表面里的位置,取 current(当前模型上下文)、shadowed(被替换的上下文)或 log-only(只在原始日志里)。— DeepSeek Harness 官方文档 - 会话查询
SessionLogSnapshot
SessionLogSnapshot 是供恢复预检使用的完整原始日志观测,它脱离运行时,并经过回放验证后才给出。— DeepSeek Harness 官方文档 - 会话查询

来源