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

推理强度滑杆 kaivenw/dsh-effort-slider

DeepSeek Harness
kaivenw15 天前有提交已提供中文文档扫描:高危

拖动滑杆直观切换模型推理强度档位

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kaivenw/dsh-effort-slider
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →

可信度证据

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

安装时即执行脚本可执行外部命令读写/删除本地文件
查看扫描证据(共 30 处,展示前 26 条)
  • 读取本地文件
    scripts/install-profile.mjs:29
    const REPO = existsSync(join(HERE, 'package.json')) ? HERE : resolve(HERE, '..')
  • 读取本地文件
    scripts/install-profile.mjs:35
    if (!existsSync(PLUGIN_MANIFEST) || JSON.parse(readFileSync(PLUGIN_MANIFEST, 'utf8')).name !== PACKAGE_NAME) {
  • 读取本地文件
    scripts/install-profile.mjs:35
    if (!existsSync(PLUGIN_MANIFEST) || JSON.parse(readFileSync(PLUGIN_MANIFEST, 'utf8')).name !== PACKAGE_NAME) {
  • 读取本地文件
    scripts/install-profile.mjs:58
    const found = candidates.find((name) => existsSync(join(profiles, name, 'package.json')))
  • 读取本地文件
    scripts/install-profile.mjs:74
    if (!existsSync(file)) throw new Error('profile package.json not found: ' + file)
  • 读取本地文件
    scripts/install-profile.mjs:75
    return { file, value: JSON.parse(readFileSync(file, 'utf8')) }
  • 写入本地文件
    scripts/install-profile.mjs:108
    mkdirSync(dirname(link), { recursive: true })
  • 删除本地文件
    scripts/install-profile.mjs:109
    if (lstatSafe(link) !== undefined) unlinkSync(link)
  • 写入本地文件
    scripts/install-profile.mjs:157
    writeFileSync(backupFile, readFileSync(file))
  • 写入本地文件
    scripts/install-profile.mjs:158
    writeFileSync(file, JSON.stringify(value, null, 2) + '\n')
  • 删除本地文件
    scripts/install-profile.mjs:162
    if (lstatSafe(link) !== undefined) unlinkSync(link)
  • 读取本地文件
    scripts/package-dist.mjs:32
    const PACKAGE = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf8'))
  • 读取本地文件
    scripts/package-dist.mjs:39
    return statSync(path).mtimeMs
  • 读取本地文件
    scripts/package-dist.mjs:44
    if (!existsSync(client)) throw new Error('client.js 不存在,先跑 node scripts/build-client.mjs')
  • 读取本地文件
    scripts/package-dist.mjs:47
    for (const entry of readdirSync(dir)) {
  • 读取本地文件
    scripts/package-dist.mjs:49
    const stat = statSync(path)
  • 执行外部命令固定命令
    scripts/package-dist.mjs:77
    return execFileSync('unzip', ['-l', ZIP], { encoding: 'utf8' })
  • 删除本地文件递归
    scripts/package-dist.mjs:84
    rmSync(DIST, { recursive: true, force: true })
  • 写入本地文件
    scripts/package-dist.mjs:85
    mkdirSync(join(STAGE, 'docs'), { recursive: true })
  • 写入本地文件
    scripts/package-dist.mjs:88
    copyFileSync(join(ROOT, file), join(STAGE, file))
  • 写入本地文件
    scripts/package-dist.mjs:91
    copyFileSync(join(ROOT, 'packaging', file), join(STAGE, file))
  • 写入本地文件
    scripts/package-dist.mjs:93
    copyFileSync(join(ROOT, 'scripts', 'install-profile.mjs'), join(STAGE, 'install-profile.mjs'))
  • 写入本地文件
    scripts/package-dist.mjs:94
    copyFileSync(join(ROOT, 'docs', 'popover-high.png'), join(STAGE, 'docs', 'popover-high.png'))
  • 写入本地文件
    scripts/package-dist.mjs:95
    chmodSync(join(STAGE, 'install.command'), 0o755)
  • 执行外部命令固定命令
    scripts/package-dist.mjs:98
    execFileSync('zip', ['-r', '-X', '-q', ZIP, 'dsh-effort-slider'], { cwd: DIST })
  • 读取本地文件
    scripts/package-dist.mjs:99
    const bytes = statSync(ZIP).size
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-effort-slider GitHub · Gitee · MIT License 把 DSH composer 里的「模型 / 推理强度」座位换成 Codex 风格的可拖动强度条:点开后是一张浮层,标题是当前档位名,下面是当前模型(可点开切换),再下面是滑杆。 - 档位越高填充越长;普通档位是蓝色(档位越高色相越深),最高档是紫蓝渐变,Off 不铺任何颜色。 - 轨道上的小圆点标出当前档位之后的档位(按模型实际档位分布),拖过去就会被填充盖住。 - 填充段是像水一样向右流动的点状星点:每颗点的大小、速度、上浮与闪烁相位都不同(canvas 粒子,不会露出平铺贴图的固定图案);整体流速随档位加快(Low → Max 约 1.3× → 2.8×),切档位时速度在 0.26s 内缓动,不会跳变。档位说明在滑杆的悬停提示里。 - 拖动时强度条跟着指针连续走、松手平滑吸附到最近档位;方向键也能切;右上角的 ↺ 重置为模型默认值。
展开完整文档(README 剩余 1 节)
dsh-effort-slider

GitHub · Gitee · MIT License

把 DSH composer 里的「模型 / 推理强度」座位换成 Codex 风格的可拖动强度条:点开后是一张浮层,标题是当前档位名,下面是当前模型(可点开切换),再下面是滑杆。

- 档位越高填充越长;普通档位是蓝色(档位越高色相越深),最高档是紫蓝渐变,Off 不铺任何颜色。
- 轨道上的小圆点标出当前档位之后的档位(按模型实际档位分布),拖过去就会被填充盖住。
- 填充段是像水一样向右流动的点状星点:每颗点的大小、速度、上浮与闪烁相位都不同(canvas 粒子,不会露出平铺贴图的固定图案);整体流速随档位加快(Low → Max 约 1.3× → 2.8×),切档位时速度在 0.26s 内缓动,不会跳变。档位说明在滑杆的悬停提示里。
- 拖动时强度条跟着指针连续走、松手平滑吸附到最近档位;方向键也能切;右上角的 ↺ 重置为模型默认值。

High 档位(蓝色填充 + 后续档位小点)

Off 档位(不铺颜色,只留轨道与后续档位小点)

它改了什么、没改什么

- 只遮住 composer 的模型座位(slot conversation.input.model,本插件以 priority -1 注册;single slot 的规则是「同优先级冲突、最低优先级渲染」,官方 ui-model-selection 的座位在 0 被遮住)。
- 不替换官方包的其它能力:/model 命令弹窗、模型目录服务(ctx.modelDirectories)、 conversation.input.model.label 标签扩展(1017 角标等)都继续由官方包提供。
- 档位、档位名与说明来自模型目录本身(宿主侧的推理元数据),本插件不硬编码模型清单;滑杆的悬停提示里显示档位说明(已知档位 off/low/high/max 使用中文说明,其它提供方用目录自带的 description)。

安装

前提:已装 DSH(桌面端或 dsh web),profile 目录在 $DSH_HOME/profiles/<profile> (桌面端默认 ~/.dsh/profiles/desktop)。macOS 没有 Node.js 也可以:直接用仓库根的 install.command,它会借用 DSH 桌面端自带的运行时。

1) 克隆到一个不会被清理的目录(不要放 /tmp,装完 profile 会软链到这个目录)
git clone https://github.com/kaivenw/dsh-effort-slider.git
国内网络可用:git clone https://gitee.com/CodealienMan/dsh-effort-slider.git
cd dsh-effort-slider

2) 安装到默认 profile(桌面端 ~/.dsh/profiles/desktop;没有就找 web)
node scripts/install-profile.mjs
或显式指定:node scripts/install-profile.mjs --profile ~/.dsh/profiles/desktop 没有 Node.js 的 macOS 可以直接:./install.command

仓库里已带构建好的 client.js,安装不需要构建,也不需要装依赖。

脚本只做三件事(幂等,带备份):
1. profile package.json 的 dependencies 加 "@local/dsh-effort-slider": "link:<本仓>";
2. 同一份 package.json 的 dsh.profile.bundles 末尾追加 @local/dsh-effort-slider;
3. 在 node_modules/@local/dsh-effort-slider 建一条指向本仓的软链。

装完重启 DSH(桌面端退出重开;dsh web 重启进程)才会加载新的组合包。
卸载:node <本仓>/scripts/install-profile.mjs --uninstall,同样需要重启。

开发时热加载(可选)

如果 profile 的 cordis.patch.yml 已经挂了 hmr 且 root 指向本仓目录,改完 client.js 后已打开的页面会自动替换插件;没有 HMR 时刷新页面即可(不用重启 DSH):

- id: hmr
disabled: false
config:
root:
- '<本仓绝对路径>'

改 src/client/** 后先重新构建(构建需要 esbuild):

pnpm install # 或 npm install
pnpm run build # 等价于 node scripts/build-client.mjs

打包分发

pnpm run package # 产物:dist/dsh-effort-slider-<version>.zip

zip 解压后是自包含目录(含 recipients 用的安装说明、install.command、预构建的 client.js)。
client.js 比 src/client 旧时脚本会直接失败——先跑 node scripts/build-client.mjs。

开发沙盒(不动真实 profile)

export DSH_HOME="$PWD/.dsh-dev" # 任意 workspace 内目录
用桌面端内置的 CLI 起一个独立 web 实例(下面是 macOS 默认安装路径)
DSH_APP="/Applications/DeepSeek Harness.app/Contents/MacOS/DeepSeek Harness"
ELECTRON_RUN_AS_NODE=1 "$DSH_APP" \bash
"/Applications/DeepSeek Harness.app/Contents/Resources/app.asar/dsh/node_modules/@deepseek-ai/dsh/lib/bin.js" \
web --no-open --port 63150

上面的 asar 内路径以 0.2.1-rc.2 为例;换版本时用 dsh --version 对应的命令行即可,或者直接用全局安装的 dsh web。

沙盒配置档里用 pi-ai 的 reasoningEfforts 配一个假模型,就能在没有账号的情况下调 UI,不必依赖真实模型目录。

已知边界

- 本插件依赖官方 @deepseek-ai/dsh-client-ui-model-selection 提供的 modelDirectories 服务;停用官方包后本插件不会激活(composer 会没有模型座位)。
- 只换交互,不改请求:档位选择仍走 session.selectModel,从下一次请求生效,与官方选择器一致。
- 模型目录为空或当前模型没有推理元数据时,浮层只显示模型切换行,不显示滑杆。

License

MIT,见 LICENSE。
预览分享卡片长什么样 ↓kaivenw/dsh-effort-slider
分享 · DeepSeek Harness Hub
kaivenw/dsh-effort-slider

拖动滑杆直观切换模型推理强度档位

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