前言¶
想在 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 客户端、自动重连开关,并提供 连接、扫描端口、断开、复制命令 四个按钮。
连接维护分三层:
- 引擎启动时自动重连。
- 掉线后自动重试,先试记住的端口和
3455、5555。 - 都不通且之前授权过,会在后台重扫;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 审核期间可以先用下面的方式安装,效果一样。
- npm 安装:国内镜像已同步,优先用这条。
dsh plugin --profile web add dsh-go-adb-link
提示找不到版本时加官方源:
dsh plugin --profile web add dsh-go-adb-link --registry=https://registry.npmjs.org/
- GitHub 直接装:
dsh plugin --profile web add github:edgy7493/dsh-go-adb-link
- 离线 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 命令。对只跑在桌面环境、不使用手机本机引擎的场景,插件不适用。
接入前值得自己核对的几点:
- 插件以当前 dsh 进程权限运行,会执行本机
adb,缺失时会执行apt-get install -y adb。安装前应读一遍lib/源码和 LICENSE(MIT),确认与你的环境兼容。 - 只覆盖经典 ADB over TCP;Android 11+ 原生无线调试不在支持范围内。
- 仓库目前是 1 star 的个人项目,更新节奏和长期维护需自行判断。
- 社区目录站点与 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