dsh-meow-smooth 喵丝滑——手机端远程使用dsh,躺着coding,刷b站coding
dsh(DeepSeek Harness)前端体验增强插件,零 dsh 本体改动,纯客户端自包含。 装上之后,dsh 在手机上像原生 App 一样好摸,在电脑上也有更舒服的小细节。
tailscale实现手机端远程连接dsh(插件包含tailscale配置踩坑指导,AI看完应该可以帮你快速实现手机连接dsh,你就不用自己从零开始踩坑了。)
手机端ui交互优化,让手机端dsh真正可用。你可以躺着coding了。
电脑、手机都支持的通知系统。AI跑任务,你切出去刷b站了,AI跑完任务或者中途提问,会发通知给你。
还有一些ui交互方面的细节优化。
作者自己在用,亲测好用,非常提高幸福感。
dsh-meow-smooth:
功能
打字舒服
- 输入框失焦自动折叠:长草稿不再一直占着半个屏幕。写完切走,输入框自动收成一行;点一下又展开,草稿内容和滚动位置原样保留。
- 手机上回车 = 换行:手机键盘的回车键变成"换行",不怕误触把半截话发出去;Shift/Ctrl/Enter 和输入法选词不受影响,桌面键盘依旧是回车发送。
- 打字时顶部栏自动让位:唤起输入法时,对话/轨迹那些标签自动隐藏,屏幕最上方只留一条当前会话名——你知道自己正在跟谁聊;键盘收起,一切恢复原样。
手机上更顺滑
- 模型名不再挤按钮:手机窄屏下模型名只保留一点宽度,输入框左侧的按钮不会再被挤掉。
- 模式选择只留图标:agent preset 在手机上只显示一个小图标,点一下展开完整名字,点别处自动收回。
- 侧边栏更聪明:窄屏下切换会话后,侧边栏自动收成一条窄栏,把屏幕还给对话;展开时点一下右侧空白就收起。
- 按钮只留图标:下载记录、后台任务、子代理这些按钮在手机上缩成紧凑的小图标,依旧一点就开。
- 顶部栏可以横滑:Session 名永远完整显示、绝不截断,内容超宽就左右滑着看。
- 禁止意外缩放:双击、双指捏合都不会再让页面意外缩放。
- 禁用橡皮筋回弹:页面下拉不会再回弹,更像原生 App 的手感。
- 设置页也适配了手机:手机上设置页全屏显示,左侧边栏收成图标列,点开展开;电脑上保持官方原样。
通知
- 提醒卡片:AI 跑长任务时中途要权限、或有问题等你回答——即使你没在看那个会话,屏幕上方也会弹出提醒卡片,点一下就跳过去处理。
- 系统通知:AI 跑完长任务、中途要权限或提问,哪怕你已经切出去刷 B 站了,也会弹系统通知,点通知直接回到对应会话。
- 多会话同时跑也不错过:一次开好几个会话同时跑,你在和其中一个聊天,别的会话有动静(跑完任务 / 要权限 / 提问)同样会提醒你。
- 手机也能收到系统通知:桌面和安卓直接弹系统通知;iPhone 通过 Web Push 或 Bark 等通道也能收到(配置见下文)。
- 不打扰:电脑端 dsh 页面正聚焦时不弹系统通知(官方面板/卡片负责提醒),切到别的窗口才弹。
手机上访问更快(可选)
dsh 的大会话在手机上看很慢——历史记录一次要拉好几 MB 的 JSON。插件内置压缩代理,把这些响应压缩 70–90%,蜂窝网络也流畅;流式输出和实时连接不受影响。默认关闭,需要时在配置里打开(见下文)。
安装
前置要求:dsh(DeepSeek Harness)0.x、Node.js ≥ 22。
npm install # esbuild(构建)+ web-push(运行时,仅通知功能需要)
npm run build # 产出 lib/index.js(host)+ lib/client.js(browser)
构建零 dsh 本体依赖,不需要安装任何 @deepseek-ai/* 包。
装配(二选一):
- profile 装配:把
cordis.patch.yml的 insert 条目加进目标 profile 的cordis.patch.yml(或把本包加入 profile 的 bundles 列表),重启 dsh 生效; - npm 包安装:
npm pack产出 tgz,在 dsh profile 里npm install <tgz>;浏览器端自动装配,host 侧经cordis.patch.ymlinsert 条目加载。
通知功能(可选)
页面内提醒卡片开箱即用;系统通知(Web Push / webhook)需要一点额外配置:
- HTTPS:Web Push / Service Worker 要求安全上下文——手机端需要一个 HTTPS 入口(Tailscale Serve、Caddy、nginx 均可),并从该入口"添加到主屏幕";
- iOS:16.4+(Web Push for Home Screen Web Apps),需在 PWA(从主屏幕图标打开)里完成通知授权;
- VAPID keys:首次启动自动生成,持久化在
$DSH_HOME/.meow-smooth/;长任务完成阈值longTaskToolCalls(默认 7)可在 patch config 里调整; - webhook 兜底(Bark 等):patch 配置
webhookUrl(如https://api.day.app/<Bark key>)后,三类事件也会 POST 到该地址;iOS 订阅建立后不会双通道重复提醒。webhookIconUrl/webhookAppUrl可分别配置通知图标与点击跳转地址; - iOS 已知限制:iOS 18.x 上 PWA 通知权限弹窗偶尔不出现(WebKit 320551)、APNs 偶尔投递不到(WebKit 319865)——均为概率性问题,授权成功后通常能正常收到,Bark 可作稳定兜底;
- 多实例:每个 dsh 实例各自在 patch 里配置,跳转/图标 URL 用各自入口。
手机访问加速(可选)
开启步骤:
profile 的
cordis.patch.yml里 meow-smooth 条目加:- insert: - id: meow-smooth name: 'meow-smooth' config: enabled: true proxy: enabled: true port: 8444 # 代理监听端口;targetPort 自动从 dsh --port 解析重启 dsh 生效(代理随插件生命周期启停,热重载/卸载自动关闭)。
把手机访问入口(反代)指向代理端口(示例:Tailscale Serve):
tailscale serve --bg --https=8443 http://127.0.0.1:8444手机用
https://<你的 MagicDNS 域名>:8443访问即自动加速。
注意:多实例时每个实例用不同代理端口(如实例 A → 8444、实例 B → 8445);默认关闭(不配置 proxy.enabled 就不启动),不会干扰现有部署。
实现方式(简要)
- 零 dsh 本体改动:所有功能都是插件自身的前端 CSS/JS 与 host 端审计监听,不改 dsh 任何源码;
- 输入框折叠、按钮缩窄、禁缩放等:注入 CSS + 事件委托,锚定官方 DOM 结构(
data-*属性); - 审批/提问提醒:host 端监听审计流投影未决状态,插件内只读路由暴露,client 轮询 + 隐形槽位跨会话感知;
- 通知:页面内 Notification + Web Push(PWA 资源由插件提供)+ webhook(Bark 等)三级通道,按可用性自动降级;
- 压缩代理:插件内置反向代理按
Accept-Encoding给/api/*JSON 加 gzip,SSE/WS/静态资源透传。
No comments yet. Be the first to write one.