修复 iPad 滑动卡死与键盘误弹,让触控操作顺滑
33.1/100
综合分
0
GitHub 星标
125
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/AnonyJcy/dsh-plugin-mobile-touch.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 67 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@anonyjcy/dsh-plugin-mobile-touch @ 1.1.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 10:24:35
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 24 处,展示前 22 条)
- 读取本地文件src/installer.ts:83
const content = await readFile(patchFile, 'utf8') - 写入本地文件src/installer.ts:98
await mkdir(dirname(moduleTarget), { recursive: true }) - 读取本地文件src/installer.ts:102
const s = await stat(moduleTarget) - 删除本地文件递归src/installer.ts:104
await rm(moduleTarget, { recursive: true, force: true }) - 读取本地文件src/installer.ts:120
patchContent = await readFile(patchFile, 'utf8') - 写入本地文件src/installer.ts:132
await writeFile(patchFile, patchContent, 'utf8') - 读取本地文件src/installer.ts:149
const s = await stat(moduleTarget) - 删除本地文件递归src/installer.ts:151
await rm(moduleTarget, { recursive: true, force: true }) - 读取本地文件src/installer.ts:159
let patchContent = await readFile(patchFile, 'utf8') - 写入本地文件src/installer.ts:164
await writeFile(patchFile, patchContent, 'utf8') - 读取本地文件src/installer.ts:186
const content = await readFile(patchFile, 'utf8') - 读取本地文件bin/cli.js:42
const content = await readFile(patchFile, 'utf8') - 写入本地文件bin/cli.js:54
await mkdir(dirname(moduleTarget), { recursive: true }) - 读取本地文件bin/cli.js:57
const s = await stat(moduleTarget) - 删除本地文件递归bin/cli.js:59
await rm(moduleTarget, { recursive: true, force: true }) - 读取本地文件bin/cli.js:74
patchContent = await readFile(patchFile, 'utf8') - 写入本地文件bin/cli.js:86
await writeFile(patchFile, patchContent, 'utf8') - 读取本地文件bin/cli.js:100
const s = await stat(moduleTarget) - 删除本地文件递归bin/cli.js:102
await rm(moduleTarget, { recursive: true, force: true }) - 读取本地文件bin/cli.js:110
let patchContent = await readFile(patchFile, 'utf8') - 写入本地文件bin/cli.js:114
await writeFile(patchFile, patchContent, 'utf8') - 读取本地文件bin/cli.js:133
const content = await readFile(patchFile, 'utf8')
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 修复iPad滑动卡死
- 防止键盘误弹
- 优化触控操作
为 DeepSeek Harness Web GUI 做移动端和 iPad 触屏优化的插件
README
由 DeepSeek 最新模型翻译生成📱 dsh-plugin-mobile-touch
DSH Market 收录徽章
npm version
GitHub release
license
DeepSeek Harness (DSH) 移动端与 iPad 触控交互深度优化插件。
针对 iPadOS / Safari WebKit 渲染引擎与触控手势管线深度定制,彻底解决手势拦截卡死、会话切换输入法弹起误触、全页弹性颠簸与侧边栏折叠抖动等全链路痛点。
🌟 核心问题深度剖析与解决方案(踩坑实录与内核原理解析)
在 iPad (Safari/WebKit) 上使用现代 Web 应用(如 DeepSeek Harness Web GUI)时,经常会遇到一系列严重影响体验的底层内核与手势冲突。本项目在研发过程中深入攻克了以下关键机制:
1. HTML5 拖拽属性(draggable="true")导致的触控滑动卡死
* 问题表象:在左侧工作区列表中滑动时,10 次里有 8~9 次完全滑不动、像被锁死一样,只有极快猛甩才能偶尔滑一下。
* 深层根因:DSH 为了支持 PC 端鼠标拖拽排序,在每个会话行上声明了 draggable={true}。
展开完整文档(README 剩余 1 节)
📱 dsh-plugin-mobile-touch
DSH Market 收录徽章
npm version
GitHub release
license
DeepSeek Harness (DSH) 移动端与 iPad 触控交互深度优化插件。
针对 iPadOS / Safari WebKit 渲染引擎与触控手势管线深度定制,彻底解决手势拦截卡死、会话切换输入法弹起误触、全页弹性颠簸与侧边栏折叠抖动等全链路痛点。
🌟 核心问题深度剖析与解决方案(踩坑实录与内核原理解析)
在 iPad (Safari/WebKit) 上使用现代 Web 应用(如 DeepSeek Harness Web GUI)时,经常会遇到一系列严重影响体验的底层内核与手势冲突。本项目在研发过程中深入攻克了以下关键机制:
1. HTML5 拖拽属性(draggable="true")导致的触控滑动卡死
* 问题表象:在左侧工作区列表中滑动时,10 次里有 8~9 次完全滑不动、像被锁死一样,只有极快猛甩才能偶尔滑一下。
* 深层根因:DSH 为了支持 PC 端鼠标拖拽排序,在每个会话行上声明了 draggable={true}。在 iPadOS 15+ 上,WebKit 支持了多任务拖放手势;当手指触碰带有 draggable 的 DOM 节点时,WebKit 会启动约 50ms 的长按拖拽识别等待。只要手指稍有自然停顿,WebKit 的 DragGestureRecognizer 就会抢占手势并强制派发取消信号,直接掐死纵向滚动!
* 解决对策:在 touchstart / pointerdown 捕获阶段第 0 毫秒即时剥离触碰链条上的 draggable 属性,配合 MutationObserver 和原型链封杀,确保 WebKit 100% 毫无延迟地分发为纵向顺滑滚动。
2. 会话切换时自带虚拟软键盘频繁弹起占半屏
* 问题表象:在 iPad 上点击切换查看不同历史会话时,系统巨大的软键盘自动弹起遮挡半屏并引起视口剧烈抖动。
* 深层根因:DSH 核心的 InputBar.tsx 在 sessionId 切换时,React useEffect 默认会自动调用 textarea.focus()。桌面端用于快速输入,但在移动端触屏上会直接强行拉起系统软键盘。
* 解决对策(Keyboard Focus Guard):在原型链层面拦截 HTMLTextAreaElement.prototype.focus。仅当检测到用户手指在过去 350ms 内真实直接点击了输入框本身时才放行聚焦;所有会话切换、页面加载引起的自动聚焦全部在底层被静默压制,浏览历史对话绝不再误弹键盘。
3. iPad 1024px 临界值抖动导致侧边栏自动缩窄
* 问题表象:点击会话或者滑动后,左侧工作区突然自动折叠成只有图标的 56px 小窄条。
* 深层根因:DSH 内置 SIDEBAR_AUTO_COLLAPSE = 1024 阈值判定。iPad 屏幕分辨率恰好落在 1024px 临界线上;会话切换引起的重绘或微小尺寸波动(1023.5px 与 1024px 间横跳)会导致 DSH 误判进入手机窄屏模式并重置折叠状态。
* 解决对策(Sidebar Persistence):智能识别平板屏幕($\ge 768\text{px}$)并常驻锁定侧边栏展开状态,仅当用户主动点击左上角折叠按钮时才进行收起,切换会话永不缩水。
4. 局部滑动带跑整个页面(Overscroll Chaining & PreventDefault)
* 问题表象:手指在工作区滑动时,整张网页跟着上下晃动甚至触发浏览器下拉刷新。
* 深层根因:在 WebKit 触控管线中,当内部容器滑动如果未在拖拽时消费事件,WebKit 会将手势冒泡升级为整个 Window 窗口的弹性橡皮筋下拉(Rubberband Bounce)。
* 解决对策:在独占式树状触控引擎中,拖拽滑动时精准执行 e.preventDefault() 并对 scrollTop 实施严格物理边界收敛,切断全页回弹链条,页面稳如磐石。
✨ 核心特性一览
- 🎯 智能硬件感知:自动识别 pointer: coarse、多点触控与移动端环境,仅在触控屏上激活;桌面鼠标环境零开销、零干扰。
- ⚡ 独占式树状列表触控引擎(Dedicated Tree Scroller):100% 毫秒级即时滑动响应,配合物理阻尼算法实现丝滑 ProMotion 惯性滑行。
- 🛡️ 软键盘智能防误弹守卫(Focus Guard):彻底解决切换对话时虚拟输入法跳出占屏的痛点。
- 📌 iPad 平板大屏侧边栏常驻守护:杜绝 1024px 临界值抖动引起的侧边栏自动缩窄。
- 📏 精准原生滚动条渲染:彻底消除破碎变形与遮罩遮挡,等比例精准反映滚动进度。
- 🔌 全域自动自适应(Future-Proof):后续安装或开发的任何新 UI 插件无需单独写适配代码,自动享有触控优化。
🚀 安装与部署
方式一:通过 npm / pnpm 安装(官方 npm 源)
npm 安装
npm install -D @anonyjcy/dsh-plugin-mobile-touch
pnpm 安装
pnpm add -D @anonyjcy/dsh-plugin-mobile-touch
运行 CLI 一键挂载到 DSH Web Profile
npx @anonyjcy/dsh-plugin-mobile-touch install
方式二:克隆仓库直接安装(本地使用)
git clone https://github.com/AnonyJcy/dsh-plugin-mobile-touch.git
cd dsh-plugin-mobile-touch
一键挂载到 DSH Web Profile (~/.dsh/profiles/web)
node bin/cli.js install
检查安装状态与健康度
node bin/cli.js status
🛠️ CLI 命令一览
node bin/cli.js install [profile] # 挂载触控优化插件到 DSH profile(默认: web)
node bin/cli.js uninstall [profile] # 从 DSH profile 干净卸载插件
node bin/cli.js verify [profile] # 校验安装与软链接完整性
node bin/cli.js status [profile] # 查看当前安装状态与配置路径
📄 开源许可证
本项目基于 MIT License 开源。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
AnonyJcy/dsh-plugin-mobile-touch
修复 iPad 滑动卡死与键盘误弹,让触控操作顺滑
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目