把模型选择器换成向上展开的折叠菜单,支持推理等级与键盘操作
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 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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 目录数据里没有对应字段。 - 若内置选择器未来改用不同优先级注册,遮蔽会失效(界面退回内置样式,不会报错)。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
KKYZD/dsh-model-fold
把模型选择器换成向上展开的折叠菜单,支持推理等级与键盘操作
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1