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

移动端界面适配 mexiaosqwq/dsh-web-mobile

DeepSeek Harnessv3.2.1
mexiaosqwq2 天前有提交已提供中文文档扫描:含敏感能力ui

DSH Web UI 移动端适配:窄屏好用,宽屏适用

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

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

自动兼容检查未通过:engines.node 要求 >=24.0.0,不满足 Node 22.19.0。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mexiaosqwq/dsh-web-mobile
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

engines.node 要求 >=24.0.0,不满足 Node 22.19.0

展开查看检查明细 ↓

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

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

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 15:35:26

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
  • 发起网络请求
    lib/client.js:12528
    const response = await fetch('/api/mobile-nav.session.delete', {
  • 发起网络请求
    lib/client.js:17518
    void fetch(beacon, { method: 'POST', mode: 'no-cors', body: payload() }).catch(() => { });
  • 读取本地文件
    lib/delete-session.js:191
    entries = await readdir(dir, { withFileTypes: true });
  • 写入本地文件
    lib/delete-session.js:231
    await mkdir(trashRoot, { recursive: true });
  • 写入本地文件
    lib/delete-session.js:232
    await rename(dir, trashDir);
  • 写入本地文件
    lib/delete-session.js:247
    await writeFile(join(trashDir, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`);
  • 读取本地文件
    lib/delete-session.js:259
    for (const name of await readdir(trashRoot)) {
  • 读取本地文件
    lib/delete-session.js:261
    const stats = await stat(join(trashRoot, name));
  • 删除本地文件递归
    lib/delete-session.js:263
    await rm(join(trashRoot, name), { recursive: true, force: true });
  • 读取本地文件
    lib/file-transfer.js:126
    const parent = await lstat(root);
  • 写入本地文件
    lib/file-transfer.js:129
    await mkdir(dir, { recursive: true, mode: 0o700 });
  • 读取本地文件
    lib/file-transfer.js:130
    const info = await lstat(dir);
  • 读取本地文件
    lib/file-transfer.js:140
    const members = (await readdir(dir)).filter(name => /^[a-f0-9]{48}\.json$/.test(name));
  • 读取本地文件
    lib/file-transfer.js:152
    if (marker) candidates.push({ id, marker, time: (await lstat(join(dir, id + marker))).mtimeMs });
  • 删除本地文件
    lib/file-transfer.js:159
    await unlink(join(dir, retired.id + '.json'));
  • 删除本地文件
    lib/file-transfer.js:160
    await unlink(join(dir, retired.id + retired.marker));
  • 删除本地文件
    lib/file-transfer.js:164
    catch (error) { await handle.close(); await unlink(file).catch(() => {}); throw error; }
  • 读取本地文件
    lib/file-transfer.js:175
    const info = await lstat(file);
  • 读取本地文件
    lib/file-transfer.js:198
    const file = join(dir, id + suffix), info = await lstat(file);
  • 删除本地文件
    lib/file-transfer.js:295
    await unlink(join(dir, record.id + '.json'));
  • 发起网络请求
    src/client/debug.ts:146
    void fetch(beacon, { method: 'POST', mode: 'no-cors', body: payload() }).catch(() => {})
  • 读取本地文件
    src/delete-session.ts:257
    entries = await readdir(dir, { withFileTypes: true })
  • 写入本地文件
    src/delete-session.ts:293
    await mkdir(trashRoot, { recursive: true })
  • 写入本地文件
    src/delete-session.ts:294
    await rename(dir, trashDir)
  • 写入本地文件
    src/delete-session.ts:308
    await writeFile(join(trashDir, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`)
  • 读取本地文件
    src/delete-session.ts:320
    for (const name of await readdir(trashRoot)) {
  • 读取本地文件
    src/delete-session.ts:322
    const stats = await stat(join(trashRoot, name))
  • 删除本地文件递归
    src/delete-session.ts:323
    if (stats.mtimeMs < cutoff) await rm(join(trashRoot, name), { recursive: true, force: true })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-runtime@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-session-log-export
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

3 张 · 点击查看大图

功能亮点

  • 窄屏适配
  • 宽屏适配

README

由 DeepSeek 最新模型翻译生成
dsh-web-mobile — 手机上也能好好用 DSH DSH Web UI 移动端适配:窄屏好用,宽屏适用 📦 已内置于 DSHA —— DeepSeek Harness 安卓启动器把本插件作为内置移动端适配(打包时的源码快照),装 APK 开箱即用;本仓库之后的更新要等 DSHA 重新拉取源码并发布 App。感谢作者 @qiannianhuanxiang 的集成与推广 🙏 dsh-web-mobile 是 DeepSeek Harness Web UI 的移动端适配插件——让 DSH 在手机竖屏下也能好好用: - 弹窗变浮层:设置、文件树、预览改成底部 sheet,触屏好点 - 状态栏避让:刘海安全区、深/浅主题、双击缩放都处理 - 输入区不打架:权限胶囊、模型名、切换菜单在窄屏下不重叠 - 长会话不卡流量:宿主返回的大 JSON(会话历史等)自动 gzip/brotli 压缩,手机端加载明显提速 - 平板也管:768–1023px 触屏设备限宽居中,≥1024px 触屏大平板的会话行 ⋯ 菜单仍带「删除会话」;桌面端(鼠标指针)任何宽度都是完全 no-op,窄窗口/系统缩放也不会误启移动 UI 效果 | 会话主页 | 目录抽屉 | 设置界面 | | 移动端会话主页 | 目录抽屉 | 移动端设置界面 | 更新内容
展开完整文档(README 剩余 1 节)
dsh-web-mobile — 手机上也能好好用 DSH

DSH Web UI 移动端适配:窄屏好用,宽屏适用

📦 已内置于 DSHA —— DeepSeek Harness 安卓启动器把本插件作为内置移动端适配(打包时的源码快照),装 APK 开箱即用;本仓库之后的更新要等 DSHA 重新拉取源码并发布 App。感谢作者 @qiannianhuanxiang 的集成与推广 🙏

dsh-web-mobile 是 DeepSeek Harness Web UI 的移动端适配插件——让 DSH 在手机竖屏下也能好好用:

- 弹窗变浮层:设置、文件树、预览改成底部 sheet,触屏好点
- 状态栏避让:刘海安全区、深/浅主题、双击缩放都处理
- 输入区不打架:权限胶囊、模型名、切换菜单在窄屏下不重叠
- 长会话不卡流量:宿主返回的大 JSON(会话历史等)自动 gzip/brotli 压缩,手机端加载明显提速
- 平板也管:768–1023px 触屏设备限宽居中,≥1024px 触屏大平板的会话行 ⋯ 菜单仍带「删除会话」;桌面端(鼠标指针)任何宽度都是完全 no-op,窄窗口/系统缩放也不会误启移动 UI

效果

| 会话主页 | 目录抽屉 | 设置界面 |
| 移动端会话主页 | 目录抽屉 | 移动端设置界面 |

更新内容

v3.2.2 (预发行 · 兼容 0.2.1 及以后)

- 平板(≥1024 触屏):设置入口改为账户行右端的齿轮,账户菜单里的设置项收起
- 平板:设置弹层改成手机档形态(贴顶整宽、顶部横排页签),并隐藏「打开配置文件」
- 平板:会话行高 44px、行内操作命中区 40×40,指尖可点
- 平板:标题行的状态入口(Agent Team / 子智能体 / 后台任务)居中,后台任务出现或消失时中心不跳
- 兼容:手机档与桌面档不受影响(改动全部在 ≥1024 + 粗指针内)

- 修输入中旋转横屏后输入框被顶栏盖住、只能刷新恢复的问题
- 提问卡:超长问题不再把卡片撑满,答案区可展开到整条可见带,键盘弹起时不再盲打
- 提问卡三颗图标命中区 44px,选项区与问题之间加分隔线
- 侧边栏「更多」菜单留在抽屉内;下载记录与会话日志导出合并为右上角一个菜单
- 头部收起多余入口,页签恢复单行,子智能体谱系标记回到页签行

v3.2.1 (兼容 0.2.1 及以后)

- 手机端一批真机反馈的排版与交互修正:头部与对话区留白重排、输入卡片功能键对齐、插件面板与图片查看更顺手
- 提问卡的问题正文不再消失,也能长按选中、复制
- 首次进入点「继续」不再卡几秒;大响应返回时也不再拖住同进程的其它请求
- 兼容:桌面/平板档不受影响(改动全在移动媒体查询内);宿主代际仍为 0.2.1 及以后

新功能

- 原图灯箱支持双指缩放:只缩放图片本身,页面不再跟着一起放大

修复

- 手机端会话头部更紧凑:标题与页签行之间的多余空白收回,发送/停止键同步收小
- 对话区留白重排:运行状态、回复与输入卡片之间的空隙更均匀,输入卡片里的功能键与文字重新对齐
- 输入卡片的功能图标统一到同一档灰度,功能键尺寸放大到与发送/停止键一致
- 插件面板进到子页后按返回只退一层,不再一次把整个面板关掉
- 插件页页首的标题与工具按钮回到同一行,不再被挤成多行堆叠
- 看大图时遮罩右侧一条没盖住、也点不动;遮罩现在铺满整屏
- 退出插件面板时不再弹出输入法
- 头部「智能体团队」与「子智能体」两颗芯片开关面板时不再闪一块灰底
- 会话数据诊断面板的折叠三角更容易点中,快速滑动时顶部吸顶的行不再撕裂闪烁
- 首次进入「预览版说明」点「继续」不再停在「正在保存…」几秒;几 MB 的响应返回时,同进程的其它请求不再被堵住

v3.2.0 (兼容 0.2.1 及以后)

- 手机端一批真机报障修复:浏览器里点输入框不再把整页顶出屏幕、iOS 侧区能正常起手滚动、抽屉会话列表多出 40px、开着壁纸不再透明
- 宿主 0.2.1 适配:统计条与上下文环、后台任务文案重新对齐;第三方「模型能力」面板退场后,为它写的换行适配一并退休
- 工程侧:仓库文档改分层披露(根指令瘦身,验收、协作与发版文案手册独立成篇),带日期的审计与 fork 对账记录转为本地保留
- 兼容:0.1.7-rc.1 起仍照常支持,0.1.6-alpha.2 建议维持 3.0.0、0.1.5 之前仍建议 2.4.1

修复

- 手机浏览器(Chrome / Edge for Android)点开输入框时整页被顶上去、顶栏一起出屏——内置 WebView 与桌面不受影响(#226, by @FanetheDivine)
- iOS 上侧边抽屉与文件面板从静止起手时纵向滚动失效,只有屏幕正中一条窄缝能滚(#222, PR #223)
- 抽屉底部的「导出会话日志」胶囊独占一行、占掉约 1.2 个会话的高度——入口改到抽屉品牌行右端,会话列表多出 40px(#225, PR #227)
- 开着壁纸插件时抽屉整列与深色顶栏变透明、背后内容透出(#228, PR #229)
- 宿主 0.2.1 上统计条与上下文环退回原生小药丸、百分比数字外露(#216)
- 宿主 0.2.1 上后台任务文案挤回标题行、被右上角文件夹图标压住(#217)
- dsh-our-free-model 的设置页在手机上滚动掉帧,公告提示也不再被抽屉盖住(#214、#221)
- 插件不再自行补写模型的思考档位:改由官方设置页管理,手动关掉的档位不会再被写回,已写入的配置照旧生效(#218)

v3.1.0(兼容 0.1.7-rc.1 及以后)

- 顶栏座位重做、性能第一批与补丁秩序上线
- 这也是第一次大规模重构:TS / JS 源文件拆得更工整,随之而来的是更顺手的后续维护

新功能

- 自定义 API 里声明不支持自定义思考强度的模型自动归入「跟随模型默认」,不再因强行写入档位而报错
- 兼容补丁登记门禁:每个补丁必须自报用途与对应测试,登记表与源码不一致时构建直接失败

修复

- 状态栏 TPS 读数有时停在旧宽度——纯文本更新唤不醒排版任务
- 侧边栏面板退出途中出错时,屏幕上会留下一张永不自清的全屏快照
- 快速重进面板时,上一次退场的清理会误删这一次刚挂上的快照
- 市场「已安装」列表的行样式在列表根节点换代的宿主上可能整列表静默漏写
- TPS 缺席时状态行的多余全表扫描(改为可短路)
- 顶栏拥挤的几处:后台任务圆点移入标题行、子智能体 chip 钉在标签行右端、长标题改省略号且可展开、预设 chip 不再贴住邻居
- 顶栏、TPS 读数、模型菜单、回形针浮层各自反复读尺寸的问题——合并到每帧一次,滚动与流式输出更顺
- 市场「已安装」列表每帧重复定位整个列表容器——现在缓存容器、只在容器内扫描
- 本批手机档改动收进 ≤767px 作用域,平板档几何与本批之前零差异

v3.0.6(兼容 0.2.0-rc.1 / rc.2)

- 移动端交互、布局与性能整批修复:会话行单击切换、文件面板工具栏、0.2.0 会话头部、推理等级面板宽度、流式状态条去重、深色顶栏衔接、上下文环落位。0.1.x 全线照常支持,0.1.6-alpha.2 建议维持 3.0.0、0.1.5 之前仍建议 2.4.1。

新功能

- 回形针「上传附件」接上 App 的文件选择通道(桥优先,无桥回落系统选择器)
- 会话行的归档 / 置顶快捷按钮在手机档收进 ⋯ 菜单(#154)

修复

- 与 dsh-pocket 同装时不再因 locale 命名空间重名把整站启动打挂(#165)
- 会话行单击即可切换,并修掉随之而来的重复选中
- 文件面板在手机档固定只留「收起右侧边栏」,分栏与退出全屏不再误触
- 0.2.0 的会话头部标题不再压到左上角开关上
- 子代理运行时的停止键与发送键贴回右缘(#191)
- 抽屉底色跟随宿主主题,暗色下不再发白(#192)
- 底部安全区补齐:769–1023px 触屏设备的会话内容不再压进系统手势条(#193)
- 流式输出期间状态条的重复读写收敛(#194)
- 设置面板遮罩淡入恢复正常(此前一条非法选择器让整条规则被静默丢弃)
- 竖屏下 mattskills 状态栏胶囊的尾巴(技能 ⊞ / 收起 ⌄)不再被裁掉
- 手机上的推理等级面板收窄到内容宽度,不再占掉半屏
- 正在输出时输入内容,上下文环不再压住停止键
- 深色下会话头部与页面底色一致,顶部不再出现一条突兀的灰带(#176)
- 文档预览与插件页一批:屏外代码行不再参与布局、插件条目整卡可点、Models 页模型行不再被超长 chip 挤成竖条

v3.0.5(兼容 0.2.0-rc.1 / rc.2)

- 自定义 API 的模型开箱可选思考等级,并收掉一批手机端交互问题:0.1.x 全线照常支持,0.1.6-alpha.2 建议维持 3.0.0、0.1.5 之前仍建议 2.4.1。

新功能

- 自定义 API 的模型开箱可选思考等级:手写的供应商模型不必再逐条补档位配置,官方「推理等级」控件直接可用(默认给出 off / low / medium / high / max,只补用户自己层里没写档位的模型、不覆盖已写档位)
- 手机上的文件分享入口:文件树行尾与预览头部各一个按钮,可一键把文件送出去;当前环境不支持系统分享时(如内置 WebView),按钮如实显示为「下载「x」」并走系统保存流程,不拿「分享」二字骗人

修复

- 删除会话不再误报失败:宿主先把会话落库、随后把响应掐断时,改以会话列表为准判定结果
- 模型与推理等级菜单在手机上不再自动弹出软键盘(点搜索框仍然照常输入)
- 回形针两选项浮层不再「弹一下」:定位稳定后再显形
- 第三方模型档位面板在手机上不再移出屏幕(#152 by @BuvkB)
- iOS 输入框不再沉到系统辅助条下面(#149, PR #150)
- 长按选区拖拽手柄不再把视口带到会话顶部,并落地一批手机端修复(PR #155)

安装

DSHA 用户无需单独安装:DSHA 内置本插件,但内置的是它打包时的源码快照——本仓库之后的新版本要等上游重新拉取并发布 App 更新才会带上,想立刻用上本版仍按下文单独安装。

从 npm 一行装(仓库自带构建产物,无需构建配置),装完重启 dsh web:

dsh plugin --profile web add dsh-web-mobile

GitHub 直装:dsh plugin --profile web add github:mexiaosqwq/dsh-web-mobile

本地开发:

dsh plugin --profile web add link:/path/to/dsh-web-mobile

构建

pnpm install
pnpm build

lib/ 与源码同步入库,改动源码后重新构建再提交。

贡献与工程

欢迎大家的 issue 和 PR,我会尽可能地进行解决!

工程约定见 AGENTS.md;回归探针 scripts/probes/ 22 个锚点可单跑,兼作宿主升级绊线。

License

MIT
预览分享卡片长什么样 ↓mexiaosqwq/dsh-web-mobile
分享 · DeepSeek Harness Hub
mexiaosqwq/dsh-web-mobile

DSH Web UI 移动端适配:窄屏好用,宽屏适用

回到顶部