DSH(DeepSeek Harness)通常只绑定在 127.0.0.1,限制了只能在本地访问。要在局域网内的其他设备(如手机或办公电脑)上查看 DSH 的 Web 界面,需要一个反向代理。dsh-3301 旨在解决这个问题。它将 DSH 的本地端口转发到 http://<this-machine-ip>:3301,提供密码保护、会话认证以及对 WebSocket 的支持。
核心功能¶
- LAN 访问 DSH:将 DSH 的 Web 界面暴露在局域网内。
- 密码保护的反向代理:支持 HTTP 和 WebSocket,防止未授权访问。
- DSH 插件支持:作为插件集成到 DSH 进程中,随 DSH 启动和停止,无需单独运行守护进程。
- 会话 Cookie 认证:登录后使用签名 Cookie(默认有效期 30 天),避免了 Basic Auth 对 WebSocket 连接的频繁中断问题。
- 速率限制:防止暴力破解攻击。
- 跨平台支持:基于 Node.js 内置模块,支持 Windows、macOS 和 Linux。
- 零安装依赖:不依赖外部 npm 包。
安装与部署¶
当前项目没有发布 npm 包,需要通过 Git 克隆并部署。请确保已安装 Node.js 18 或更高版本。
- 克隆仓库并进入目录:
git clone https://github.com/Aztech-Lab/dsh-3301
cd dsh-3301
- 执行部署脚本:
node tools/deploy.mjs dsh-3301
脚本会将插件文件写入 DSH 的配置目录(通常在 `$DSH_HOME/profiles/<profile>`)。如果遇到权限拒绝错误,请检查目录权限或以所有者身份运行。
配置与使用¶
插件配置¶
重启 DSH 后,在界面中进入 设置 -> 插件 -> 插件配置 -> dsh-3301。
| 配置项 | 说明 |
|---|---|
| 启用 | 开启后监听指定端口,关闭则释放端口。 |
| 绑定主机 | 0.0.0.0 允许局域网访问,127.0.0.1 仅本机访问。 |
| 端口 | 默认为 3301。 |
| 用户名 | 登录表单的用户名,默认为 dsh。 |
| Session 有效期 | 会话 Cookie 的有效期,默认 30 天。 |
| 失败锁定 | IP 在多次登录失败后的锁定策略。 |
| 密码 | 写入式输入框。留空表示清除密码;修改密码需要输入旧密码。 |
访问入口¶
配置并保存后,在局域网内的任意设备访问:
http://<host-ip>:3301
首次访问或重置密码时,可访问初始化设置页:
http://127.0.0.1:3301/__gate/setup
检查服务状态(无需认证):
http://127.0.0.1:3301/__gate/health
注意事项¶
- 默认无密码:插件启动时没有默认密码。任何能访问端口 3301 的设备都可以进入 DSH。建议在暴露到网络前先设置密码。
- 配置方式:插件的所有配置均通过设置卡片完成,不支持命令行参数。
- 样式授权:插件的样式代码使用了 BSD-3-Clause 许可证。
- 独立模式:除了作为插件运行外,项目仍支持独立的 CLI 模式,通过环境变量
DSH_PROXY_PASS进行配置。
适用场景¶
适合需要在局域网内使用 DSH 进行智能体开发或调试的开发者,特别是需要长时间保持 WebSocket 连接(如 SSE 或实时流式输出)的场景。