🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

安卓界面压缩 Gallery99/dsh-android-compact-ui

DeepSeek Harness
Gallery9913 天前有提交已提供中文文档扫描:含敏感能力

把界面 XML 压成紧凑可点击元素列表,省下约九成 token

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Gallery99/dsh-android-compact-ui
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 13 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
  • 执行外部命令固定命令
    bin/cli.js:49
    execFileSync('adb', ['shell', `uiautomator dump ${tmp} >/dev/null 2>&1 && cat ${tmp} && rm -f ${tmp}`], {
  • 执行外部命令固定命令
    bin/cli.js:53
    xml = execFileSync('adb', ['shell', 'cat', tmp], { encoding: 'utf8', maxBuffer: 64 * 1024 * 1024 })
  • 读取本地文件
    bin/cli.js:55
    xml = fs.readFileSync(opts.file, 'utf8')
  • 读取本地文件
    bin/cli.js:57
    xml = fs.readFileSync(0, 'utf8')
  • 读取本地文件
    bin/patch.js:160
    if (!fs.existsSync(target)) {
  • 读取本地文件
    bin/patch.js:164
    let src = fs.readFileSync(target, 'utf8')
  • 写入本地文件
    bin/patch.js:183
    fs.writeFileSync(target, src)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把 DeepSeek Harness 手机操控的 token 成本砍掉约 98%:将 uiautomator XML 转储变成紧凑、可直接点击的元素列表。

README

由 DeepSeek 最新模型翻译生成
dsh-android-compact-ui 把 DeepSeek Harness 操控手机时的 token 开销砍掉 约 98%。 dsh-android-compact-ui 把 uiautomator 的 XML dump 转成一份紧凑、可直接点击的元素列表。专为操控真实 Android 手机的智能体而做(DSH 的 dsh-android-control,或任何基于 ADB 的循环)。 问题所在 原始 uiautomator dump 给每个节点 14 个属性,其中 8 个永远是 false: <node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.miui.home" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1920,1079]"> 在真实屏幕上实测,共 98 个节点:
展开完整文档(README 剩余 1 节)
dsh-android-compact-ui

把 DeepSeek Harness 操控手机时的 token 开销砍掉 约 98%。

dsh-android-compact-ui 把 uiautomator 的 XML dump 转成一份紧凑、可直接点击的元素列表。专为操控真实 Android 手机的智能体而做(DSH 的 dsh-android-control,或任何基于 ADB 的循环)。

问题所在

原始 uiautomator dump 给每个节点 14 个属性,其中 8 个永远是 false:

<node index="0" text="" resource-id="" class="android.widget.FrameLayout"
package="com.miui.home" content-desc="" checkable="false" checked="false"
clickable="false" enabled="true" focusable="false" focused="false"
scrollable="false" long-clickable="false" password="false" selected="false"
bounds="[0,0][1920,1079]">

在真实屏幕上实测,共 98 个节点:

| | 原始 XML | 紧凑格式 |
| 字符数 | 33,819 | 483 |
| token(约) | 9,660 | 138 |

智能体在每次操作前都要读一遍屏幕。一个 10 步的任务,光屏幕描述就烧掉 约 100k token。用上它之后:约 1,400。

输出格式

98 nodes -> 18 actionable
- | scroll | | #workspace
904,816 | img | Assistant
160,189 | btn | Termux
414,451 | edit | Search | #search_box
668,713 | group | Settings | [ON]
text
Some static label that is not tappable

每个可操作行都是 tapX,tapY | type | label | #resourceId。

坐标已经是元素中心 —— 直接传给点击工具即可。模型完全不用做坐标运算。

安装

npm install -g dsh-android-compact-ui

或者直接用:

compress a saved dump
npx dsh-android-compact-ui ui.xml

pull one off a connected device and compress it
npx dsh-android-compact-ui --device

pipe
adb shell 'uiautomator dump /sdcard/ui.xml' && adb pull /sdcard/ui.xml - | npx dsh-android-compact-ui

machine-readable summary
npx dsh-android-compact-ui ui.xml --json

作为库使用

const { compactUiXml, measure } = require('dsh-android-compact-ui')

const compact = compactUiXml(xml)
const stats = measure(xml, compact)
// => { rawChars, compactChars, rawTokens, compactTokens, savedPercent }

选项:

compactUiXml(xml, {
maxText: 25, // cap on trailing static-text lines
maxLabel: 40, // cap on characters per element label
})

给现有 DSH 插件打补丁

已经在用 dsh-android-control?就地给它的 android_ui_dump 工具打补丁:

node bin/patch.js /data/data/com.termux/files/usr/lib/node_modules/@deepseek-ai/dsh/node_modules/dsh-android-control

- dump 工具现在默认返回紧凑列表;
- raw=true 返回原始 XML,什么都不丢;
- 工具描述会重写,告诉模型坐标已经居中;
- 重复运行不会有任何改动;如果插件结构在底下变了,它会拒绝打补丁。
之后重启 dsh web,让新代码生效。

丢弃了哪些内容,为什么这样做是安全的

| 丢弃项 | 原因 |
| checkable/focusable/focused/scrollable/long-clickable/password/selected | 几乎所有节点上这些字段恒为 false |
| enabled="true" | 绝大多数节点都是如此;禁用的控件仍然值得展示 |
| index、package、resource-id 前缀 | 对模型没有路由价值 |
| 没有文本也没有动作的布局容器 | 纯属嵌套噪声 |
| 重复的父子行 | uiautomator 经常把同一个标签上报两次 |

保留:标签(text 或 content-desc)、元素类型、点击中心、resource-id 叶子节点、勾选状态,以及可滚动容器(标记为 scroll,不带坐标,这样模型会滑动而不是点击)。

已有方案

- actionstatelabs/android-action-kernel sanitizer.py
—— 同样的过滤思路,但每个元素保留 8 个字段,且不带点击中心。
- dsh-android-agent —— 在设备侧查询树(phone_ui_find),单次查询成本更低,但需要自备设备端智能体。
- A11y-Compressor —— 学术方案,用视觉上下文重建和冗余削减。

更进一步

还想把成本压得更低,以下方向仍在考虑中:

- 设备侧查找 —— 一个 ui_find(text) 工具,在手机上 grep XML,只返回一条匹配(每次查询约 30 token)。
- 增量 diff —— 只发送自上次步骤以来发生变化的元素。

License

MIT
预览分享卡片长什么样 ↓Gallery99/dsh-android-compact-ui
分享 · DeepSeek Harness Hub
Gallery99/dsh-android-compact-ui

把界面 XML 压成紧凑可点击元素列表,省下约九成 token

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部