dsh-im
xmanrui
通过扫码或机器人凭据把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord和WhatsApp)。 Connect IM bots to DeepSeek Harness via QR code or credentials (9 channels).
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Phant0Meow/dsh-meow-smooth
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
dsh(DeepSeek Harness)前端体验增强插件,零 dsh 本体改动,纯客户端自包含。 装上之后,dsh 在手机上像原生 App 一样好摸,在电脑上也有更舒服的小细节。
tailscale实现手机端远程连接dsh(插件包含tailscale配置踩坑指导,AI看完应该可以帮你快速实现手机连接dsh,你就不用自己从零开始踩坑了。)
手机端ui交互优化,让手机端dsh真正可用。你可以躺着coding了。
电脑、手机都支持的通知系统。AI跑任务,你切出去刷b站了,AI跑完任务或者中途提问,会发通知给你。
还有一些ui交互方面的细节优化。
作者自己在用,亲测好用,非常提高幸福感。
dsh-meow-smooth:
dsh 的大会话在手机上看很慢——历史记录一次要拉好几 MB 的 JSON。插件内置压缩代理,把这些响应压缩 70–90%,蜂窝网络也流畅;流式输出和实时连接不受影响。默认关闭,需要时在配置里打开(见下文)。
从 GitHub 安装:源码在 src/,lib/ 不入仓库,安装时 npm 会触发 prepare 脚本现场构建,装完即用。
dsh plugin --profile web add github:Phant0Meow/dsh-meow-smooth
从 npm 安装:包内已含构建产物 lib/index.js 与 lib/client.js,安装时不再构建。
dsh plugin --profile web add meow-smooth
两种方式装完都会自动挂载,重启 DSH web 后启用,无需手工编辑任何组合文件。
npm 源
dsh plugin --profile web add meow-smooth自0.6.1起恢复可用;0.6.0及更早版本的package.json带 BOM 会解析失败,请避开。GitHub 源始终最新,推荐优先使用。
dsh plugin --profile web remove meow-smooth
彻底移除,重启 DSH web 后不再加载。
支持 dsh 0.1.5(含最新的 0.1.5-rc.1),同时向下兼容旧版本——升级 dsh 不需要改本插件,也不需要改配置,手机端链接(tailscale serve 指向)照旧。
其中的手机访问加速代理会自动分辨宿主版本:老版 dsh 没有响应压缩,代理就压缩历史记录;新版 dsh 自己已经会压缩,代理自动切成纯透传,不再多绕一层。这个判断靠实测能力、不认版本号,所以夹在中间的版本也各有正确行为。
页面内提醒卡片开箱即用;系统通知(Web Push / webhook)需要一点额外配置:
$DSH_HOME/.meow-smooth/;长任务完成阈值 longTaskToolCalls(默认 7)可在 patch config 里调整;webhookUrl(如 https://api.day.app/<Bark key>)后,三类事件也会 POST 到该地址;iOS 订阅建立后不会双通道重复提醒。webhookIconUrl / webhookAppUrl 可分别配置通知图标与点击跳转地址;飞书自定义机器人和企业微信群机器人要的不是 Bark 形状的报文,而是各自的卡片结构。插件只发 Bark 形状的 JSON,所以用它们需要一层转换:
scripts/feishu-relay.mjs 是一个零依赖的转发进程——接收插件发出的 Bark 形状报文,构造成飞书 interactive 卡片(按事件类型配色:待审批橙、待回答蓝、完成绿、失败红、启动青),签名后投递到群机器人的 webhook。
先把脚本放到你自己的目录。 下面的命令假定你就在一个含
scripts/的目录里。若你是从 npm 或dsh plugin add github:…安装的,文件在<profile>/node_modules/meow-smooth/scripts/下——请先把feishu-relay.mjs与feishu-relay.config.example.json复制到一个你自有的稳定目录再运行。脚本把配置与日志都写在它自己所在的目录,直接在node_modules里跑的话,重装一次就全丢了。
复制配置样例,填入群机器人的 webhook 地址(secret 只在飞书侧开了「签名校验」时才需要):
cp scripts/feishu-relay.config.example.json scripts/feishu-relay.config.json
patch 配置里让 webhook 每次都发,并把地址指向这个进程:
- id: meow-smooth
config:
enabled: true
webhookMode: always # 默认 fallback:桌面 Web Push 成功时 webhook 永不触发
webhookUrl: 'http://127.0.0.1:2587/'
webhookMode: always 是必须的:默认的 fallback 只在 Web Push 无订阅或全部失败时才发 webhook,而同一台机器的桌面端订阅通常是好的,于是 webhook 永远收不到东西。
启动转发进程(与 dsh 同机,常驻):
node scripts/feishu-relay.mjs
想让卡片按钮点了就能直接进 dsh,还需要额外把 dsh 的输出落盘。 dsh 的浏览器 cookie 是 SameSite=Strict、按浏览器各存各的、绑定 hostname+port,从手机上的 IM 点一个裸域名链接必然 401;能换到 cookie 的是带 launch token 的链接,而那个 token 只出现在 dsh 启动时的 stdout(在进程内存里,不落盘、没有文件可读)。所以把启动输出重定向到一个文件,并让配置里的 launchUrlFile 指向它(默认是同目录的 dsh-stdout.log):
dsh web --no-open > dsh-stdout.log 2>&1 # Linux / macOS(或 dsh web --no-open | tee dsh-stdout.log)
dsh web --no-open *> dsh-stdout.log # Windows PowerShell
启动顺序:先清空日志 → 再起转发进程 → 最后起 dsh。 上面那种重定向会在 dsh 启动时把日志清空,正合要求;但若转发进程先起、而日志里还留着上一轮进程的 token,它会立刻发出一个点不进去的链接。转发进程按 BOM 自动分辨 UTF-8 与 UTF-16LE,两种编码的日志都能读。
不配置 launchUrlFile 也能用,只是卡片按钮是裸域名——已经有 cookie 的浏览器仍能点开。
开启步骤:
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 Web 的 /api 有浏览器信任栅栏:Host 必须是回环地址,或命中启动时用 --trusted-host 声明的权威。经 Tailscale Serve 访问时 Host 是 MagicDNS 权威,必须先把它加进信任名单,否则页面能打开但所有 /api 请求 403(会话列表空白、插件数据加载失败)。
一步配置(以 MagicDNS 权威 pc.xxx.ts.net 为例,换成你自己的):
# 启动 DSH 时追加 --trusted-host
dsh --profile web --host 127.0.0.1 --port 3080 --trusted-host pc.xxx.ts.net
两条入口(二选一):
# A:不开压缩代理(默认),手机访问 https://pc.xxx.ts.net
tailscale serve --bg --https=443 http://127.0.0.1:3080
# B:经内置压缩代理(需在 patch 配置里开启 proxy.enabled),手机访问 https://pc.xxx.ts.net:8443
tailscale serve --bg --https=8443 http://127.0.0.1:8444
提示:
- A 入口默认无端口后缀;B 入口 URL 需带
:8443。- Tailscale Serve 的 HTTPS 同时提供
wss://升级与 PWA/Web Push 所需的安全上下文。- 若改用 Caddy / nginx 等反向代理,同样需要让 DSH 信任代理暴露的权威(
--trusted-host)。- 局域网直连同理:把网关/反代对外权威加入
--trusted-host。- 安装时请保持插件原名
meow-smooth(改名安装会导致前端注册 id 不匹配,页面报「Failed to load plugins」)。
已验证环境:DSH 0.1.5-rc.1 · meow-smooth 0.7.1 · Tailscale 1.102.3(Windows PC + Android 手机);DSH 0.1.1-rc.2 · meow-smooth 0.6.1 · Tailscale 1.102.3(Windows PC + Android 15 平板)。
data-* 属性);Accept-Encoding 给 /api/* JSON 加 gzip,SSE/WS/静态资源透传。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: notifications。