把界面 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 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
把 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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Gallery99/dsh-android-compact-ui
把界面 XML 压成紧凑可点击元素列表,省下约九成 token
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。