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

局域网反代 liveqte/dsh-lan-proxy

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

把本机 Web UI 反代到局域网,手机也能访问

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liveqte/dsh-lan-proxy
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-plugin-lan-proxy(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 03:54:13

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 读取本地文件
    lib/index.js:66
    return JSON.parse(readFileSync(runtimeFile(), "utf8"));
  • 写入本地文件
    lib/index.js:75
    mkdirSync(path.dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:77
    writeFileSync(tmp, JSON.stringify(next, null, 2), "utf8");
  • 写入本地文件
    lib/index.js:78
    renameSync(tmp, file);
  • 发起网络请求
    lib/index.js:117
    const req = http.get(
  • 发起网络请求
    lib/index.js:545
    const proxy = http.request({
  • 发起网络请求
    lib/index.js:613
    const exchange = http.request({
  • 发起网络请求
    client.js:75
    var r = await fetch(BASE + "/api/status");
  • 发起网络请求
    client.js:89
    var lr = await fetch(BASE + "/api/logs?since=" + lastTs.current);
  • 发起网络请求
    client.js:121
    var r = await fetch(BASE + "/api/set-enabled", {
  • 发起网络请求
    client.js:142
    var r = await fetch(BASE + "/api/restart", { method: "POST" });
  • 发起网络请求
    client.js:168
    var r = await fetch(BASE + "/api/set-config", {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 反代回环WebUI
  • 暴露到局域网
  • 手机访问

README

由 DeepSeek 最新模型翻译生成
dsh-lan-proxy 把 dsh 只监听回环地址的 Web UI 通过 0.0.0.0 反代暴露到局域网;开关、状态与启动日志直接嵌入 dsh 设置页,随 dsh 启停,无需单独进程。 界面预览 设置页「局域网反代」一级菜单面板(监听已开启时): 局域网反代设置面板 安装 dsh plugin --profile web add "github:liveqte/dsh-lan-proxy#main" bundle 层栈在启动时组合,装完重启 dsh web 生效。验证:设置页导航「局域网反代」一级菜单出现,启动日志无 plugin tree failed to load。 功能 | 能力 | 说明 | | 局域网反代 | 将 dsh Web UI 同时监听 0.0.0.0:,局域网内任何设备经 http://:/ 访问 | | 网页端目录选择 | 禁用原生 OS 文件夹对话框,固定为网页内嵌「选择工作区目录」浏览(可在远程机器上选宿主目录) | | 免配置开关 | 设置页「局域网反代」tab 一键开关,即时热启停,无需重启 dsh | | 端口配置 | tab 内直接修改监听端口与上游端口,保存即生效 |
展开完整文档(README 剩余 1 节)
dsh-lan-proxy

把 dsh 只监听回环地址的 Web UI 通过 0.0.0.0 反代暴露到局域网;开关、状态与启动日志直接嵌入 dsh 设置页,随 dsh 启停,无需单独进程。

界面预览

设置页「局域网反代」一级菜单面板(监听已开启时):

局域网反代设置面板

安装

dsh plugin --profile web add "github:liveqte/dsh-lan-proxy#main"

bundle 层栈在启动时组合,装完重启 dsh web 生效。验证:设置页导航「局域网反代」一级菜单出现,启动日志无 plugin tree failed to load。

功能

| 能力 | 说明 |
| 局域网反代 | 将 dsh Web UI 同时监听 0.0.0.0:,局域网内任何设备经 http://:/ 访问 |
| 网页端目录选择 | 禁用原生 OS 文件夹对话框,固定为网页内嵌「选择工作区目录」浏览(可在远程机器上选宿主目录) |
| 免配置开关 | 设置页「局域网反代」tab 一键开关,即时热启停,无需重启 dsh |
| 端口配置 | tab 内直接修改监听端口与上游端口,保存即生效 |
| 协议适配 | 自动改写 Host/Origin 为回环、桥接 WebSocket(RFC6455 帧编解码)、注入 crypto.randomUUID polyfill(局域网 HTTP 非安全上下文缺失) |
| 浏览器鉴权适配 | 自动完成 dsh web 的 token↔cookie 交换,局域网首次访问即无感(与本地 localhost 等价),无需手动打开带 token 的链接 |
| 状态与日志 | 2 秒轮询的运行状态、上游可达性探测、局域网地址列表与启动日志,内置「重启反代」按钮 |

使用

- 开关:设置页 →「局域网反代」tab,切换「监听局域网访问」。
页面开关的即时状态写入运行时文件($DSH_HOME/profiles/web/lan-proxy.runtime.json,优先级高于配置默认值),立即生效。
- 局域网访问:http://:/。
- 端口:tab 内可直接修改监听端口(所有网卡)与上游端口(127.0.0.1,0 表示自动取 dsh 实际监听端口)。
- 开关与端口修改接口仅限本机回环地址调用;局域网访问只读状态与日志。
- 选择工作区:装上本插件后,侧边栏 / 会话区的「添加工作区」改为网页内嵌目录浏览器(宿主文件系统列举 + 新建文件夹),不再在 dsh 进程所在机器上弹出 OS 对话框。
这样局域网/远程浏览器也能选目录;本机 127.0.0.1 访问同样走内嵌对话框。
实现方式:bundle 层禁用 directory-picker(auto),并挂载官方 directory-picker-browse 双面(host 列举/创建 + client 对话框)。

配置项

| 键 | 默认值 | 说明 |
| enabled | false | 监听局域网访问(配置默认值;页面开关优先级更高并持久化到运行时文件) |
| port | 3080 | 反代监听端口(所有网卡) |
| upstreamPort | 0 | 上游端口,0 = 自动取 dsh 实际监听端口 |
| maxLogLines | 500 | 页面日志缓冲行数 |
| bypassRules | 见下 | 前端 JS 改写规则表(屏蔽 dsh 对非回环来源的设置页封锁) |

配置覆盖写在 profile 层的 cordis.patch.yml(id: lan-proxy 行的 config),不需要修改仓库内文件。

设置页非回环封锁的绕过(bypass 规则)

dsh 0.1.x 的浏览器端只为回环地址加载设置面(connection.isLoopback),从局域网
访问「设置 → 模型」会得到:加载提供方目录失败: settings are unavailable in this browser。反代在转发 /plugins//client.js 字节流时,按规则表改写其 JS,把封锁判定固定为回环;服务端 /api 信任栅栏按 Host 头判定,反代已把 Host 改回 127.0.0.1,因此服务端天然放行。这是改动浏览器实际执行字节的补丁,与插件加载顺序无关。

内置规则(dsh 0.1.x):

| id | 改写目标 | 动作 |
| dsh-client-connection:isLoopback-mirror | 把 dsh-client-connection client 里的 isLoopback: pageLocation… 改为 isLoopback: true | 设置/模型/凭据面视为回环,正常读写 |

官方换一种封锁方式时,在配置里加一条 find/replace 规则即可(或覆盖 bypassRules 表),旧规则 find 不中会自动跳过并在日志面板提示。规则状态(命中次数/最后错误)出现在「局域网反代」设置页的运行状态里。

插件管理

已装插件用 plugin-registry 的浏览器管理面板(轻量控制台)统一管理:查看、安装、卸载插件,调整 bundle 层栈与 insert 行,启停插件,全程无需手改配置文件。
安装:
dsh plugin --profile web add /packages/plugin/console
预览分享卡片长什么样 ↓liveqte/dsh-lan-proxy
分享 · DeepSeek Harness Hub
liveqte/dsh-lan-proxy

把本机 Web UI 反代到局域网,手机也能访问

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