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

手机远程访问 billyu01/dsh-lan-access

DeepSeek Harnessv0.1.3
billyu0126 天前有提交已提供中文文档扫描:含敏感能力

一个让 DeepSeek Harness 支持手机远程访问的 cordis…

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

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

自动兼容检查有告警:npm 同名包「dsh-lan-access」归属 leon0555/dsh-lan-access,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add billyu01/dsh-lan-access
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「dsh-lan-access」归属 leon0555/dsh-lan-access,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-lan-access @ 0.1.3
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 03:19:32

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

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

写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 发起网络请求
    lib/client.js:51
    const res = await fetch("/lan/info");
  • 发起网络请求
    lib/client.js:56
    const res = await fetch("/lan/set", {
  • 写入剪贴板
    lib/client.js:97
    navigator.clipboard.writeText(text).then(done, done);
  • 发起网络请求
    src/client.js:39
    const res = await fetch('/lan/info')
  • 发起网络请求
    src/client.js:44
    const res = await fetch('/lan/set', {
  • 写入剪贴板
    src/client.js:85
    navigator.clipboard.writeText(text).then(done, done)
  • 读取密钥环境变量
    src/proxy-server.cjs:35
    const TOKEN = process.env.LAN_PROXY_TOKEN || '';
  • 发起网络请求
    src/proxy-server.cjs:74
    const req = http.request({
  • 发起网络请求
    src/proxy-server.cjs:109
    const upstream = http.request({
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 内置反向代理

用手机通过局域网或 Tailscale 访问 DeepSeek Harness——内置反向代理,每个地址都有独立开关。

README

由 DeepSeek 最新模型翻译生成
dsh-lan-access 一个让 DeepSeek Harness 支持手机远程访问的 cordis 插件:内置反向代理,每个地址独立开关,支持局域网与 Tailscale。 仅做学习参考。 本项目按原样提供,仅供学习与参考。它会在无认证的情况下暴露 Harness 的 Web 界面,请勿在不信任的网络或生产环境中使用。详见文末免责声明。 它解决什么问题 DeepSeek Harness 的 Web 界面默认只接受来自 localhost 的 /api 请求(一道防 DNS 重绑定的浏览器信任栅栏)。用手机打开 http://<你的局域网IP>:3080 时,页面能加载,但所有 /api 请求都返回 403。此外它还依赖 crypto.randomUUID,而该 API 在非安全上下文(纯 http)下不存在。 本插件在「手机访问」设置页里一并解决这两个问题: - 每个地址独立开关 —— 每个本机 IPv4 地址(局域网和 VPN/Tailscale)各有一个开关,默认全部关闭。 - 内置反向代理 —— 打开某个地址的开关后,会启动一个小型代理,监听 <地址>:3082 并转发到 127.0.0.1:3080,同时把 Host/Origin 重写为 loopback,使栅栏放行所有 /api 请求(包括特权方法)。
展开完整文档(README 剩余 1 节)
dsh-lan-access

一个让 DeepSeek Harness 支持手机远程访问的 cordis 插件:内置反向代理,每个地址独立开关,支持局域网与 Tailscale。

仅做学习参考。 本项目按原样提供,仅供学习与参考。它会在无认证的情况下暴露 Harness 的 Web 界面,请勿在不信任的网络或生产环境中使用。详见文末免责声明。

它解决什么问题

DeepSeek Harness 的 Web 界面默认只接受来自 localhost 的 /api 请求(一道防 DNS 重绑定的浏览器信任栅栏)。用手机打开 http://<你的局域网IP>:3080 时,页面能加载,但所有 /api 请求都返回 403。此外它还依赖 crypto.randomUUID,而该 API 在非安全上下文(纯 http)下不存在。

本插件在「手机访问」设置页里一并解决这两个问题:

- 每个地址独立开关 —— 每个本机 IPv4 地址(局域网和 VPN/Tailscale)各有一个开关,默认全部关闭。
- 内置反向代理 —— 打开某个地址的开关后,会启动一个小型代理,监听 <地址>:3082 并转发到 127.0.0.1:3080,同时把 Host/Origin 重写为 loopback,使栅栏放行所有 /api 请求(包括特权方法)。
- crypto.randomUUID polyfill —— 注入 index.html,让 SPA 能在纯 http 下正常启动。

使用手册

1. 将插件安装到某个 DSH Web profile。它现在是一个 profile 组合包(dsh.bundle.patch),插件管理器会把它写入 dsh.profile.bundles,组合包 patch 会自行挂载前后两半:在「插件」页面安装,或执行 dsh plugin --profile <name> add dsh-lan-access。手动组合时,把 cordis.patch.yml 里的 insert 列表复制到 profile 自己的 cordis.patch.yml 即可。
2. 打开 设置 → 手机访问。
3. 打开你想要的地址对应的开关(例如 Tailscale 的 100.x 地址,或 Wi-Fi 的 192.168.x.x)。
4. 在手机上打开 http://<该地址>:3082/。

开关在两种运行形态下都可用:dsh web(默认 3080,--port 可改)和 桌面客户端(其 Web 服务固定跑 19387)。代理会读取运行中 host 的真实端口,无需手工配置。代理同时自行完成启动令牌握手并注入会话 cookie,所以手机上的地址不需要再带 ?token=。

不需要远程访问时,记得关闭开关。

Android 应用

除了在手机浏览器直接打开 http://<该地址>:3082/,也可以使用打包好的 Android 应用(dsh-access)。

下载

在 dsh-app 的 Releases 页面下载最新的 dsh-access.apk。应用源码见 billyu01/dsh-app。

安装

APK 未上架应用商店,需要侧载安装:

1. 把 dsh-access.apk 下载到手机。
2. 打开 APK,按系统提示允许「未知来源」安装。
3. 若之前装过旧版本,先卸载再装——不同版本签名不同,直接覆盖会报 INSTALL_FAILED_UPDATE_INCOMPATIBLE。

使用

1. 打开 dsh-access。
2. 输入带 token 的访问地址(例如 http://192.168.1.10:3082/?token=<token>,token 由 dsh web 启动时打印),点「进入」。
3. 已保存的地址会自动列出并显示连通性状态,之后点击即可再次进入。

应用需与插件配合:先在 设置 → 手机访问 打开对应地址的开关,再把该地址(3082 端口)填入应用。

原理

手机 ── http://<ip>:3082/ ──> 反向代理 (src/proxy-server.cjs) │ 重写 Host/Origin → 127.0.0.1:<真实端口> ▼ DSH Web 服务器 (:3080,或 --port 指定;桌面客户端固定 19387) │ /api 栅栏看到 loopback → 放行 ▼ DeepSeek Harness

控制链路:

- Host 半部(src/index.js)向 index.html 注入 polyfill,暴露两个 JSON 路由(GET /lan/info、POST /lan/set),并为每个已开启的地址管理一个 node 子进程。上游地址取自运行中的 webServer 服务,因此 dsh web --port <n> 与桌面客户端(Web 服务跑在 19387)都能正常工作;旧代码写死 3080 时,代理会永远卡在握手重试、从不监听。
- Host 半部只有在观察到代理真的开始监听后才把开关标记为已开启;起不来的代理会被终止,设置页会显示失败原因,而不是留下"已开启"的假象。
- 浏览器半部(src/client.js)渲染设置页,通过这两个路由与 Host 半部通信。

测试

npm test # node:test:代理契约 + Host 半部契约,不需要网络

测试会拉起真实的 src/proxy-server.cjs 对着假上游跑,并用桩 ctx 驱动 Host 半部,其中包含"上游握手暂时失败时也必须先监听"这条回归用例。

目录结构

dsh-lan-access/
├── package.json # 包元数据、导出、发布脚本 ├── cordis.patch.yml # 组合行示例 ├── src/ │ ├── index.js # Host 半部(ESM cordis 插件) │ ├── client.js # 浏览器半部(设置页 UI) │ └── proxy-server.cjs # 每地址反向代理(子进程) ├── lib/ │ └── client.js # 浏览器半部:下发给客户端的镜像 bundle ├── test/ # node:test 契约测试(不发布) ├── scripts/ │ └── release.sh # npm 发布辅助脚本 ├── README.md / README.zh.md └── LICENSE

开发与发布

npm run release -- patch # 升版本并发布(patch | minor | major | x.y.z)

免责声明

本项目仅供学习与参考。它没有移除任何认证屏障——任何能访问到已开启地址 3082 端口的设备,都会获得 Harness Web 界面的完整访问权,包括文件浏览与 shell 执行。请只在可信网络(你自己的局域网、私有 Tailscale 网络)中使用。作者对因使用本软件造成的任何损害或数据丢失概不负责。本项目与 DeepSeek 无关。

许可证

MIT
预览分享卡片长什么样 ↓billyu01/dsh-lan-access
分享 · DeepSeek Harness Hub
billyu01/dsh-lan-access

一个让 DeepSeek Harness 支持手机远程访问的 cordis…

这是你的仓库?认领条目

回到顶部