DeepSeek Harness 会话记录在哪、怎么查?DSH plugin 会话历史与检索
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 数据(来源、来源)。 先分清两层:
- 原始日志位置 — 以 Python SDK 的
sdk-minimal为例,会话日志就是你传入的dsh_home下sessions/里的未压缩 JSONL。预期:注意磁盘占用与隐私,别把含敏感信息的日志外发。 - 逻辑来源优先级 — 语料库在有 live 数据时优先用它,持久化后端作为后备。预期:正在跑的会话读到的就是当前状态,而不是旧快照。
- 两个可用性标记 —
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 组合(来源)。 可用的过滤维度:
- 会话级过滤 —
id、cwd、created-at、parent、availability。预期:按目录、创建时间区间或父子关系筛会话。 - 事件级过滤 —
seq、time、type、surface、text。预期:定位到某个会话里的具体事件。 - 文本过滤 —
text是字面、大小写不敏感、允许灵活空白的语义文本扫描,与具体搜索提供方无关。预期:按关键词找事件,不必先建索引。 - 语义文本包含什么 — 消息、工具调用与工具结果、附件,以及失败原因与状态详情都会纳入语义文本,另外还有推理(reasoning)、被阻止的提示词、结果事件等。预期:能按「当时报了什么错」这类语义去查。
- 搜索范围 —
searchSessions()按匹配度最强的事件对话排序,searchEvents()检索单个会话;请求策略由提供方决定。预期:先粗筛会话,再细查事件。
DeepSeek Harness 事件在会话表面里处于什么状态
分类使用与模型历史推导相同的 foldSurface() 状态转换,因此 surface 能告诉你一个事件是当前上下文、被替换,还是只剩日志(来源)。 三种取值:
current— 当前模型上下文。预期:模型此刻真的看得到。shadowed— 被替换掉的上下文。预期:模型看不到了,但日志仍在。log-only— 只存在于原始日志里。预期:用于审计与回溯。
需要恢复预检时用 SessionLogSnapshot:它是完整原始日志,脱离运行时并经过回放验证。预期:拿到的是一份自洽、可回放的历史,而非运行中的引用。
注意事项与常见问题
- JSONL 未压缩:长期运行会累积,注意清理与磁盘规划。
- SDK 不读
~/.dsh:会话位置取决于你传入的dsh_home,详见《DeepSeek Harness 怎么用 Python 调用》。 surface别和type混用:前者是位置,后者是事件种类。- web 与终端会话能互通:但那讲的是同一会话的多端接力,见《dsh web 和终端会话互通吗》。
- 想找会话里用了哪些插件:去 DSH Plugin Hub 对照。
常见问题
DeepSeek Harness 的会话持久化落在 <dsh_home>/sessions 下的未压缩 JSONL:Python SDK 的 sdk-minimal profile 就把会话日志写在这里。注意 SDK 只用你传入的 dsh_home,不会读 ~/.dsh。
在 DeepSeek Harness 里用 ctx.sessionQuery 的过滤器:filterSessions 对整条逻辑会话列表套用 SessionResultFilter,filterEvents 按 seq 升序返回某个会话的匹配文档;过滤器数组之间是 AND、子句里的 values 是 OR。
支持:DeepSeek Harness 的 ctx.sessionQuery 还提供 searchSessions 与 searchEvents 两个在搜索结果页,前者按匹配度最强的事件对话排序,后者检索单个会话;请求策略由具体提供方决定,与上层解耦。
在 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 官方文档 - 会话查询
来源
- DeepSeek Harness 官方文档 - 会话查询· deepseek-harness
- DeepSeek Harness 官方文档 - Python SDK 入门· deepseek-harness