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

真机收尾回前台 zxyan99/dsh-return-front

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

真机控制任务结束后自动把 DSH 切回前台

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    lib/index.js:91
    fromPrefs = valid(/<string +name="controlToken">([^<]*)< string>/.exec(readFileSync(p, 'utf8'))?.[1]);
  • 读取密钥环境变量
    lib/index.js:94
    const testMode = process.env.DSH_CONTROL_TOKEN_TEST;
  • 读取密钥环境变量
    lib/index.js:95
    if (testMode === '1' || testMode === 'true') return valid(process.env.DSH_CONTROL_TOKEN) ?? fromPrefs;
  • 读取本地文件
    lib/index.js:172
    const j = JSON.parse(readFileSync(file, 'utf8'));
  • 写入本地文件
    lib/index.js:179
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:180
    writeFileSync(file, JSON.stringify({ enabled: v }));
  • 发起网络请求
    lib/client.js:45
    fetch(ROUTE, { credentials: 'same-origin' })
  • 发起网络请求
    lib/client.js:55
    fetch(ROUTE, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 回合结束切回前台
  • 拉回DSH前台

真机控制回合结束时把 DSH 拉回前台(Android / Shizuku)。

README

由 DeepSeek 最新模型翻译生成
dsh-return-front 真机控制任务结束后,自动把 DSH 切回前台。 适用:Android 上的 DSH(Termux 系运行时 + Shizuku 特权通道)。 其他平台装上无害——插件会正常加载,但不会做任何事。 它解决什么问题 在 Android 上用 DSH 驱动真机(点按、开 App、滑动)时,被操作的那个 App 会占据前台,DSH 退到后台。于是每跑完一个任务,你都要手动切回 DSH 才能看结果、发下一句。 装上这个插件后: | | 之前 | 之后 | | 让 agent 在真机上点开某 App | 任务结束,你手动切回 DSH | 任务结束,DSH 自己回到前台 | | 纯只读任务(截图 / dump) | 前台没变 | 不触发(本来就没变) | | 虚拟屏任务 | 不影响真机前台 | 不触发 | 触发条件被刻意收窄,只在「本回合真的动过真机前台」且「你开着开关」时才动作。 前提条件 1. DSH 跑在 Android 上(Termux 系运行时,这决定了宿主 App 的包名可被自动探测) 2. Shizuku 特权通道就绪(插件通过它执行拉起命令) 3. 屏幕范围含真机:scope 为 all 或 real-only - 出厂默认是 virtual-only。
展开完整文档(README 剩余 1 节)
dsh-return-front

真机控制任务结束后,自动把 DSH 切回前台。

适用:Android 上的 DSH(Termux 系运行时 + Shizuku 特权通道)。
其他平台装上无害——插件会正常加载,但不会做任何事。

它解决什么问题

在 Android 上用 DSH 驱动真机(点按、开 App、滑动)时,被操作的那个 App 会占据前台,DSH 退到后台。于是每跑完一个任务,你都要手动切回 DSH 才能看结果、发下一句。

装上这个插件后:

| | 之前 | 之后 |
| 让 agent 在真机上点开某 App | 任务结束,你手动切回 DSH | 任务结束,DSH 自己回到前台 |
| 纯只读任务(截图 / dump) | 前台没变 | 不触发(本来就没变) |
| 虚拟屏任务 | 不影响真机前台 | 不触发 |

触发条件被刻意收窄,只在「本回合真的动过真机前台」且「你开着开关」时才动作。

前提条件

1. DSH 跑在 Android 上(Termux 系运行时,这决定了宿主 App 的包名可被自动探测)
2. Shizuku 特权通道就绪(插件通过它执行拉起命令)
3. 屏幕范围含真机:scope 为 all 或 real-only
- 出厂默认是 virtual-only。该模式下 agent 本来就动不了真机前台,所以插件什么都不做(这是对的,不是 bug)
4. 能执行特权 shell 的运行档位(如 danger-full-access)

安装

dsh plugin --profile web add github:zxyan99/dsh-return-front

装完重启 DSH,然后刷新页面。

手工安装(等价,适合本地源码):

1. 把本仓库放到任意目录
2. 在 $DSH_HOME/profiles/<profile>/node_modules/ 下建一个指向它的软链: ln -s /path/to/dsh-return-front "$DSH_HOME/profiles/web/node_modules/dsh-return-front"

3. 在 $DSH_HOME/profiles/<profile>/cordis.patch.yml 末尾追加:
- insert:
- id: dsh-return-front
name: dsh-return-front

4. 重启 DSH

装配顺序需晚于 @dsh-android/dsh-android-bridge(因为要用它提供的特权服务)。放在 patch 末尾通常就满足。

使用

设置 → 通用,会看到一行:

任务收尾 ☑ 真机控制任务结束后回到 DSH

勾选/取消即时生效并持久化(存在 $DSH_HOME/dsh-return-front.json)。默认开启。

工作原理(简述)

- 订阅 session/event,在 turn/start 清空状态、在 tool/call 记录「本回合是否动过真机前台」、在 turn/end 决定是否动作
- 计入的工具:android_app_launch、android_ui_click、android_act_input、android_ui_scroll、android_ui_input、android_ui_global
- 排除:全部 android_vdisplay_*;全部只读类(device_info/screen_list/ui_dump/ui_detail/ui_tree/screenshot/web_dump)
- screenId 缺省或 real 才算真机;virtual-N 不计
- 动作就是一条拉起命令:monkey -p <宿主包名> -c android.intent.category.LAUNCHER 1
- 开关通过一条带鉴权的回环路由读写(/api/dsh-return-front)

宿主包名是自动探测的,取自 Termux 标准环境变量 TERMUX_APP__DATA_DIR 的目录名,因此不绑定某个特定的壳应用构建。

配置(可选)

在 profile 的 patch 里:

- insert:
- id: dsh-return-front
name: dsh-return-front
config:
enabled: true # 初始开关状态(之后以设置页/状态文件为准) appPackage: com.example.shell # 手动指定宿主 App 包名(一般不需要) launchCommand: "monkey -p com.example.shell -c android.intent.category.LAUNCHER 1"

环境变量覆盖:DSH_RETURN_FRONT_APP_PACKAGE。

已知边界(诚实清单)

- 只在 Android 上有意义。 非 Android 宿主上插件会加载但永不动作。
- scope=virtual-only 时不工作,且这是设计意图:该模式下 agent 动不了真机前台,切回没有意义。插件会静默跳过并写一行 debug 日志,不报错、不刷屏。
- Shizuku 未运行 / 档位不足时不报错,只吞掉失败(一行 debug 日志)。
- 只做「切回前台」这一件事:不改前台内容、不清理、不重启引擎、不碰用户数据。
- 若本回合动过真机但用户已主动切到别处,回合结束时仍会被拉回 DSH——这是开关语义的一部分;不想要就关掉。

开发

无需构建链,纯手写 bundle(客户端用 React.createElement 避开 JSX)。

node tests/smoke.mjs

密闭测试(不接触设备):覆盖宿主包名自动探测、路由鉴权、持久化、以及触发矩阵(只读不触发 / 真机触发 / 虚拟屏不触发 / 关开关不触发 / 重复 turn/end 只触发一次 / 特权通道抛错被吞)。

许可

MIT © zxyan99
预览分享卡片长什么样 ↓zxyan99/dsh-return-front
分享 · DeepSeek Harness Hub
zxyan99/dsh-return-front

真机控制任务结束后自动把 DSH 切回前台

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