dsh-go-adb-link:把 ADB TCP 连接交给 DSH 插件自动维护

前言

想在 DSH Go 手机版里让 AI 直接操作手机(查电量、截图、模拟输入、装卸载应用),前提是本机 adbd 能连上。手工做这件事有几处反复劳动:先确认手机开了 TCP 调试,再猜端口号,adb connect 之后断线了还要重连。dsh-go-adb-link 把这套动作收进插件里:自动找到手机上的 ADB TCP 端口、用本机 adb 连上并保持,引擎启动时自动重连。下面介绍它的能力边界和接入步骤。

这是什么

dsh-go-adb-link 是 DSH Go 的原生插件,维护者 edgy7493,仓库地址 github.com/edgy7493/dsh-go-adb-link。按 package.json,当前版本 1.2.4,许可证 MIT;仓库元数据显示 1 star,JavaScript 编写。

它解决的问题是:手机端通过 Stellar/Shizuku 的 TCP 通道或 adb tcpip 打开 adbd 后,插件自动发现端口并维护连接,使 DSH 的 bash 里可以直接执行 adb shell …。

需要注意它只适用于 DSH Go 手机版(本机引擎)。插件跑在手机自己的 Ubuntu 环境里,要能从该环境连到本机 adbd;装到其他环境不适用。

核心功能

插件注册了一个 composer strip 状态条和一个 ADB 面板。状态条有三种文案:ADB 已连接 · 3455、ADB 未连接、ADB 待授权。点状态条打开面板,面板展示状态、端口、设备、adb 客户端、自动重连开关,并提供 连接、扫描端口、断开、复制命令 四个按钮。

连接维护分三层:

  1. 引擎启动时自动重连。
  2. 掉线后自动重试,先试记住的端口和 3455、5555。
  3. 都不通且之前授权过,会在后台重扫;10 分钟最多一次。

端口扫描不看端口号,是全端口(1–65535)发 ADB 握手找 adbd,只认 CNXN/AUTH 应答,并过滤 TCP 自连造成的误报。

1.2.3 引入了 AI 行为提示:连接成功后向 AI 注入一段提示,需要系统级能力(appops/权限、安装卸载、读取受保护数据、截图、模拟输入、进程/电量查询等)且 adb 更省事时,AI 会主动用 adb,而不是绕路或先问一句。1.2.4 在此基础上新增面向 AI 的 adb 工具,原样执行 adb 参数、自动确保连接、返回退出码和输出,并在 App 里显示成原生卡片。

另一个细节:adb 客户端缺失时(例如运行时升级重置了 /usr),点「连接」会自动执行 apt-get install -y adb 补回。

安装与启用

插件已提交收录,PR 审核期间可以先用下面的方式安装,效果一样。

  1. npm 安装:国内镜像已同步,优先用这条。
   dsh plugin --profile web add dsh-go-adb-link

提示找不到版本时加官方源:

   dsh plugin --profile web add dsh-go-adb-link --registry=https://registry.npmjs.org/
  1. GitHub 直接装:
   dsh plugin --profile web add github:edgy7493/dsh-go-adb-link
  1. 离线 tarball:从 Releases 下载 dsh-go-adb-link-1.2.4.tgz 放到手机,然后本地安装:
   dsh plugin --profile web add /sdcard/Download/dsh-go-adb-link-1.2.4.tgz

装完到 App 的「引擎」页重启一次引擎,输入框上方的状态条才会出现。装完状态条立即出现;后续改动 lib/ 代码需要再次重启引擎。

按 package.json 的要求,需要 dsh >=0.2.1-rc.2 <0.3.0-0、node >=22,dshGo 声明的最低 App 版本为 1.0.11。版本不满足时安装或启用会失败。

首次授权

第一次连接时手机会弹出「允许 USB 调试吗」。点允许,并勾选「始终允许使用这台计算机进行调试」。

勾了之后重连不再弹窗,插件才能全自动;没勾的话每次重连都要再点一次。这一步只需做一次。

端口相关限制

README 里明确写了三件事:

  • 同一个手机换了端口也能用,点「连接」会全端口扫描,不依赖 3455。
  • 插件跑在哪台手机的环境里就找哪台,不会去连别的设备的局域网端口。
  • 只支持经典 ADB over TCP(adb tcpip、Stellar 的 TCP 功能)。Android 11+ 原生「无线调试」是 TLS 配对端口,纯 ADB 握手探测不到,需要改用其他方式。

数据与安全

运行记忆写在 $DSH_HOME/dsh-go/adb-link/state.json,记录端口、是否授权、是否自动重连;文件不在插件包内,卸载或升级不会带走,也不会误发。

插件会执行本机的 adb 程序,缺 adb 时调用 apt-get install -y adb。它声明不读取剪贴板、输入框、对话内容,只连 127.0.0.1 上识别出的 adbd。本机 adb server(127.0.0.1:5037)与 bash 共享,插件连上后普通 adb 命令同样可用。

典型用法

连接建立后,AI 可以在 DSH 的 bash 里直接执行 adb 命令。例如查设备和用 adb 拉取信息(README 给出的用法形态是「在 DSH 的 bash 里直接 adb shell …」,命令参数需按实际需要自行调整):

adb devices
adb shell getprop ro.build.version.release

面向 AI 的 adb 工具会让模型直接调用,不必经过 bash 字符串拼接,输出以原生卡片的形式展示在 App 里。

适用场景与注意

适合 DSH Go 手机版的使用者:希望 AI 做系统级操作时不必手把手递 adb 命令。对只跑在桌面环境、不使用手机本机引擎的场景,插件不适用。

接入前值得自己核对的几点:

  1. 插件以当前 dsh 进程权限运行,会执行本机 adb,缺失时会执行 apt-get install -y adb。安装前应读一遍 lib/ 源码和 LICENSE(MIT),确认与你的环境兼容。
  2. 只覆盖经典 ADB over TCP;Android 11+ 原生无线调试不在支持范围内。
  3. 仓库目前是 1 star 的个人项目,更新节奏和长期维护需自行判断。
  4. 社区目录站点与 DeepSeek、幻方无官方从属关系,不要当作官方应用商店。

卸载

dsh plugin --profile web remove dsh-go-adb-link

也可以直接在 App 的插件详情里卸载。

参考链接

  • 社区目录页:https://www.skillhub.cn/plugins/edgy7493/dsh-go-adb-link
  • GitHub:https://github.com/edgy7493/dsh-go-adb-link
  • Releases:https://github.com/edgy7493/dsh-go-adb-link/releases
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜