@cyrus/dsh-plugins:DSH 插件合集与 Sessions Insight 会话透视

前言

在 Claude Code、DSH 或 Codex 里跑长会话时,上下文窗口往往被工具 schema、历史轮次和压缩点一起占满,但日志里很难一眼看出「这一轮模型实际吃了什么」。DeepSeek Harness(DSH)把能力拆成可安装的插件;社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,插件需自行甄别源码与许可证。

下面介绍仓库 Mt-Youya/dsh-plugins 发布的 npm 合集 @cyrus/dsh-plugins(README 中亦称 Cyrus Plugins):一次安装可注册合集内全部插件,也可只装子包。

这是什么

@cyrus/dsh-plugins 是面向 DSH 的插件合集,由 Mt-Youya 维护,当前版本 v0.0.3(SkillHub 目录与 package.json 一致),许可证 MIT。

合集通过 cordis.patch.yml 注册子插件;截至当前仓库,合集内主要包含 Sessions Insight(npm:@cyrus/dsh-sessions-insight):在 DSH Web GUI 提供只读的「会话透视」侧栏,解析 Claude Code、DSH、Codex 的本地会话日志,按轮次展示送入模型的组成(系统提示、工具定义、记忆与指令、历史、工具结果、图片等),并标注用量是日志中的精确值还是基于字符的估算。

核心功能

合集与单包

安装方式 npm 包 说明
合集(推荐) @cyrus/dsh-plugins 一次装上 README 表格中的全部插件;合集后续增插件时,升级合集即可带入
单插件 @cyrus/dsh-sessions-insight 仅 Sessions Insight

二者会向加载树插入相同的 loader id(sessions-insight)。若 dsh.profile.bundles 里同时存在合集与单包,DSH 启动会报错 duplicate loader entry id,需先用 dsh plugin --profile <name> remove 卸掉其中一个。

Sessions Insight 能回答的问题

依据子插件 README,面板以 workdir → session → turn 为轴,跨三路数据源合并展示(来源仅作标记):

  • 某一轮 392K 窗口里,工具 schema 与历史各占多少;
  • 窗口在某轮后跳变时,压缩点在哪、前后规模如何;
  • 界面上的数字是日志用量还是估算(带 exact / estimate 标记);
  • 某工作目录下三路来源共有多少会话与轮次、最近何时活跃。

交互要点:项目树按 workdir 分组;会话头有上下文占比、峰值、轮次与成本等统计;轮次列表支持分页加载;⌘K / Ctrl+K 打开全库搜索并跳到对应轮次。另支持摘要 handoff:通过官方 session.create / session.prompt 把生成简报送入新 DSH 会话,不手写会话事件、不改写源会话。

数据根目录(可用环境变量覆盖):

来源 默认根 环境变量
Claude Code ~/.claude/projects DSH_CONTEXT_INSIGHT_CLAUDE_ROOT
DSH ~/.dsh/sessions DSH_CONTEXT_INSIGHT_DSH_ROOT
Codex ~/.codex/sessions DSH_CONTEXT_INSIGHT_CODEX_ROOT

端到端只读:不写源数据、不建索引、不落盘缓存(仅进程内 LRU)。某一路径不可读时,顶栏标记该源不可用,不影响其他源。

安装与启用

环境要求:DSH 0.2.1-rc.2 或更新(与运行中 app.asar 行为对齐,见仓库 docs/adr/0002-asar-021-is-the-contract.md)。

先选对 profile:装错 profile 不会报错,但插件不会出现。

启动方式 profile 安装命令中的 --profile
桌面 DeepSeek Harness.app desktop desktop
命令行 dsh web web web

安装合集(推荐):

dsh plugin --profile desktop add @cyrus/dsh-plugins

命令行 Web 场景将 desktop 换成 web。

仅装 Sessions Insight:

dsh plugin --profile desktop add @cyrus/dsh-sessions-insight

安装后完全退出并重新打开 DSH。插件管理器中出现 “Cyrus Plugins” 或 “Sessions Insight” 即表示加载成功;Web 侧栏出现 “Sessions Insight” 表示面板已挂载。

不要用 Git URL 直接 pnpm add https://github.com/... 安装:根包依赖 workspace:^,只有发布到 npm 时才会被解析为版本号。

dsh plugin ... add 通常会把包名写入 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles。若未写入,需手动追加(顺序有意义,后层覆盖前层),例如:

{
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "@cyrus/dsh-sessions-insight"]
    }
  }
}

Loader 在启动时组装,改 bundles 后必须重启;仅重建 client 不能替代重启。

典型用法

  1. 按上节安装到与启动方式一致的 profile,重启 DSH。
  2. 在 Web GUI 打开 Sessions Insight,左侧按 workdir 浏览会话,点开会话后在中栏选轮次,右侧查看该轮上下文组成、压缩、工具调用与子 agent 会话。
  3. 需要跨会话检索时,用 Ctrl+K(macOS 为 ⌘K)打开搜索面板;命中后跳转到对应轮次。
  4. 可选:在 dsh web 启动后,用同源请求做宿主健康检查(无 Origin 视为同源):
curl -sS http://127.0.0.1:<port>/api/dsh-sessions-insight/health

期望 JSON 形如 {"ok":true,"value":{"version":"<version>","sources":["claude","dsh","codex"]}}(value.version 为构建时注入的插件版本)。

开发者可在仓库根目录 pnpm dev,本地预览 harness 监听 http://localhost:5178,读取本机真实会话(可加 ?theme=light 或 ?theme=dark)。从工作区链入桌面插件管理器时,需先在 checkout 根目录执行 npx tsdown 生成 lib/ 后再重启 DSH。

适用场景与注意

适合谁:需要审计或调试多源编码会话、核对上下文膨胀与压缩、区分精确 token 与估算的 DSH / 智能体开发者;希望用只读面板统一看 Claude Code、DSH、Codex 本地日志的人。

权限与安全:插件在当前 DSH 进程权限下运行,会 stat 并读取上述三个默认根(及你配置的环境变量路径)。安装前请阅读 GitHub 源码 与 MIT 许可证;handoff 是唯一写路径,且仅调用官方会话 API。

已知限制(摘自子插件文档,节选):

  • 全库搜索有约 2.5 s 预算,超大语料可能 truncated: true;
  • 部分 Claude 会话无 prompt_snapshot 时,组成里会出现明确的 “unknown” 切片;
  • Codex 加密 reasoning 不可解析;块级为估算,合计以日志为准,不宜直接用于计费对账;
  • 成本展示依赖多张价目表,不跨币种相加。

结尾

@cyrus/dsh-plugins 把 DSH 扩展成「可安装的插件合集」形态:当前核心价值是 bundled 的 Sessions Insight——只读打开三路会话里每一轮真正喂给模型的内容与用量结构。需要跟进版本或提交 issue,可看 SkillHub 目录页与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye