편집자 노트

huajuan2024/dsh-session-manager

DSH plugin that lists, views, deletes, and exports DeepSeek Harness session histories.

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-session-manager

CI License: MIT Awesome DSH Plugin

DeepSeek Harness (DSH) 插件:在 Web UI 的「设置 → 插件」里提供一个会话管理面板, 支持查看历史消息、删除会话、导出单条会话(JSON 或 Markdown)。

架构

  • src/index.ts:Cordis Host 服务 ctx.sessionManager,通过 rc.7 正式 ctx.sessionQuery 服务读取会话,负责删除、格式转换,以及 4 个 Remote API (list / readHistory / delete / export)。
  • src/client.ts:Web 客户端插件,通过标准 /api RPC 调用 Host,注册 settings.plugins.tab slot,在「设置 → 插件」里渲染会话列表与详情面板。
  • src/types.ts:Host 对浏览器公开的白名单 DTO。
  • lib/:由 TypeScript 生成的发布产物,不要手工修改。

安全模型

  • 本插件不向模型请求注入内容,因此不会新增 session event。
  • 文件操作只发生在 Host 进程,token 或文件绝对路径不会进入 Remote 返回值。
  • sessionId 必须是裸 UUID 或匹配 session-<uuid>,分别兼容新版子代理会话和 传统根会话;其它格式会被拒绝,避免路径穿越。
  • 正在运行的会话(running 状态)不可删除,需要先结束会话。

功能

  • 列出所有已知会话(含 title / cwd / updatedAt / turns / steps / agentPreset)。
  • 点击单个会话查看其消息历史。
  • 删除单条会话(运行中的会话会被拒绝;删除不可恢复)。
  • 导出单条会话为 JSON 或 Markdown,走浏览器 Blob URL 触发下载。

前置要求

  • Node.js 22.19 或更高版本
  • DeepSeek Harness 0.1.0-rc.7 兼容版本

构建

pnpm install
pnpm run typecheck
pnpm run build
pnpm run test

安装

从插件目录生成 tarball:

pnpm pack
dsh plugin --profile web add ../../plugin-releases/dsh-session-manager-0.1.5.tgz

Profile 配置

通过 dsh plugin --profile web add 安装 bundle 后,包内 cordis.patch.yml 提供默认 配置。需要覆盖时,在 ~/.dsh/profiles/web/cordis.patch.yml 中使用同一个 id:

- insert:
    - id: sessionManager
      name: dsh-session-manager
      config:
        sessionsRoot: ~/.dsh/sessions
        maxExportBytes: 10485760
        previewMessageLimit: 200

如果文件当前内容只有 [],必须用上面的列表替换 [],不能把列表追加在 [] 后面。 Harness 的后置 patch 会按 id 替换整份 config,因此覆盖时需要写出希望保留的全部字段。

检查最终组合结果:

dsh --profile web --dump-config

配置项

字段默认值说明
sessionsRoot~/.dsh/sessionsDSH 会话存档根目录
maxExportBytes10485760单次导出的字节上限(10 MiB),超过返回 too-large
previewMessageLimit200readHistory 单次返回的最大消息条数

验证

启动 Web profile 后检查:

  1. 「设置 → 插件」tab 中出现「会话管理」面板,列出所有会话。
  2. 点击行展开,显示消息历史(前 200 条)。
  3. 删除按钮在 running 会话上不可点击,其它会话二次确认后可删除。
  4. 导出 JSON / Markdown 触发浏览器下载,文件内容与本地 session.jsonl.zstd 解码后内容一致。

故障排查

  • session-running:会话正在运行中,无法删除;请先结束该会话。
  • not-found:会话目录已不存在,可能已被其他进程清理。
  • invalid-session-id:sessionId 既不是裸 UUID,也不符合 session-<uuid>,请求被拒绝。
  • permission-denied:Host 进程没有删除或读取该目录的权限。
  • upstream-error:zstd 解压或 JSONL 解析失败,文件可能损坏。
  • too-large:会话存档超过 maxExportBytes,已拒绝导出。
REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.