前言¶
在 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 不能替代重启。
典型用法¶
- 按上节安装到与启动方式一致的 profile,重启 DSH。
- 在 Web GUI 打开 Sessions Insight,左侧按 workdir 浏览会话,点开会话后在中栏选轮次,右侧查看该轮上下文组成、压缩、工具调用与子 agent 会话。
- 需要跨会话检索时,用
Ctrl+K(macOS 为⌘K)打开搜索面板;命中后跳转到对应轮次。 - 可选:在
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 仓库。