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

掌上遥控 xiazhuo123456789/dsh-pocket

DeepSeek Harness
xiazhuo12345678910 天前有提交已提供中文文档扫描:无法判定

手机负责控制,电脑负责执行 Android 远程控制 DeepSeek Harness · Kotlin +…

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · ui
装得上吗
本站尚未做安装检查
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 取源不可用(Error: 仓库体积 358.2MB 超过扫描上限 200MB(避免单条拖垮整轮))
扫描于 2026/11/2(1 天前)

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

Android 远程控制 DeepSeek Harness — 手机负责控制,电脑负责执行。Kotlin + Jetpack Compose。

README

由 DeepSeek 最新模型翻译生成
手机负责控制,电脑负责执行 Android 远程控制 DeepSeek Harness · Kotlin + Jetpack Compose · 配对即用 · 开源 桌宠 · 大肥鱼 · desktop pet · desk pet 内置 106 段动画的桌面宠物「大肥鱼」,不连电脑也能在手机上玩 这是什么:DSH Pocket 是一款 Android 应用。配对之后,你可以用手机向电脑上的 DeepSeek Harness 提交任务、查看流式回复与实时状态、停止正在运行的任务、处理审批请求,并在任务完成或需要你确认时收到通知。 它不把模型搬到手机上。 所有推理、文件操作和命令执行都留在你的电脑上;手机只发送任务、显示结果、传递你的决定。 它还带了一只桌宠。 桌面端 DSH 插件 dsh-pet 里那只「大肥鱼」被整套搬进了安装包: 106 段动画、12,659 帧,离线可用;能拖、能甩、能点开十三个分组的动作菜单,退出应用后还能浮在别的应用上面。中文叫大肥鱼桌宠,英文就是 desk pet / desktop pet。
展开完整文档(README 剩余 1 节)
手机负责控制,电脑负责执行 Android 远程控制 DeepSeek Harness · Kotlin + Jetpack Compose · 配对即用 · 开源

桌宠 · 大肥鱼 · desktop pet · desk pet 内置 106 段动画的桌面宠物「大肥鱼」,不连电脑也能在手机上玩

这是什么:DSH Pocket 是一款 Android 应用。配对之后,你可以用手机向电脑上的 DeepSeek Harness 提交任务、查看流式回复与实时状态、停止正在运行的任务、处理审批请求,并在任务完成或需要你确认时收到通知。

它不把模型搬到手机上。 所有推理、文件操作和命令执行都留在你的电脑上;手机只发送任务、显示结果、传递你的决定。

它还带了一只桌宠。 桌面端 DSH 插件 dsh-pet 里那只「大肥鱼」被整套搬进了安装包: 106 段动画、12,659 帧,离线可用;能拖、能甩、能点开十三个分组的动作菜单,退出应用后还能浮在别的应用上面。中文叫大肥鱼桌宠,英文就是 desk pet / desktop pet。

┌──────────────┐ HTTPS / WSS ┌───────────────────┐ loopback ┌──────────────────┐
│ DSH Pocket │ ───────────────▶ │ DeepSeek Harness │ ───────────▶ │ agent / tools │
│ (Android) │ ◀─────────────── │ Desktop (Win/mac)│ ◀─────────── │ (your machine) │
└──────────────┘ paired device └───────────────────┘ └──────────────────┘

🐟 桌宠:大肥鱼(Desk Pet)

如果你是为了手机上的桌面宠物 / 大肥鱼 / desk pet 来的,这个仓库直接给你:

- 106 段动画、12,659 帧、400 px 宽——就是从桌面插件 PC2005-cloud/dsh-pet 的 assets/webm 逐帧转来的,不是另外画的简化版;十三个分组(待机 / 转向 / 拖拽 / 点击回应 / 移动 / 小动作 18 / 玩耍 27 / 吃什么 12 / 时节 21 / 文字 / 余额档位 / 碎碎念 / 工作状态)都能在菜单里点播
- 不连电脑也能玩:素材随 APK 安装,断网、没配对、电脑关机都还在
- 能拖、能甩、能跳出应用:拎起来甩出去会带摩擦滑行、撞屏幕边反弹,放大到 320 dp 也能拖到屏幕任何一个角(窗口允许挂出一半,只保证露出 64 dp);开「悬浮在其他应用上」之后,退出 App 也留在桌面上
- 会自己溜达:每 40–90 秒左右走一小段(播走动素材、朝走的方向翻转),偶尔(20–30 分钟)跳下一级台阶(抛物线 + 落地压扁)——不是贴地平移,也不是每几秒抽一下
- 会跟着电脑干活的状态变:排队、思考、找东西、敲命令、等审批、成功、出错,各有各的动画
- 细节与实现见 docs/pet.md

它跟桌面插件的区别:桌面版是 DSH 的插件(跑在电脑上),这里是把这个功能*做进 Android 客户端——所以手机上没有插件这个概念,装好 App 打开开关就有。

⚠️ 素材授权:桌宠形象「大肥鱼」以 CC BY-NC-SA 4.0 授权、不可商用,本 App 因此只做免费分发。出处、署名与义务见 许可证 一节。

✨ 功能

| 能力 | 说明 |
| 设备配对 | 打开摄像头扫电脑屏幕上的二维码;也可从相册选截图,或直接粘贴链接 |
| 远程任务 | 自然语言提交、查看流式回复、继续会话、新建会话 |
| 实时状态 | 排队 / 运行 / 等待审批 / 成功 / 失败 / 已取消 |
| 停止任务 | 带确认语义 — 15 秒未确认则明确显示「可能仍在运行」 |
| 审批 | 显示工具名与申请理由,允许一次或拒绝;也可从通知操作 |
| 通知 | 任务完成、需要审批、连接断开 — 三个独立通道 |
| 会话列表 | 按电脑上的工作目录分组成文件夹,默认全部收起 |
| 模型选择 | 输入框上方直接切换模型与推理档位,值以电脑为准 |
| 权限选择 | 同上切换 read-only / workspace-write / danger-full-access |
| 设置 | 服务器地址、重新连接、撤销本机凭据、通知开关、回答语言 |
| 工具过程 | 工具调用与结果合为一行:工具名 + 参数摘要 + 可展开的输出 |
| 桌宠 | 内置桌面端插件的全套动画(106 段 / 12,659 帧 / 400 px 宽,随 APK 离线可用),跟着电脑状态切换;可拖、拎起来甩出去会在屏幕边弹、可点开十三个分组的动作菜单(含碎碎念)、可浮到别的应用上面;断线也还在,待机时自己跳台阶(落地压扁、朝左镜像);没配对也能从配对页右上角打开,最大可放到 320 dp |

关于两个选择器:模型和权限都读自电脑的投影,不是手机自己记的。因为你也可以在电脑上改这两项,手机若显示自己上次点的那个,就会承诺一个下一个 turn 根本不会用的模型。投影还没到时两个胶囊显示「未知」并置灰 —— 不知道就得长得像不知道。权限尤其如此:/permission 命令返回 success 只说明命令跑了,所以发完之后会重读投影,以电脑报回来的值为准;若没变成请求的档位,会把命令自己的文字显示出来,而不是安静地假装成功。

选择模型分两步(先选模型、再选推理档位),因为三元组在手机上一屏放不下;而且实测这台电脑的 127 个模型里有 23 个完全不带 reasoning 字段,给它们发一个档位会让电脑在发送后整条拒掉。

关于界面:助手回答是不套气泡的正文(带 Markdown 渲染:标题、列表、行内代码、围栏代码块、加粗),只有你自己说的话才套气泡 —— 跟桌面端一致。
把每段回答都塞进一个灰方块里会让整屏变成色块,长回答尤其压抑。

关于「用简体中文回答」:电脑端模型有时会自己选择繁体中文,而 Remote API 没有暴露「设置回复语言」的接口。所以这一项的实作方式是:开启时在每条消息后附加一段独立的内容段「请始终使用简体中文(Simplified Chinese)回答。」,你打的原话一个字都不改(可随时关掉)。界面显示时会把这句指令过滤掉,你看到的仍然只有自己写的那句话。

🔒 状态语义(本应用的核心承诺)

这三条不是文案,是代码里的不变量,也是验收测试的对象:

1. 「已发送」意味着电脑确认收到了。 消息只有在网关返回 {accepted:true} 之后才从「排队中」变成「已发送」。
2. 「已停止」意味着电脑确认停了。 点击停止只是把状态置为「已发送停止请求」;只有收到该会话的 turn/end 事件才会变成「电脑已确认停止」。15 秒内没有确认,界面会明确显示「停止请求未被确认,任务可能仍在运行」。
3. 连不上就说连不上。 网关不可达时界面显示错误,绝不假装请求已经发出。

同样的规则适用于审批:手机显示的待审批操作来自电脑推送的 approval/request,你的选择通过 $events/result 送回电脑,界面上的「已处理」以电脑回执为准。

📦 安装

从 Releases 下载 dsh-pocket-0.10.0.apk,在手机上安装。
Android 8.0(API 26)及以上。每个附件的 SHA-256 列在 dist/README.md,可以核对下载是否完整。

体积:0.5.0 起是 11.6 MiB(0.3.0 只有 1.8 MiB)。多出来的全是扫码 —— CameraX 加内置的 ML Kit 条码模型。构建已剔掉 x86/x86_64 两份原生库,实机(arm64)正常;模拟器上扫码不可用,相册选图仍可用。

先确认版本。 装好之后到「设置 → 关于 → 版本」看一眼,应当是 0.10.0 (11)。
如果不是,说明装的是旧包。这个版本号是刻意前进的,就是为了让「到底装没装上」有可核对的依据。之前连续几轮修复都停在同一个 versionCode,结果同一批问题被反复回报,而代码其实早就改好了;那次的教训写进了 android-app/app/build.gradle.kts 的注释里。

首次打开会让你扫电脑屏幕上的二维码(也可以粘贴链接或从相册选截图)。配对链接来自电脑端 DeepSeek Harness 的「远程控制」面板。

为什么会「过一段时间就自动取消配对」。 电脑端默认用 Cloudflare 的临时隧道暴露服务,这种地址每次桌面端重启都会换一个新的域名。手机上保存的仍是旧地址,于是表现为「连不上 / 像是被取消配对了」。实际上配对关系没有被撤销 —— 到电脑上重新打开远程面板,用新的二维码或链接再配一次即可,不需要卸载重装。想要固定地址,需要在电脑端换成自定义域名或固定隧道(本应用侧无法解决,因为它不知道新地址)。

关于签名: 当前 release APK 使用调试密钥签名,便于直接安装体验。自行构建发布版本时请换成你自己的密钥,见 docs/android-build.md。

🛠 从源码构建

前置:JDK 17、Android SDK(platform 35、build-tools 35.0.0)。

cd android-app
./gradlew :app:assembleRelease # → app/build/outputs/apk/release/
./gradlew :app:testDebugUnitTest # 协议解析 / Markdown / 工具行 / 指令过滤

细节、Windows 上的坑与镜像配置见 docs/android-build.md。

构建这台机器上的一个坑:加了 CameraX + ML Kit 之后,debug 变体要合并的 dex 一下子变大,D8 在 mergeExtDexDebug 里直接 OutOfMemoryError: Java heap space。
所以 android-app/gradle.properties 的 org.gradle.jvmargs 是 1792m 而不是常见的 2048m 以上 —— 这台机器只有 16 GB,构建时余量不到 3 GB,写大了反而会拖垮系统。
如果你的机器内存更大,把这一行调高会更快。

协议一致性测试

单元测试固定的是帧的形状;一致性测试固定的是与真实电脑的契约:

node tests/conformance.mjs http://127.0.0.1:19387 <deviceId>

它会在真实电脑上跑完整闭环:未配对设备被拒 → 已配对可列会话 → 配对管理面不可达 → mux 连接 → $events 就绪 → 建会话 → 模型目录与权限档位 → 切换模型 → 切换权限并回读投影 → follow 快照 → 提交任务 → 收到 assistant 消息 → 收到 turn/end → 取消被确认 → 审批回执校验 → 心跳存活,共 22 项。

那两项关于「这一轮真的跑完」的检查会把「链路坏了」和「电脑自己拒了这一轮」区分开——两者表现相同(都没有 assistant 消息)但修法相反。失败信息里带着电脑返回的错误码:

| 错误码 | 含义 | 修法 |
| UNSUPPORTED_REASONING_EFFORT | 配置要求的推理强度该模型不支持 | 改电脑 agent-default-model 的 reasoningEffort |
| MISSING_CREDENTIAL | 该 provider 没有 API key | 在电脑上存对应密钥 |
| CONTEXT_WINDOW_EXCEEDED / preflight_compress_failed | 电脑估算的上下文超过该模型窗口 | 换默认模型,或调整那一路的预检 |
| SERVER | 上游线路中途断流 | 换线路 |

如果电脑的默认模型暂时用不了,可以加第三个参数把那一轮固定到指定模型,从而在不改电脑配置的前提下证明手机端与协议是好的:

node tests/conformance.mjs http://127.0.0.1:19387 <deviceId> buddy/deepseek-v4.1-flash

它只在测试自建的一次性会话上生效,不碰你自己的会话。

🏗 它如何工作

DSH Pocket 不实现自己的协议。它复用 DeepSeek Harness 已经提供的远程控制面:

| 能力 | 使用的接口 |
| 配对 | POST /api/pair/accept(一次性配对令牌) |
| 之后所有调用 | /remote/api/,凭据放在 x-dsh-remote-device |
| 一元调用(建会话、提交任务、停止) | POST /remote/api/<namespace>/<method> |
| 事件流与会话流 | WSS /remote/api/remote.mux 上的多路复用流 |
| 审批 | $events 上的 waterfall 帧 → 回包到 $events/result |

配对成功后,手机持有的是一个设备凭据。它由电脑签发、可以随时在电脑上撤销,并且不能用来调用配对管理面——/api/pair、/api/update、/api/plugin-manager 在远程侧永远返回 403,这是 DeepSeek Harness 的设计而不是本应用的取舍。

为什么手机端不需要 Windows 组件

远程控制面已经存在于 DeepSeek Harness Desktop 中(由 @linxin666/dsh-remote-web-ui 插件挂在官方 API Gateway 上)。因此本仓库没有 windows-agent/ 或 harness-plugin/:增加一个中间进程只会多一个需要信任、需要升级、需要排障的环节。

你需要在电脑上做的只有一件事:在 DeepSeek Harness 的「远程控制」面板里生成配对链接或二维码。详见 docs/windows-setup.md。

🔐 安全模型

- 设备凭据由电脑签发,存于 Android EncryptedSharedPreferences(AES-256-GCM)
- 电脑端可随时撤销任一设备;撤销后该设备立即失去全部远程能力
- 手机端「断开并清除」只删本机凭据,彻底撤销必须到电脑上操作
- 传输走 HTTPS/WSS;局域网直连时允许明文(见 network_security_config.xml 注释)
- 应用不做本地持久化会话内容,allowBackup=false
- 配对的设备等价于完整控制权。 电脑上的对话、会话、设置、凭据、预设全部对它可见。
这不是本应用的实现选择,而是 DeepSeek Harness 远程控制面的既定语义。请只配对你自己的设备。

本应用不宣称提供沙箱、审批或加密可以消除全部风险。详见 docs/security-model.md。

📁 仓库结构

dsh-pocket/
├── android-app/ Kotlin + Jetpack Compose 应用 ├── protocol/ 协议说明(Markdown,机器可读示例) ├── tests/ 真实电脑上的协议一致性测试(Node,无依赖) ├── docs/ 架构、电脑端配置、构建、排障、安全模型 └── dist/ 构建产物(GitHub Release 附件)

设计文档建议的 windows-agent/ 与 harness-plugin/ 没有创建,因为可行性审查确认 DeepSeek Harness 已有受支持的远程控制面,无需额外组件。原因记录在 docs/architecture.md。

📚 文档

| 文档 | 内容 |
| docs/feasibility.md | 可行性审查报告:候选仓库核查、接口验证、风险、未验证项 |
| docs/architecture.md | 分层、数据流、状态机、为什么没有 Windows 组件 |
| docs/protocol.md | 线协议:帧格式、端点、错误码、审批回执 |
| docs/windows-setup.md | 电脑端需要做什么(只有一步) |
| docs/android-build.md | 构建环境、镜像、Windows 中文路径等坑 |
| docs/pet.md | 桌宠:状态映射、拖动与菜单、悬浮窗权限与前台服务、素材来源与打包格式 |
| docs/troubleshooting.md | 配对失败、隧道重启、403、状态不更新 |
| docs/security-model.md | 威胁模型与不承诺什么 |
| docs/sources.md | 每一条外部事实的来源,以及哪些是观察、哪些是我们的判断 |

关于引用与署名

本项目的线协议事实不是从博客或别人的应用里抄来的,而是从开发机上真实安装的 DeepSeek Harness 里读出来、再用运行中的进程验证的。哪些是观察所得、哪些是本项目的设计判断、参考了哪些公开仓库与规范,全部逐条列在 docs/sources.md。

本仓库没有拷贝任何第三方源代码。上游项目在 docs/sources.md 第 3 节署名,是出于对影响的诚实说明,不是许可义务。如果发现任何一处来源标注错误或措辞抄袭,请开 issue——来源标注错误在本项目里按 bug 处理。

📊 当前状态

v0.10.0 是最新的可安装版本(v0.1.0 是首个,v0.2.0 把回答改成了正文式渲染, v0.3.0 加了模型与权限选择器,v0.4.0 加了摄像头扫码并重做了工具行的呈现, v0.4.1 修掉了 0.4.0 的相机黑屏,v0.5.0 重做了对话区:回答放进浅底卡片、工具调用默认折叠, 0.8.0 让「设置 → 修改地址」可以在电脑换隧道地址后只改地址、保留设备授权(不必重新配对);0.7.0 把打开会话时拉取的历史从「不限」改成 30 条消息(实测快照 312 条记录/529 KB → 177 条/267 KB),这是「每次加载都很慢」的主要来源;v0.6.0 用 reverseLayout 彻底修掉「打开会话停在最上面」、补上 Markdown 表格与分隔线渲染、并让重进会话时先显示上次的渲染结果而不是空白等待)。
诚实说明验证到了什么程度:

已验证

- Android 工程编译通过(debug + release),R8 收缩后 11.63 MB
- 41 项单元测试通过:8 项协议解析(用真实抓包帧做夹具)+ 6 项回复语言指令过滤
+ 13 项 Markdown 解析(含表格、分隔线、围栏内表格不被误判)+ 14 项工具行配对与参数摘要
- 22 项与真实电脑的协议一致性测试通过(配对、列会话、建会话、模型目录与权限档位、切换模型、切换权限并回读投影、提交、收流、完成信号、取消、审批回执校验、心跳)。
这一轮是钉在可用模型上跑绿的(第三个参数 buddy/deepseek-v4.1-flash);不钉模型、直接用电脑默认模型时会因该线路自身的问题挂两项,原因见上面的错误码表。
- 审批链路端到端验证:waterfall 帧 → 回执 → 电脑落 approval/decided
- 回复语言指令端到端验证:附加「请用简体中文回答」后,真实电脑的回答里繁体专用字集合为空(traditional-only chars found = [])
- 模型与权限的读写路径在真实电脑上验证:session/modelCatalog 返回 9 个分组、 127 个模型;permissionPresets/catalog 返回三个预设;session/selectModel 与 commands/execute 的 /permission <preset> 都成功改动了状态,并用 session/projections 读回确认(见 docs/sources.md 第 2 节)
- 选择模型只影响该会话,不会改掉电脑的全局默认模型(实测:切走再读 session/modelCatalog 的 default 不变)

未验证

- 未在物理手机上安装运行。 开发环境没有连接 Android 设备(adb devices 为空), UI 的实际渲染与触摸交互没有真机确认。0.2.0 的界面改版、0.3.0 的两个选择器、 0.4.0/0.4.1 的扫码与工具行、0.5.0/0.6.0 的对话区重做,都因此只有编译期与单元测试层面的保证:弹层高度、深色主题下的对比度、小屏上胶囊是否会挤压输入框、相机在真机上的对焦与权限弹窗、reverseLayout 下表格横向滑动的手感,全都需要你装上看。
- 扫码只在模拟器之外可用。 构建剔掉了 x86/x86_64 的 ML Kit 原生库以省 12 MB,所以 adb 模拟器上「扫一扫」会失败;相册选图那条路是纯 ZXing,不受影响。
- 换模型不会自动改推理档位。 桌面端把档位挂在每个模型自己声明的 reasoning.efforts 上,两个已知模型都声明了 off/low/high/max,但线路之间并不一致:实测给 trae/glm-5.1 发 high 会被拒(session/model-unavailable)。手机端的做法是只列该模型自己声明的档位,不补默认、不猜测;换到不带推理的模型时省略该字段而不是发 null。没有做的是「换模型时自动挑一个合法档位」——那会在用户没看的地方静默改掉设置。
- 插件升级后的兼容性(当前对着 @linxin666/dsh-remote-web-ui@0.4.5)
- 多设备同时配对
- 通知按钮在真机上的完整流程

细节见 docs/feasibility.md 第 8 节。

📄 许可证

代码:MIT,见 LICENSE。桌宠素材:不属于 MIT,见下节。第三方组件与各自许可证见 THIRD_PARTY_NOTICES.md。

🐟 桌宠素材:CC BY-NC-SA 4.0(不可商用)

android-app/app/src/main/assets/pet/ 下的动画帧来自 PC2005-cloud/dsh-pet 的 assets/webm。
该项目的代码是 MIT,但美术素材与角色形象不适用 MIT。

- 形象出处:社区二创的 DeepSeek「大肥鱼」(鲸鱼娘),非 DeepSeek 官方形象;
- 原型「溟月」出自 B 站 @上善无形,DeepSeek 版(女仆鲸鱼娘)设计出自 B 站 @ZipZipPipe
- 形象授权:CC BY-NC-SA 4.0 (署名 · 非商业 · 相同方式共享)。原作者声明原文:「大肥鱼是遵守CC BY-NC-SA 4.0协议的形象, 不可以以任何形式商业化。」
- 对本项目意味着什么:本 App 只做非商业分发——免费、无广告、无内购、不售卖。
分发或展示时须保留上面的署名与项目地址;若改编素材,改编部分须以同样的 CC BY-NC-SA 4.0 发布。完整声明见 assets/pet/LICENSE.txt。

🤝 贡献

见 CONTRIBUTING.md。安全问题请按 SECURITY.md 私下报告。
预览分享卡片长什么样 ↓xiazhuo123456789/dsh-pocket
分享 · DeepSeek Harness Hub
xiazhuo123456789/dsh-pocket

手机负责控制,电脑负责执行 Android 远程控制 DeepSeek Harness · Kotlin +…

这是你的仓库?认领条目

回到顶部