用手机浏览器登录后远程操作电脑上的桌面界面
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add YiZhiQvQ/dsh-remote该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
- 发起网络请求client.js:531
`;var en_default={meta:{title:"Remote Access",description:"Single-admin LAN access, pairing QR, artifact downloads, and remote file uploads for the DS - 写入剪贴板client.js:531
`;var en_default={meta:{title:"Remote Access",description:"Single-admin LAN access, pairing QR, artifact downloads, and remote file uploads for the DS - 读取本地文件host/auth/credentials.js:47
const data = JSON.parse(readFileSync(String(options.authFile), 'utf8')) - 读取本地文件host/auth/session.js:22
const value = readFileSync(file, 'utf8').trim() - 写入本地文件host/auth/session.js:31
mkdirSync(dirname(String(file)), { recursive: true }) - 写入本地文件host/auth/session.js:32
writeFileSync(String(file), value, { mode: 0o600 }) - 读取本地文件host/routes/download.js:144
const stream = createReadStream(physical, range === undefined ? undefined : { start: range.start, end: range.end }) - 读取本地文件host/routes/upload.js:101
entries = await readdir(tempDir) - 读取本地文件host/routes/upload.js:109
const info = await stat(path) - 删除本地文件host/routes/upload.js:110
if (now - info.mtimeMs > ttlMs) await unlink(path) - 读取本地文件host/routes/upload.js:140
const info = await stat(directory) - 写入本地文件host/routes/upload.js:158
await mkdir(tempDir, { recursive: true }) - 写入本地文件host/routes/upload.js:170
await pipeline(Readable.fromWeb(request.body), limiter, createWriteStream(temporary, { flags: 'wx' })) - 写入本地文件host/routes/upload.js:171
await rename(temporary, target.path) - 删除本地文件host/routes/upload.js:175
await unlink(temporary).catch(() => {}) - 删除本地文件host/routes/upload.js:187
if (!committed) await rm(target.path, { force: true }).catch(() => {}) - 读取本地文件host/routes/browse.js:57
const info = await withTimeout(stat(path), 300) - 读取本地文件host/routes/browse.js:128
enterable = (await stat(path)).isDirectory() - 读取本地文件host/routes/browse.js:154
level = await opendir(target) - 写入本地文件host/routes/browse.js:202
await mkdir(target) - 读取本地文件build.mjs:46
const current = await readFile(outfile, 'utf8').catch(() => '') - 读取本地文件build.mjs:62
const text = await readFile(outfile, 'utf8')
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 桌面 Web GUI 的单管理员局域网远程访问插件 + Android WebView 外壳
README
由 DeepSeek 最新模型翻译生成dsh-remote
单管理员局域网远程访问插件:手机或平板浏览器打开后,用管理员密码登录,直接操作这台电脑上的 DSH。没有成员账号、child host、工作区隔离、read guard 或模型网关。
本仓库是独立发布的插件。
它解决什么
DSH desktop 壳固定监听 127.0.0.1,并用启动 token 认证浏览器。本插件自带一个用户态反向代理 + 登录门:
- 随 DSH 启动,监听 0.0.0.0:3080,转发到 127.0.0.1:52551;
- 手机打开后先看到登录页,输入管理员账号密码;
- 登录一次后写 30 天会话 Cookie,之后免登录;
- 代理内部持有 DSH 启动 token,用它换 host-bound DSH Cookie;该 Cookie 只留在代理进程内存里,不下发浏览器;
- 手机拿到的是同一个桌面 DSH 的完整界面;窄屏远程页面自动切换为手机布局;
- 文件预览标题栏的「下载」按钮可下载原始产物(支持 Range,可拖动播放);
- 右侧「文件」标签支持把文件拖到目录行上传;LAN 页面拖入聊天框也会上传字节,而不是插入 C:\... 本地路径。
安装
把仓库克隆或解压到任意目录,然后用下面任一方式安装。命令里的 <本仓库路径> 换成那个目录的绝对路径。
展开完整文档(README 剩余 1 节)
dsh-remote 单管理员局域网远程访问插件:手机或平板浏览器打开后,用管理员密码登录,直接操作这台电脑上的 DSH。没有成员账号、child host、工作区隔离、read guard 或模型网关。 本仓库是独立发布的插件。 它解决什么 DSH desktop 壳固定监听 127.0.0.1,并用启动 token 认证浏览器。本插件自带一个用户态反向代理 + 登录门: - 随 DSH 启动,监听 0.0.0.0:3080,转发到 127.0.0.1:52551; - 手机打开后先看到登录页,输入管理员账号密码; - 登录一次后写 30 天会话 Cookie,之后免登录; - 代理内部持有 DSH 启动 token,用它换 host-bound DSH Cookie;该 Cookie 只留在代理进程内存里,不下发浏览器; - 手机拿到的是同一个桌面 DSH 的完整界面;窄屏远程页面自动切换为手机布局; - 文件预览标题栏的「下载」按钮可下载原始产物(支持 Range,可拖动播放); - 右侧「文件」标签支持把文件拖到目录行上传;LAN 页面拖入聊天框也会上传字节,而不是插入 C:\... 本地路径。 安装 把仓库克隆或解压到任意目录,然后用下面任一方式安装。命令里的 <本仓库路径> 换成那个目录的绝对路径。 方式一:Plugin Manager(在 DSH 里) plugin_manager install_bundle target=<本仓库路径> 方式二:DSH 自带的 CLI(不要用全局 npm 里的旧版 dsh) & "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add <本仓库路径> 安装后必须确认 profile 的 package.json 里: 1. dependencies 含 dsh-remote; 2. dsh.profile.bundles 里也含 dsh-remote,且排在 @deepseek-ai/dsh-web-app 之后。 只有 dependencies 而没有 bundles 条目时,包会被安装但 patch 完全不生效。然后完全退出 DSH 并重新启动:bundle 只在启动时装配。 完整自检见 docs/DEPLOYMENT.md。 首次登录与修改密码 如果还没有设置过密码,默认账号是: 用户名:admin 密码:dsh-remote 面板会提示「当前仍是默认密码」。请运行(不需要管理员): <本仓库路径>\scripts\set-remote-password.ps1 按提示输入用户名和密码(密码隐藏输入),脚本会把 scrypt 哈希写入 %USERPROFILE%\.dsh\dsh-remote-auth.json,然后重启 DSH。 也可以直接在 profile 的 dsh-remote config 里设置 username/password(明文,不推荐)。 优先级:dsh-remote-auth.json > config 的 username/password > 默认 admin/dsh-remote。 远程工作区操作 目录选择器按来源分流。 从手机页面点「添加工作区」,打开的是应用内目录浏览器:可以逐级进入、新建文件夹、直接选中当前目录。本机桌面窗口仍然用它原本的原生对话框,插件没有改动本地操作习惯。 实现上,LAN 页面会把 uiWorkspace.pickDirectory 换成应用内对话框,目录数据走 /api/remote/browse;127.0.0.1 的桌面窗口不替换。手机端不再需要先在电脑上预注册工作区,当然桌面预注册仍然可用。 右侧「文件」标签负责上传/浏览,和选择器无关。 「打开方式」是宿主动作,会在电脑上启动关联应用;LAN 页面会隐藏它,文件用预览标题栏的下载按钮取到手机。 没有工作区隔离:登录者就是桌面操作者,可以访问 PC 可读的任意目录。 文件上传: - 右侧「文件」标签:把文件拖到目录行或文件树空白处,会流式写入该目录(POST /api/remote/upload,默认上限 512MB); - 聊天输入框:LAN 页面会移除 Electron 预加载的 __DSH_HOST_PATHS__,拖入文件走字节上传;本机 127.0.0.1 桌面窗口仍保留本地路径引用。 手机 UI 手机布局:单栏对话 + 底部导航 设置面板同样按手机重排:DSH 原生是「800px 面板 + 188px 左栏」,在 390px 视口里内容列只剩约 150px,卡片会被压成一字一行。插件把它改成上方横向标签条 + 下方全宽内容。 手机或平板打开 LAN 地址时,插件会给桌面 Web GUI 叠加一层移动端布局: - 仅远程浏览器启用:远程视口 ≤900px(粗指针设备放宽到 1180px)进入手机布局;本地 127.0.0.1/Electron 桌面窗口无论多窄都保持原生三栏;?dshm=mobile / ?dshm=desktop 仅供调试强制; - 这层样式依赖 DSH 自己的 DOM。插件启动时探测一次锚点表(src/client/mobile/anchors.js),必需锚点缺失就不启用手机层,保留桌面布局并写 data-dshm-caps——DSH 升级改了内部结构时,页面仍然可用,只是没有手机布局; - 左侧栏变成全高抽屉,只保留工作区/会话一列;插件、自动化任务、回收站收进「更多」的工具卡;点会话后自动收起; - 右侧「文件」变成全屏面板,底部导航可切回对话; - 对话全宽、正文 15px、代码块 12.5px;主要触控目标 40–50px; - 适配 viewport-fit=cover 和刘海/底部安全区;键盘弹出时底部导航让位; - 插件管理器的「远程访问」总开关会重启 DSH 并切断代理页面,因此被拦截;请用远程访问面板里的「暂停/恢复」软开关:只暂停/恢复 3080 代理,不卸载插件、不重启 DSH; - LAN 地址每次请求从快照读取(默认 5 秒刷新,可配 lanSnapshotMs),排除 169.254 链路本地地址;换 Wi-Fi 后无需改配置。 细节与排查见 docs/MOBILE.md。 安卓 App 浏览器之外的原生入口(WebView 外壳:配对、原生登录、下载、文件选择、断线重连)见 docs/ANDROID.md,含四屏线框图与 M1–M4 里程碑。M1 工程已落在 android/,可编译 debug APK;分享上传、生物识别和 SSE 通知属于 M2/M3。 开发 要求 Node >= 22.19 npm install npm run build # src/client/** -> client.js npm run build:check # 产物与源码不一致则失败 npm test # 112 个用例 npm test:fast # 受限沙箱下用(--test-isolation=none) npm run lint npm run typecheck npm run bench # 代理热路径基准,p50 > 0.3 ms/req 则失败 客户端改动必须重新 npm run build 并提交 client.js——DSH 只加载这个产物。登录页和代理逻辑改动需要完全退出并重启 DSH。 设计取舍、Cookie 生命周期与失败行为见 docs/DESIGN.md。 安全 - 登录者拥有与桌面 DSH 相同的权限:可读写 DSH 进程可访问的任意文件,没有成员隔离。 - 当前是明文 HTTP;同一局域网内的嗅探者可能拿到会话 Cookie。网络不可信时请用 Tailscale 或 TLS 终止代理。 - 登录失败 5 次/10 分钟后会临时限速(按来源地址,映射表有容量上限)。 - 会话 Cookie 是 HttpOnly、SameSite=Lax、30 天,签名绑定当前密码版本:改密码即吊销所有会话。 - DSH 启动 token 只在代理进程内存里,不写日志、不下发浏览器;上游 dsh-auth- Cookie 在响应写回前被剔除。 - /api/remote/download 和 /api/remote/upload 使用 /api/remote/ 路径与独立的 dsh-remote-session Cookie。 自检 需要 DSH 正在运行: curl http://127.0.0.1:52551/api/remote/info curl http://127.0.0.1:52551/api/remote/pairing curl "http://127.0.0.1:52551/api/remote/download?path=..." 版本 见 CHANGELOG.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
YiZhiQvQ/dsh-remote
用手机浏览器登录后远程操作电脑上的桌面界面
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,798已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,724已汉化DSH
71.1