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

模型折叠选择器 KKYZD/dsh-model-fold

DeepSeek 客户端
KKYZD24 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

把模型选择器换成向上展开的折叠菜单,支持推理等级与键盘操作

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 向上展开折叠菜单
  • 推理等级选择
  • 键盘导航操作

DSH 的 ZCode 式模型选择器:服务商子菜单向上展开,可选推理强度,支持键盘导航。

README

由 DeepSeek 最新模型翻译生成
dsh-model-fold English · 中文 ZCode-style model picker for DeepSeek Harness. 把 composer 的模型选择器换成 ZCode 的交互模式:提供方菜单从触发器向上展开,模型子菜单浮在它旁边,可选推理等级,支持完整键盘导航 —— 不碰任何 DSH 源码。 - 触发器显示 model · reasoning effort,并在它上方打开提供方菜单(右对齐,能感知底部和右侧碰撞)。 - 提供方在菜单旁边打开模型子菜单(优先右侧,空间不够时翻到左侧)。第一行模型与悬停的提供方行对齐;底部会溢出时,面板整体上移刚好够用。目录很长时内部滚动。 - 当前模型所属的提供方和当前模型本身都带 ✓ ——「我在哪」始终可见。 - 推理等级:提供方下方有一行菜单,列出当前模型的等级(来自它的 reasoning.efforts);选中一个,就用新的 reasoningEffort 重新提交当前 provider/model,和内置座位完全一致。 - 键盘:↑/↓ 在当前面板内移动,→ 打开聚焦行的子菜单,←/Esc 收回,Esc 关闭并恢复焦点。 - 排版和界面跟随应用:14px UI 文字配 32px 行高,内置菜单表面(--dsw-specific-menu + 背景模糊),描边 chevron。
展开完整文档(README 剩余 1 节)
dsh-model-fold

English · 中文

ZCode-style model picker for DeepSeek Harness. 把 composer 的模型选择器换成 ZCode 的交互模式:提供方菜单从触发器向上展开,模型子菜单浮在它旁边,可选推理等级,支持完整键盘导航 —— 不碰任何 DSH 源码。

- 触发器显示 model · reasoning effort,并在它上方打开提供方菜单(右对齐,能感知底部和右侧碰撞)。
- 提供方在菜单旁边打开模型子菜单(优先右侧,空间不够时翻到左侧)。第一行模型与悬停的提供方行对齐;底部会溢出时,面板整体上移刚好够用。目录很长时内部滚动。
- 当前模型所属的提供方和当前模型本身都带 ✓ ——「我在哪」始终可见。
- 推理等级:提供方下方有一行菜单,列出当前模型的等级(来自它的 reasoning.efforts);选中一个,就用新的 reasoningEffort 重新提交当前 provider/model,和内置座位完全一致。
- 键盘:↑/↓ 在当前面板内移动,→ 打开聚焦行的子菜单,←/Esc 收回,Esc 关闭并恢复焦点。
- 排版和界面跟随应用:14px UI 文字配 32px 行高,内置菜单表面(--dsw-specific-menu + 背景模糊),描边 chevron。

安装(任选其一):

from npm, once published
dsh plugin --profile desktop add dsh-model-fold
from a local checkout
dsh plugin --profile desktop add "link:<this folder>"

需要 DSH >= 0.2.0-rc.1(已在 0.2.0-rc.2 上测试)。卸载:dsh plugin --profile desktop remove dsh-model-fold —— 内置选择器会自动回来;DSH 的安装目录从不被修改。

把 DSH composer 右下角的模型选择器换成 ZCode composer 选择器的交互模式,不修改任何 DSH 源码。

行为

- 触发器显示当前模型 + 当前推理等级(模型名 · 等级名,等级在 caption 弱化色里)+ 14px 小 chevron(↓);字号、行高、系统字体栈对齐 ZCode(--ui-font-size: 14px、32px 行高)。
- 提供方菜单:向上展开、右对齐锚在触发器上方;每个有模型的提供方一行,行尾有向右的小 chevron(›);当前模型所属的提供方带 ✓,"我在哪"不用展开就能看到。
- 推理等级:菜单底部(分隔线之下)有「推理等级」行,显示当前等级;悬停/点击/→ 开出等级子面板(Off/Low/High/Max…来自当前模型的 reasoning.efforts,无默认等级的模型多一项「Default」),当前等级带 ✓。选等级 = 以当前 provider/model + 新 reasoningEffort 重新提交,与内置座位的语义一致;选当前等级则仅关闭。模型不带 reasoning 元数据时该行不出现。
- 子面板:悬停、点击或按 → 打开;优先开在菜单右侧,右侧放不下时翻到左侧(ZCode/Radix 的碰撞翻转规则);垂直方向按 ZCode/Radix 的放置规则——面板第一行与所悬停的提供方行对齐,底部放不下时整体上移到恰好贴住视口下缘,比视口还高的面板钉在顶部并内部滚动(overscroll-behavior: contain)。
- 键盘:↑/↓ 在当前面板(提供方菜单或子面板)内移动焦点;→ 打开聚焦行(提供方或推理等级)的子面板并聚焦第一行;←/Esc 收回子面板回到所在行;Esc 在菜单级关闭整个选择器并把焦点还给触发器。
- 选择模型后菜单关闭,触发器标签立即更新。
- 目录加载失败时菜单内显示错误与重试按钮;目录为空时显示空态。

实现要点

- 不修改 DSH 源码。这是一个独立的客户端插件,通过 conversation.input.model 槽位接管 composer 的模型位。
- conversation.input.model 是 single 槽位,注册表按优先级选举一个占用者(entriesOfSlot,升序取第一个存活的)。内置模型选择器用默认优先级 0,本插件用 priority: -1 完成遮蔽 —— 这是注册表自身的遮蔽通道,不是 monkey-patch。
- 复用同一个 ModelDirectory 实例(ctx.modelDirectories.directoryFor(sessionId)),因此只有一次目录请求、一条选择提交路径;在这里切换模型,/model 弹窗立刻同步,反之亦然。
- 选择仍走 directory.select(...),所以推理强度默认值、pending 指示器、失败处理与内置完全一致。
- fiber inject 声明是授权门:座位的 inject 回调在渲染期运行(不在任何 ctx.inject 作用域内),服务代理把 this 绑定到调用方的 fiber —— 因此模块级必须导出 inject = ['slots', 'sessions', 'remote', 'remote.session'],否则 directoryFor 内部的 remote.session 访问被拒(cannot get property "remote.session" without inject),座位首渲染即崩、选举回落内置。内置 ModelSelect 声明了同一对服务。
- 菜单/子面板定位:打开时用 getBoundingClientRect() 测触发器/菜单,useLayoutEffect 里算出锚点(首帧绘制前完成,无闪烁);面板表面用应用自己的 --dsw-specific-menu + --dsw-menu-backdrop-filter + --dsw-elevation-prominent。

安装

发布到 npm 后(或在 DSH 的 插件 面板里直接填包名):

dsh plugin --profile desktop add dsh-model-fold

本地开发安装:

dsh plugin --profile desktop add "link:<本目录绝对路径>"

package.json 的 dsh.profile.bundles 会新增一行 dsh-model-fold。

卸载 / 回滚

dsh plugin --profile desktop remove dsh-model-fold

移除后 single 槽位的选举自动回落到内置模型选择器,无需其他清理。因为本插件从未改动 DSH 安装目录或 asar。

生效方式

- 宿主插件行在 DSH 重启后生效。
- 改 lib/client.js 后:重启 DSH 生效。 迁移到 ~/.dsh/plugins/ 之后,宿主的 HMR 监视不再捕获此处的文件变化(revision 不更新、旧 body 失效 → 404 / import failed),热刷新通道不可用;重启是唯一可靠路径。(早期放在工作区目录时宿主能感知变化,存在"改完立刻刷新"的重建竞态;该问题随迁移一并消失。)

开发与自检

node tools/verify.cjs # 一键跑全部四套
node tools/validate.cjs <本目录> # 清单与 bundle 格式
node tools/discover.cjs <profile cordis.yml> dsh-model-fold # 复刻宿主发现流程
node tools/smoke.cjs <本目录> # 子菜单选择器 39 项(桩件驱动)
node tools/election.cjs # 对真实 slots 内核验证优先级遮蔽 15 项

对运行中的 DSH(带 --remote-debugging-port=9222 启动)做端到端验证:

node tools/cdp-probe.cjs --reload --capture errors.json # 收集启动期 Console 报错
node tools/cdp-probe.cjs --eval tools/e2e-picker.js # 真机交互全流程

tools/election.cjs 与 tools/smoke.cjs 不需要浏览器:前者直接加载从 app.asar 提取的真实 SlotCore,后者用桩件驱动组件函数(含 ref 挂载与 layout/effect 队列的提交顺序模拟)。tools/shots/ 是真机截图(收起态 / 菜单 / 两个子面板)。

已知边界

- 只影响 composer 的模型位。/model 命令弹窗走 commandUi 的 popupSelect,是另一套渲染,本插件不改它。
- ZCode 的视觉徽标(vision 标签等)未照搬——DSH 目录数据里没有对应字段。
- 若内置选择器未来改用不同优先级注册,遮蔽会失效(界面退回内置样式,不会报错)。
预览分享卡片长什么样 ↓KKYZD/dsh-model-fold
分享 · DeepSeek Harness Hub
KKYZD/dsh-model-fold

把模型选择器换成向上展开的折叠菜单,支持推理等级与键盘操作

回到顶部