中文EN

dsh-local-link

remote装不上npmMIT

以浏览器为核心、仅限局域网访问当前 DeepSeek Harness Web UI,支持一次性二维码配对、设备撤销、事件驱动诊断和保留插槽的移动端布局;无需配套应用、云中继或远程隧道。

下载量 / Downloads
1,810
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-local-link

沙箱测试结果

阶段结果
1 安装✗
2 列装—
3 挂载—
4 启动—
第一条错误
dsh: initialized profile web at /home/node/.dsh/profiles/web

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-local-link

[English](README.md) | 中文 | [Русский](README.ru.md)

![CI](https://github.com/donoteatme/dsh-local-link/actions/workflows/ci.yml)

![npm](https://www.npmjs.com/package/dsh-local-link)

![npm downloads](https://www.npmjs.com/package/dsh-local-link)

![Awesome DSH Plugin](https://awesome-dsh-plugin.com/p/donoteatme/dsh-local-link/)

![DSH Market](https://dsh.market/)

![license](LICENSE)

在可信私有网络中,通过手机、平板或另一台电脑使用同一个 DeepSeek Harness Web 会话。dsh-local-link 为原生 DSH 客户端增加一次性二维码配对和响应式移动视图;它不使用托管中继、云账户、原生应用、替代聊天界面或第二套工作区选择器。

打开 Local access 并扫描二维码后,已配对的浏览器会进入桌面端当前选中的 Harness 会话,并继续使用相同的实时对话、权限、工作区和插件界面。

1.2.x 系列支持 DeepSeek Harness 0.1.5-rc.2、0.1.7-rc.2、0.2.0-rc.2 和 0.2.1-rc.2 / 0.2.1-rc.5,并让原生 Web 客户端可以在窄屏触控设备上使用。移动视图只调整界面布局,不接管 Harness 的会话、权限或业务逻辑。

安全边界: 网关使用明文 HTTP,仅适用于可信私有网络。不要将端口暴露到互联网,也不要在公共 Wi-Fi 上使用。

<p align="center">

<img src="docs/images/local-access-qr.zh.jpg" width="960" alt="DeepSeek Harness 中的 dsh-local-link 一次性二维码配对界面">

</p>

<p align="center"><sub>通过可信局域网直接打开同一个 Harness 会话。</sub></p>

功能与产品范围

Local Link 是现有 Harness Web 客户端的小型局域网配套插件,不是通用远程访问平台。它专注于一条可靠路径:在同一私有网络中的另一台设备上打开电脑中已经运行的 Harness,并继续使用相同的会话和界面。

项目重点包括:

  • 可靠访问当前 Harness Host;
  • 短时一次性邀请和清晰的已配对设备生命周期;
  • 在不复制 Harness 业务逻辑的前提下提供响应式布局;
  • 兼容已注册的视图、插槽、权限、主题和会话状态;
  • 在可信局域网范围内完善无障碍、本地化、诊断和安全加固。

以下内容明确不在范围内:

  • 公网暴露、托管中继、托管隧道或云账户;
  • 独立的手机或桌面原生应用;
  • 替代聊天客户端或 Harness 界面分支;
  • 独立于 Harness 的工作区、文件或会话同步;
  • 与当前 Web UI 无关的通用远程扩展运行时。

安装

npm(推荐)

停止正在运行的 dsh web,将插件安装到 Web profile,然后重新启动 Harness:

dsh plugin --profile web add dsh-local-link
dsh web

Git checkout(开发)

需要 Git、Node.js 22.19+ 或 24+、Corepack,以及全局安装的、版本已验证的 dsh。

git clone https://github.com/donoteatme/dsh-local-link.git
cd dsh-local-link
corepack pnpm install --frozen-lockfile
npm run verify
dsh plugin --profile web add .
dsh web

profile 会指向当前 checkout。修改客户端代码后需要重新构建;修改 Host 侧代码后需要重启 dsh web。

兼容性

Local Link 1.2.5 使用 DeepSeek Harness 0.2.1-rc.5 的契约构建并完成验证。支持 webStartup 可信地址配置,同时保留旧版 webRuntime 回退。二维码中的会话选择和移动端自动聚焦保护使用公开的会话作用域;已配对设备快捷入口通过当前原生 Settings 启动器打开设置。

可安装的 DeepSeek Harness 版本范围通过 package.json 中的 engines.dsh 声明。兼容性按精确发布版本验证,不会因为安装成功或可变的 dist-tag 就推断为兼容。

在 0.2.1-rc.5 上已验证局域网配对、二维码打开所选会话、认证 HTTP/WebSocket、撤销设备后立即关闭连接、目录选择 RPC 的局域网限制,以及 EN/ZH 在 320–768 CSS px 的移动布局。较早 Host 的声明依据[更新日志](CHANGELOG.md)中的历史验收;本次未重新运行全部旧版本矩阵或实体手机验收。普通局域网 HTTP 仍不支持手机麦克风录音;本次发布不提供 HTTPS 或语音输入。

使用方法

1. 在电脑上打开需要使用的会话。

2. 点击 Harness 侧边栏底部的 Local access。

3. 在同一网络的另一台设备上扫描二维码或打开一次性链接。

4. 第一个使用邀请的浏览器会打开原生 Harness 客户端并进入当前会话。

邀请只能使用一次,默认五分钟后过期。选择 Generate another code 会立即替换旧邀请。配对成功后,二维码面板会自动关闭。要连接其他浏览器或设备,请重新打开 Local access 以生成新邀请。Harness 仅允许 loopback 执行的 Host 管理操作在远程浏览器中仍然不可用。

宽度不超过 834 CSS px 的手机和平板会自动启用移动视图。不需要 URL 参数、User-Agent 开关或第二套客户端。

移动视图

移动视图会重新组织原生 Harness Web 界面,但保留同一个 Host、会话、插件插槽、权限和实时智能体输出。

  • 工作区和会话导航变成可关闭的左侧抽屉;
  • 当前会话的上下文、模型、权限、预设、活动和日志下载进入右侧抽屉;
  • Chat、Trajectory、输入区、覆盖层和第三方插件视图保持动态加载;
  • 会话和工作区操作在触控屏上保持可见;
  • 切换会话不会自动唤起软键盘,主动点击输入区仍会正常聚焦;
  • 深色/浅色主题继续由 Harness 主题服务管理;
  • 远程手机上隐藏容易误导的 Add workspace 目录选择器;
  • 手机端隐藏聊天底部重复的上下文用量指示器和在电脑上打开文件的按钮(资源管理器/VS Code/Rider);桌面端仍保留,手机端可在 Current session 查看上下文详情;
  • 顶栏、消息操作、输入工具、安全区域和虚拟键盘行为适配窄屏。

以下深色主题截图来自 Harness 0.2.1-rc.5 的真实浏览器会话:移动截图为 430 × 932,桌面截图为 1440 × 1000。独立演示配置只包含虚构的工作区、对话、模型、设备和用量,不包含真实项目数据。中文 README 使用独立的简体中文截图,俄文文档复用英文截图;子智能体通过 Harness 原生标题栏目录展示。

导航 · 当前会话 · 子智能体 · 对话

<img src="docs/images/mobile-navigation.zh.png" width="210" alt="包含虚构工作区与会话的深色移动导航抽屉"> · <img src="docs/images/mobile-session-info.zh.png" width="210" alt="包含虚构模型、工作区权限、统计和会话日志数据的深色当前会话抽屉"> · <img src="docs/images/mobile-subagents.zh.png" width="210" alt="包含两个虚构子智能体的原生深色标题栏目录"> · <img src="docs/images/mobile-chat.zh.png" width="210" alt="包含原生消息操作和单行输入工具的深色 Harness 移动对话">

权限

远程浏览器继承当前 Harness 会话的 Read only、Workspace write 或 Full access 权限。移动视图只显示该值,不会创建或削弱权限边界。隐藏 Add workspace 是可用性限制,不是安全边界。

响应式增强支持 360 到 834 CSS px。发布矩阵检查 360 × 800、390 × 844、430 × 932 和 768 × 1024,并要求在真实手机上完成横屏与竖屏验收。详见[移动视图说明](docs/MOBILE_VIEW.md)。

管理可信浏览器

在 Harness 电脑上打开二维码面板中的 Paired devices,或进入 Settings → Local access。

  • Rename 只修改显示名称;
  • Revoke 会使浏览器凭据失效,并立即关闭该设备当前打开的 Local Link WebSocket;
  • 清除 Cookie、使用无痕窗口、新建浏览器 profile 或撤销设备后,都需要重新配对。

浏览器无法可靠区分笔记本与台式机,因此两者统一显示为 Computer。

<p align="center">

<img src="docs/images/local-access-devices.zh.jpg" width="960" alt="DeepSeek Harness Local access 已配对设备列表">

</p>

展开同一设置页的 诊断 面板,可查看本地网关事件,并复制经过隐私过滤的报告。报告不包含配对令牌、Cookie、地址、设备名称、请求路径或对话内容。

<p align="center">

<img src="docs/images/local-access-diagnostics.zh.jpg" width="960" alt="DeepSeek Harness 本地访问设置中展开的诊断面板">

</p>

工作原理

电脑浏览器 127.0.0.1:3080
  └─ Local access → 一次性邀请
                         │
同一私有网络中的手机 / 平板 / 电脑
  └─ 192.168.x.x:3088 → 网络与 Host 校验
                       → 配对或设备 Cookie 校验
                       → HTTP / WebSocket 代理
                       → 127.0.0.1:3080(同一个 Harness Host)

网关不会创建第二个 Harness 会话。首次连接时,它只把桌面浏览器当前选择的会话传递到新浏览器 origin;会话数据和实时事件仍来自同一个 Host。

授权使用随机生成的 256 位浏览器凭据,磁盘中只保存 SHA-256 哈希。设备名称和浏览器描述只是显示信息,不授予权限。

配置

选项 · 默认值 · 用途

listenHost · 0.0.0.0 · 监听本地接口;请求仍只允许来自私有或 loopback 地址。

listenPort · 3088 · 局域网网关端口。

upstreamOrigin · http://127.0.0.1:3080 · 已有的 Harness Web 服务。

accessMode · pairing · 要求一次性邀请和设备 Cookie。

pairingTtlSeconds · 300 · 邀请有效时间。

deviceTtlDays · 90 · 已记住浏览器的有效时间。

diagnosticsEnabled · true · 保存受限的本地诊断历史。

`diagnosticsMaxE

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:13,最后更新 2026-10-30

链接

GitHub · Homepage · npm

同类插件