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

手机远程客户端 KKUCODES/deepseek-harness-mobile

DeepSeek Harness
KKUCODES18 天前有提交已提供中文文档扫描:未发现敏感能力

在手机上继续电脑的会话,随时审批与查看结果

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · security
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成

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

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 47 处,展示前 44 条)
  • 写入剪贴板
    src/ordinary-clipboard.mjs:12
    export async function writeClipboard(text) {
  • 发起网络请求
    src/remote-attachments.mjs:33
    const request = this.model.client.request({ method: 'remote.attachment', sessionId, ...this.attachment }, value => {
  • 发起网络请求
    src/remote-changes.mjs:31
    request = model.client.request({ method: 'remote.changes', sessionId, seq, ...(index === undefined ? {} : { index }) }, value => {
  • 发起网络请求
    src/remote-coding-tools.mjs:46
    this.request = request = this.model.client.request({ method: 'remote.codingToolsRead' });
  • 发起网络请求
    src/remote-desktop-apps.mjs:21
    const request = model.client.request(operation), abort = () => request.cancel();
  • 发起网络请求
    src/remote-desktop.mjs:14
    const request = model.client.request(operation), abort = () => request.cancel();
  • 发起网络请求
    src/remote-desktop.mjs:52
    const request = model.client.request(operation), abort = () => request.cancel();
  • 发起网络请求
    src/remote-desktop.mjs:75
    const request = model.client.request(operation), abort = () => request.cancel();
  • 发起网络请求
    src/remote-endpoint.mjs:67
    request = this.model.client.request(operation); signal.addEventListener('abort', abort, { once: true });
  • 发起网络请求
    src/remote-feedback-notifications.mjs:14
    state.request = model.client.request({ method: 'remote.feedbackFollow', sessionId }, value => {
  • 发起网络请求
    src/remote-files.mjs:29
    const initial = metadata(await this.request('stat', sessionId, path, null, signal));
  • 发起网络请求
    src/remote-files.mjs:33
    const page = await this.request('readBytes', sessionId, path, { offset, length: FILE_CHUNK_BYTES }, signal);
  • 发起网络请求
    src/remote-files.mjs:47
    sameFile(initial, await this.request('stat', sessionId, path, null, signal));
  • 发起网络请求
    src/remote-files.mjs:58
    const initial = metadata(await this.request('stat', sessionId, path, null, signal));
  • 发起网络请求
    src/remote-files.mjs:64
    sameFile(expected, await this.request('stat', sessionId, path, null, signal));
  • 发起网络请求
    src/remote-job-actions.mjs:21
    const result = await model.client.request({ method: 'remote.jobStop', sessionId, jobId: job.id,
  • 发起网络请求
    src/remote-key.mjs:53
    request = this.model.client.request({ method: 'remote.keyRead', ...(this.target ? { target: this.target } : {}) });
  • 发起网络请求
    src/remote-live-job-output.mjs:86
    task = this.model.client.request(this.operation());
  • 发起网络请求
    src/remote-model-probe.mjs:30
    const request = this.model.client.request(operation);
  • 发起网络请求
    src/remote-model-probe.mjs:40
    const value = modelProbePreparedSchema.parse(await this.request(operation, fused));
  • 发起网络请求
    src/remote-model-probe.mjs:54
    return modelProbeResultSchema.parse(await this.request(operation, fused));
  • 发起网络请求
    src/remote-model.mjs:395
    const response = await this.transport.uploadHooks.fetch(`/api/session/uploadFileBinary?${query}`, {
  • 发起网络请求
    src/remote-office.mjs:18
    request = model.client.request(operation, value => {
  • 发起网络请求
    src/remote-plugin-operations.mjs:45
    const request = this.client.request(operation);
  • 发起网络请求
    src/remote-plugin-operations.mjs:85
    try { await this.request({ method: 'remote.pluginOperationStart', generation, operationId, endpoint, payload }, signal); }
  • 发起网络请求
    src/remote-plugin-operations.mjs:117
    const result = await this.request({ method: 'remote.pluginOperations' }, lifetime);
  • 发起网络请求
    src/remote-plugin-operations.mjs:140
    read(generation, operationId, signal) { return this.request({ method: 'remote.pluginOperationRead', generation, operationId }, signal); }
  • 发起网络请求
    src/remote-preset-directory.mjs:35
    const request = this.model.client.request({ method: 'remote.rpc', endpoint: 'settings/openAgentPresetDirectory', payload: { args: { agentPreset: id }
  • 发起网络请求
    src/remote-preset-management.mjs:50
    request = this.model.client.request(operation); this.pending = request;
  • 发起网络请求
    src/remote-session-export.mjs:13
    const request = model.client.request({ method: 'remote.sessionExport', sessionId, includeDescendants }, value => {
  • 发起网络请求
    src/remote-settings.mjs:43
    async read(signal) { return this.request({ method: 'remote.settingsRead', ...(this.namespace ? { namespace: this.namespace } : {}) }, signal, false);
  • 发起网络请求
    src/remote-settings.mjs:59
    return this.request(parsed.data, signal, true);
  • 发起网络请求
    src/remote-settings.mjs:71
    request = this.model.client.request(operation);
  • 发起网络请求
    src/remote-settings.mjs:107
    async read(signal) { return this.request(this.provider === undefined ? { method: 'remote.providerSettingsList' }
  • 发起网络请求
    src/remote-settings.mjs:139
    const view = await this.request({ method: 'remote.providerCreationRead' }, signal, false);
  • 发起网络请求
    src/remote-settings.mjs:168
    async read(signal) { return this.request({ method: 'remote.providerRemovalRead', provider: this.provider }, signal, false); }
  • 发起网络请求
    src/remote-subagents.mjs:39
    subscription.request = model.client.request({ method: 'remote.subagentStateFollow' }, state => {
  • 发起网络请求
    src/remote-task-notifications.mjs:74
    subscription.request = model.client.request({ method: 'remote.taskFollow' }, event => {
  • 发起网络请求
    src/remote-transport.mjs:43
    fetch: (input, init) => this.fetch(input, init),
  • 发起网络请求
    src/remote-transport.mjs:68
    const request = this.client.request({ method: 'remote.negotiate', version: 2 });
  • 发起网络请求
    src/remote-transport.mjs:131
    const request = this.client.request({ method: 'remote.rpc', endpoint, payload: hint?.payload ?? payload });
  • 发起网络请求
    src/remote-transport.mjs:171
    const request = this.client.request({ method: 'remote.stream', endpoint, payload: hint?.payload ?? payload }, value => {
  • 发起网络请求
    src/remote-transport.mjs:199
    fetch(input, init) {
  • 发起网络请求
    src/remote-upload.mjs:35
    request = client.request(operation, value => {
扫描于 2026/10/31(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-modules@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-dockkit@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-theme
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 移动端(DSHM):DeepSeek Harness 的 Android 聊天与远程客户端。在手机上接着聊、跟进任务、处理审批。

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness Mobile (DSHM) DSHM 安卓客户端 · DSHM 电脑插件 · DSHM 中转服务 DSHM 是社区开发的 DeepSeek Harness(DSH) 安卓客户端。支持手机直连 DeepSeek 普通聊天,也能同步电脑上的 DSH 会话。离开电脑后,仍能继续发送消息、查看执行结果、切换模型和处理审批;任务由电脑执行。 下载 Android APK · 连接电脑 DSH · 使用指南 · 常见问题 DSHM:离开电脑后,继续推进电脑上的工作。 普通聊天与 Remote 界面 聊点日常接着做项目看清再确认 图片来源 · 点击截图看原图。 手机聊天与远程会话功能 | 能力 | 内容 | | 普通聊天 | 手机直连 DeepSeek;流式回复、深度思考、附件、本地历史与备份。 | | Remote | 打开已有工作区和会话,在已有工作区新建聊天;发送消息、切换模型、停止任务、回答提问与审批。 | | 结果查看 | 工具、命令、文件与改动预览;保存或分享完整文件。 | | 插件界面 | 显示兼容插件;默认等比例缩放,作者声明与用户开关可调整。
展开完整文档(README 剩余 1 节)
DeepSeek Harness Mobile (DSHM)

DSHM 安卓客户端 · DSHM 电脑插件 · DSHM 中转服务

DSHM 是社区开发的 DeepSeek Harness(DSH) 安卓客户端。支持手机直连 DeepSeek 普通聊天,也能同步电脑上的 DSH 会话。离开电脑后,仍能继续发送消息、查看执行结果、切换模型和处理审批;任务由电脑执行。

下载 Android APK · 连接电脑 DSH · 使用指南 · 常见问题

DSHM:离开电脑后,继续推进电脑上的工作。

普通聊天与 Remote 界面

聊点日常接着做项目看清再确认

图片来源 · 点击截图看原图。

手机聊天与远程会话功能

| 能力 | 内容 |
| 普通聊天 | 手机直连 DeepSeek;流式回复、深度思考、附件、本地历史与备份。 |
| Remote | 打开已有工作区和会话,在已有工作区新建聊天;发送消息、切换模型、停止任务、回答提问与审批。 |
| 结果查看 | 工具、命令、文件与改动预览;保存或分享完整文件。 |
| 插件界面 | 显示兼容插件;默认等比例缩放,作者声明与用户开关可调整。 |

flowchart LR
Phone["DSHM 手机端查看 · 沟通 · 决策"] <--> Relay["中转服务连接与传输"]
Relay <--> Computer["电脑端 DSH + DSHM 插件会话 · 项目 · 任务执行"]

下载 Android APK 与开始使用

APK 发行版本 · 构建与签名说明 · GitHub Actions 构建

公开开发预览提供已签名 APK,最低 Android 9。可直接从 Release 下载 .apk 安装,无需登录 GitHub;Actions 中的 dshm-signed-apk 下载需要登录。签名与更新说明见APK 构建与下载指南。

安装 App 后,配置自己的 DeepSeek Key 即可开始普通聊天。手机直连 DeepSeek,聊天历史保存在本地,无需电脑或中转服务。

连接电脑上的 DeepSeek Harness

1. 在电脑的官方 DSH 中安装DSHM 远程连接插件,连接中转服务。
2. 在手机 DSHM 中领取电脑生成的一次性配对链接。
3. 电脑核对设备指纹并批准后,手机打开已有工作区,继续会话或创建新聊天。

推荐自建中转,也可使用公共服务:http://118.31.20.47:18787。开放注册免注册密钥,手机仍需配对和批准。

公共服务使用 HTTP,传输未加密。敏感内容建议自建 HTTPS。普通聊天不经过中转。完整步骤见使用指南。

当前状态

开发预览,尚未进入应用商店。核心 Remote 已在 官方 DSH 0.2.1-alpha.2+插件 0.1.80-latest.0+配套 Android 上完成 Web + MuMu 本地验收;扩展范围见兼容结论。

- 首版仅 Android。真机、完整公网链路及其他版本、插件、模型仍需验证。
- 电脑和 DSH 保持运行,只安装独立插件,不修改 DSH 本体。
- 手机不创建电脑工作区、不输入命令、不转发电脑 localhost 网站。
- App 进程结束后不推送;重新打开尝试重连。

常见问题

Remote 与手机浏览器打开 DSH 有什么区别?

Remote 使用随 App 打包的 DSHM 聊天界面,通过中转同步电脑会话与操作。手机能在自己的页面查看执行过程、文件改动和审批;电脑端 DSH 负责执行任务,手机与电脑共同参与同一个会话。

连接 Remote 需要在手机填写 DeepSeek Key 吗?

不需要填写手机普通聊天的 Key。Remote 使用电脑 DSH 配置的模型与凭据,手机需要配对并获得电脑批准。普通聊天则使用你在手机配置的 DeepSeek API Key,两种模式分别管理。

普通聊天与 Remote 的历史保存在哪里?

普通聊天历史和草稿保存在手机,可通过本地备份导出;Remote 对接电脑 DSH 保存的会话。两者分别管理,切换模式不会合并聊天历史。详细步骤见历史与备份。

有 iPhone 版吗?

目前只提供 Android 开发预览,最低 Android 9;尚未提供 iPhone 版本。

开发与文档

Kotlin + WebView,React 聊天界面复用 DSH 客户端组件,页面随 App 打包。GitHub Actions 自动准备固定 SDK 与只读官方源码;原本地开发入口仍使用相邻项目,见构建说明。

android/ Android 工程与原生桥 src/ 普通聊天、Remote 和共享界面 scripts/ 构建、检查和联调脚本 tests/ 测试与夹具 docs/ 使用、开发与技术文档

- 使用指南:普通聊天、配对与限制。
- 开发指南:环境、构建与测试。
- 构建与下载:自动签名、公开 APK、摘要与版本信息。
- 兼容结论:版本与支持范围。
- 知识库:架构、设计与验证资料。
预览分享卡片长什么样 ↓KKUCODES/deepseek-harness-mobile
分享 · DeepSeek Harness Hub
KKUCODES/deepseek-harness-mobile

在手机上继续电脑的会话,随时审批与查看结果

回到顶部