🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

上下文成本透视 alloevil/dsh-xray

DeepSeek 客户端v0.11.0
alloevil6 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

token 账单面板取自仓库内 fixtures/runtime-basic 快照;停用级联面板是作者本机组合的示意…

30.2/100
综合分
1
GitHub 星标
93
npm 周下载
—/5
用户评分

数据截至 2026/11/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/alloevil/dsh-xray.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
生态插件
可安装,未声明 dsh 能力
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.1-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.2-rc.1,本站尚未在新版下复验
L4 · 真实安装等级说明 →
数据截至 2026/10/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/06·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 6 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-xray @ 0.11.0
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 11:39:32

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 23 处,展示前 20 条)
  • 写入本地文件
    lib/index.js:79
    fs.mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/index.js:81
    fs.writeFileSync(tmp, JSON.stringify(snap, null, 2));
  • 写入本地文件
    lib/index.js:82
    fs.renameSync(tmp, file);
  • 写入剪贴板
    lib/client.js:475
    navigator.clipboard.writeText(String(row.topCallId));
  • 发起网络请求
    lib/client.js:500
    fetch(
  • 发起网络请求
    lib/client.js:878
    fetch(`/xray/api/${view}`)
  • 读取本地文件
    bin/xray.js:139
    const saved = JSON.parse(fs.readFileSync(againstFile, 'utf8'));
  • 读取本地文件
    bin/xray.js:178
    if (!fs.existsSync(file)) {
  • 读取本地文件
    bin/xray.js:183
    return JSON.parse(fs.readFileSync(file, 'utf8'));
  • 读取本地文件
    bin/xray.js:289
    staticMtimeMs = Math.max(staticMtimeMs ?? 0, fs.statSync(l.file).mtimeMs);
  • 读取本地文件
    lib/collect/static.js:42
    return JSON.parse(fs.readFileSync(file, 'utf8'));
  • 读取本地文件
    lib/collect/static.js:55
    if (fs.existsSync(path.join(dir, 'package.json'))) return dir;
  • 读取本地文件
    lib/collect/static.js:92
    const text = fs.readFileSync(file, 'utf8');
  • 读取本地文件
    lib/collect/static.js:110
    if (!fs.existsSync(file)) continue;
  • 读取本地文件
    lib/collect/static.js:111
    const text = fs.readFileSync(file, 'utf8');
  • 读取本地文件
    lib/collect/static.js:129
    if (fs.existsSync(repoRoot)) {
  • 执行外部命令来自配置/变量
    lib/collect/dump.js:11
    return execFileSync(dshBin, ['--profile', profileName, '--dump-config'], {
  • 读取本地文件
    lib/collect/audit.js:59
    entries = fs.readdirSync(dir, { withFileTypes: true });
  • 读取本地文件
    lib/collect/audit.js:79
    if (fs.statSync(file).size > MAX_FILE_BYTES) continue;
  • 读取本地文件
    lib/collect/audit.js:80
    text = fs.readFileSync(file, 'utf8');
扫描于 2026/11/6(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 上下文税归因
  • 条目检查
  • 依赖级联

给你的 DeepSeek Harness 做 X 光:上下文税归因、条目检查、依赖级联

README

由 DeepSeek 最新模型翻译生成
token 账单面板取自仓库内 fixtures/runtime-basic 快照;停用级联面板是作者本机组合的示意 capture,本仓库无 fixture 可复现。 给 DeepSeek Harness 拍 X 光——看清到底加载了什么、为什么在那、以及它悄悄花掉了你什么。 LLM 上下文成本可观测:按插件归因 token、prompt section 与工具 schema 计价、skill catalog 常驻税、依赖停用级联。 你挂载的每个插件都在悄悄向每次 LLM 请求收费:prompt sections、工具 schema、token。dsh-xray 以 与 Chat / Trajectory 并列的 X 光标签页 长在你运行中的 harness 里,把这份账单逐项摊开——按插件、按条目,直到具体到每一个字: X 光标签页:每个插件的每请求上下文税,已归因并排序 展开插件看它注册了什么;点击任何条目,读它注入每次请求的原文: 插件展开为其注册的条目 ~184 token 背后的原文,附字符/token 标尺 三次点击:插件总账 → 条目清单 → 实际文字。数字不再是你被迫相信的估算,而是你亲手核对过的事实。 问题 dsh --dump-config 只给你原始组合树,插件面板只给你平铺列表。
展开完整文档(README 剩余 1 节)
token 账单面板取自仓库内 fixtures/runtime-basic 快照;停用级联面板是作者本机组合的示意 capture,本仓库无 fixture 可复现。

给 DeepSeek Harness 拍 X 光——看清到底加载了什么、为什么在那、以及它悄悄花掉了你什么。

LLM 上下文成本可观测:按插件归因 token、prompt section 与工具 schema 计价、skill catalog 常驻税、依赖停用级联。

你挂载的每个插件都在悄悄向每次 LLM 请求收费:prompt sections、工具 schema、token。dsh-xray 以 与 Chat / Trajectory 并列的 X 光标签页 长在你运行中的 harness 里,把这份账单逐项摊开——按插件、按条目,直到具体到每一个字:

X 光标签页:每个插件的每请求上下文税,已归因并排序

展开插件看它注册了什么;点击任何条目,读它注入每次请求的原文:

插件展开为其注册的条目

~184 token 背后的原文,附字符/token 标尺

三次点击:插件总账 → 条目清单 → 实际文字。数字不再是你被迫相信的估算,而是你亲手核对过的事实。

问题

dsh --dump-config 只给你原始组合树,插件面板只给你平铺列表。它们都不回答:这个插件为什么在这、停用它会连带瘫掉什么、它在每次请求里悄悄消耗什么。

dsh-xray 回答这些。 当答案是"这个插件对每次请求收税、却没有任何东西依赖它"——deps 视图确认可以安全停用,一行 patch 移除它,attribute 验证生效。

cost 视图回答一个别的工具都不问的问题:这段上下文是谁放进来的、花掉我多少?

- 来源归因 —— 每个 prompt section 和工具 schema 都关联到注册它的插件,实时从 registry 重建(无法唯一归因的条目诚实标注 unattributed,绝不猜测)。
- 按插件汇总 —— 每个插件的每请求上下文税:sections + schemas + tokens + 占比,排序呈现。
- 条目原文查看 —— /xray/api/entry 返回任意条目的实时文本,附字符/token 标尺。按请求现算,绝不落盘。
- skill 成本 —— 专属视图为每个 skill 计两笔价:catalog 行(只要存在模型可调用的 skill 就随每次请求常驻)与正文(每次加载计费)。只计价——启停归生态里的 skill 管理器。
- 逐请求账单 —— 每次 LLM 调用一张分类账单:system / 工具 schema / 历史 / 工具结果(按工具聚合),Δprev 增量列,前缀稳定性标记(⚡ system+工具与上一请求逐字节一致——KV 缓存友好;✂ 前缀击穿)。compaction 与标题生成单独标注。只存计数、名字和 hash——绝不存消息正文。
- 界面自解释 —— 每个视图开头一句"你在看什么";术语带白话提示;整个标签页通过宿主 locale 服务双语呈现(English / 中文)。

同一份数据流经三个界面:X 光标签页(原生 GUI)、独立 /xray 页面(连它所诊断的 client-module 加载链路挂了都能用)、以及 CLI。

npx dsh-xray attribute # 每一行由哪层引入、之后被谁 patch 过
npx dsh-xray conflicts # 有争议的字段,带每个写者的证据:file:line、写入值、赢家
npx dsh-xray diff # 声明(静态层)vs 实际(dump-config)组合树
npx dsh-xray snapshot # 内容寻址 lockfile;--against <lock> 对比漂移,漂移时退出码 1
npx dsh-xray deps [svc] # 服务依赖图:提供者、消费者、传递性停用级联
npx dsh-xray health # 插件生命周期健康:失败 fiber、等待中的注入、状态迁移史
npx dsh-xray cost # 上下文成本:prompt sections + 工具 schema 的估算 token 占用
npx dsh-xray shadow # 被多个插件同时提供的服务
npx dsh-xray verify # 声明(静态)行 ↔ 运行时注册表对账,不一致退出码 1
npx dsh-xray why <tool> # 单个工具的溯源链:注册它的插件、它的 inject、这些服务的提供者
npx dsh-xray audit # 对 out-of-tree 插件做敏感触点静态扫描

治理视图与命令:

npx dsh-xray slo --json # Context SLO:预算检查,输出 PASS/WARN/FAIL
npx dsh-xray graph --json # 统一 evidence graph:插件、条目、服务
npx dsh-xray impact --plugin <name> # 只读影响评估,不会应用任何修改

治理命令均为只读。--plugin 用于指定 impact 的插件;不会禁用插件、写配置或应用 patch。
dsh-xray 演示

演示终端内容是作者本机 web profile 的示意 capture(未记录 revision),数字无法由本仓库复现,且随插件增减漂移;可复现的 fixture 及其固化输出见 fixtures/ 与 tests/golden.spec.js。

attribute、conflicts、snapshot 是静态的——重放磁盘上的层栈,dsh 起不来时照样能跑(snapshot 还会采样 dsh --dump-config 取组合哈希;存在运行时快照时一并写入 services/tools,不存在就诚实地记为 null)。所有命令支持 --profile <name>(默认 web)和 --json;所有 JSON 输出都带版本化的 schema 字段(dsh-xray/<view>@N),机器消费方据此识别结构变化而不必猜。snapshot 及其 --against 差异、verify、audit 已升到 @2(变化见 changelog),其余视图仍为 @1。退出码可直接进 CI:diff(两树不一致)、health(有插件不健康)、snapshot --against <lock>(组合漂移)、shadow(服务被多方提供)、verify(声明与运行时不符)、why(快照里没有该工具)均返回 1。

🔍 层归因

每个活跃插件来自哪一层:内核 bundle / profile 依赖 / cordis.patch.yml insert / repository 源。

📊 声明 vs 实际 diff

装了但没生效、卸了但残留 patch 行——包括指向不存在 id 的 patch 行(dsh 会输出 stderr 警告后跳过)。

⚡ 冲突检测

多个插件 patch 同一配置行时,谁静默赢了。

📸 组合快照

把当前生效组合导出为 lockfile——bundle、patch,以及每个已安装插件的来源(registry / link / repository)与排除 node_modules 的内容哈希,外加运行时实际注册的 services 与 tools。snapshot --against <lock> 逐类报告漂移(bundle 版本 / patch 内容 / 包版本、来源或内容 / 服务提供者 / 工具归属与 schema 体积)并退出码 1。老 lock 回答不了的字段会明说,而不是被当作「一致」。

🌐 服务依赖图

每个服务谁提供、谁消费——以及传递性停用级联:不只是直接消费者,还包括它们再提供的服务的所有下游。

$ npx dsh-xray deps
disable-cascade (transitive consumers of each provider):
Loader → 5 plugin(s): AgentPresets, ClientModuleRegistry, Hmr, …
TimerService → 1 plugin(s): Hmr

示意 capture:取自作者本机 web profile(未记录 revision),本仓库无 fixture 可复现,计数随插件增减漂移;仓库内的运行时 fixture 是合成输入(例如 fixtures/runtime-basic 固化为 ToolRuntime → 1 plugin(s): AgentLoop)。

💊 运行时健康

每个插件的 fiber 生命周期状态、启动失败、等待中的注入、状态迁移史。

👥 服务遮蔽

同名注册中后来者静默胜出——通常是有意覆盖,偶尔是冲突。

🛡️ 能力审计

对 out-of-tree 插件的启发式静态扫描:子进程 / shell、网络外发、文件系统读与写、环境变量、动态求值。每个命中都带 file:line 与匹配行;每个 capability 的 confidence 由两个可核对的事实推出——导入了对应内置模块且有调用点(high),只有其中之一(medium),或只有无法交叉验证的 process.env(low)。

🔗 工具溯源

why <tool> 用一条链回答"它凭什么出现在我的上下文里":工具本身 → 归因表记录的注册插件 → 该插件的 inject → 这些服务的提供者 → 一路到不 inject 任何东西的根插件。

挂载进树后,dsh-xray 注册 xray_composition 工具(view: summary | deps | health | cost | shadow | skills | requests | slo | graph | diff | impact),agent 可以自答:

"我有哪些能力?" / "哪个插件提供 X?" / "为什么 Y 不可用?"

——关于它自己。

dsh-xray 只读,不执行。

- patch 文件里的 loader !!js 表达式解析为不透明标记,绝不求值
- CLI 从不执行插件代码(audit 是对源码文本的模式扫描)
- 挂载的插件只写 $DSH_HOME/xray/ 目录——条目原文实时返回,绝不落盘
- entry 端点只返回组合层文本,绝不返回会话消息
- 详见 SECURITY.md

分析模式

每类结果都有明确的可信度边界:

| 模式 | 命令 | 边界 |
| 静态 | attribute、conflicts、snapshot | 对磁盘上层栈的精确重放;dsh 起不来也能跑。snapshot 在 dsh 可用时还会采样 dsh --dump-config 取组合哈希。观测不到运行时行为。 |
| 静态 + 外呼 | diff | 重放层栈后,再起一个 dsh --dump-config 对比声明与实际。 |
| 静态 + 运行时 | verify | 两侧对账:声明了却没挂载的行、禁用了还在跑的行、只存在于运行时的插件、快照过期;并按服务、按工具判断其运行时提供者/归属是否落在声明行内。 |
| 运行时 | deps、health、cost、shadow、verify 的运行时半边、why、标签页、/xray 面板、agent 工具 | 观测自运行中的组合树($DSH_HOME/xray/runtime.json),只对当前会话有效。token 为估算值(约 4 字符/token),除非你打开条目原文自己数。 |
| 启发式 | audit | 对源码文本的模式扫描;可能误报漏报。命中只表示"该模式出现在代码里",绝不等于"该插件是恶意的";confidence 衡量的是模式被佐证的程度,不是危险程度。 |

两种用法,彼此独立:

1. 只用静态 CLI(不装进 dsh;dsh 起不来时照样能用):

npx dsh-xray attribute # 需要 Node >= 22

2. 挂载插件(解锁运行时命令、X 光标签页、/xray 面板和 agent 工具):

dsh plugin --profile web add dsh-xray
bundle 插件下次启动生效——重启 dsh web

验证生效:

dsh --profile web --dump-config | grep dsh-xray # 组合树中出现该行
npx dsh-xray health # 读取运行时快照
然后打开任意会话点 X 光标签页, 或访问 http://127.0.0.1:3080/xray(web app 的默认绑定)看独立面板

卸载:dsh plugin --profile web remove dsh-xray。

| 命令 | 退出码 |
| diff | 两棵树不一致时 1 |
| health | 有插件不健康时 1 |
| snapshot --against <lock> | 组合漂移时 1 |
| shadow | 服务被多方提供时 1 |
| verify | 有已声明却没在运行的插件,或禁用了仍在运行的插件时 1(仅存在于运行时的子插件、按服务/工具的对账结果只报告,不算失败) |
| why | 运行时快照里没有该工具的归属记录时 1 |

对运行中组合树的诊断成像——与 dsh-doctor(救援与恢复)互补。

| 能力 | 类别 |
| 上下文税归因 & 条目原文查看 | 💰 优化 |
| skill 成本(catalog 行 + 正文计价) | 💰 优化 |
| 逐请求账单(Δprev、前缀稳定性) | 💰 优化 |
| 层归因 | 🔍 检视 |
| 声明 vs 实际 diff | 🔍 检视 |
| 冲突检测 | 🔍 检视 |
| 组合快照 | 📦 导出 |
| 静态 ↔ 运行时对账 | 🔍 检视 |
| 工具溯源链 | 🔍 检视 |
| 服务依赖图 | 🌐 运行时 |
| 运行时健康 | 🌐 运行时 |
| 服务遮蔽 | 🌐 运行时 |
| Agent 自省 | 🤖 AI |
| 能力审计 | 🛡️ 安全 |

许可

MIT
预览分享卡片长什么样 ↓alloevil/dsh-xray
分享 · DeepSeek Harness Hub
alloevil/dsh-xray

token 账单面板取自仓库内 fixtures/runtime-basic 快照;停用级联面板是作者本机组合的示意…

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部