DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Proxy Bridge — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

@painclown/dsh-proxy-bridge

Proxy Bridge

用于 DeepSeek Harness Web GUI 的轻量级反向代理桥接,设计为部署在终止 TLS 的反向代理(nginx)之后。解决通过 nginx → 网关 → DSH 链路建立 WS 连接时导致连接失败的 WebSocket Origin/Host 不匹配问题。灵感来自 @riceawa/dsh-lan-gateway。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:PAINCLOWN/dsh-proxy-bridge#9912a55104abeb72c36c0b2bbb0daa81fbbe4e34
README兼容性版本

兼容性与来源证明

Proxy Bridge 以 @painclown/dsh-proxy-bridge 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/12

版本

0.1.0stable
2026/10/12

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/15
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Ab Publishdsh-ab-publish浏览器自动化发布工具,可登录任意网站并发布内容,整合为一个可发布的插件包Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 r

README

@painclown/dsh-proxy-bridge

轻量级 DSH 反向代理桥,专为 nginx 等 TLS 终结反代后面的 WebSocket 转发设计。

理念参考 @riceawa/dsh-lan-gateway,感谢 riceawa 的启发。

解决什么问题

DSH Web GUI 的 WebSocket 连接在通过 nginx → 网关 → DSH 链路时会因 Origin/Host 不匹配返回 403。本插件跳过 same-site 检查,信任上游终结器(nginx)做访问控制,直接转发 HTTP + WebSocket 到 DSH。

架构

浏览器 ──HTTPS──> nginx (TLS 终结) ──HTTP──> Bridge (0.0.0.0:3083) ──HTTP──> DSH (127.0.0.1:3080)
                                              │
                                              ├── 密码门 (可选)
                                              ├── DSH Cookie 自动注入
                                              ├── WebSocket 透传 (raw TCP splice)
                                              └── 速率限制 / 会话撤销
  • HTTP: 转发时重写 Host/Origin 到 127.0.0.1:3080
  • WebSocket: socket 直接 splice 到上游,无 same-site 检查
  • 密码门: 可选的第二层认证(在 nginx 之上)
  • DSH Cookie 注入: 自动为请求注入 DSH 认证 Cookie,无需手动处理 DSH 登录

安装

# 通过 DSH 插件命令安装
dsh plugin --profile web add @painclown/dsh-proxy-bridge

# 或手动安装
cd ~/.dsh/profiles/web
npm install @painclown/dsh-proxy-bridge

快速开始

# 1. 启用桥(默认 3083 → 3080)
proxy_bridge enable

# 2. 设置密码
proxy_bridge config password=dsh2026

# 3. 配置 DSH Secret(从 ~/.dsh/.credentials.yaml 读取)
proxy_bridge config dshSecret=<your-secret>

# 4. 检查状态
proxy_bridge status

命令

命令说明
proxy_bridge status查看桥状态
proxy_bridge enable启动桥
proxy_bridge disable停止桥
proxy_bridge restart重启桥
proxy_bridge config更新配置

配置示例

# 设置密码(至少 8 位)
proxy_bridge config password=dsh2026

# 配置 DSH Secret(自动注入 DSH 认证 Cookie)
proxy_bridge config dshSecret=vGIxivMEJblP1teRqVymk6sefy7wHMzxds9T0Unv6rE

# 启用自签名 TLS
proxy_bridge config tlsEnabled=true tlsHosts=["dsh.poxx.top","192.168.123.254"]

# 允许 LAN 免登录
proxy_bridge config lanPasswordless=true lanCidrs=["192.168.123.0/24"]

# 清除密码
proxy_bridge config password=

配置字段

字段类型默认值说明
enabledbooleanfalse是否启动监听
portnumber3083监听端口 (0.0.0.0)
dshPortnumber3080DSH 上游端口
passwordstring''密码门(空 = 无密码)
cookieNamestringdsh_bridge_auth会话 Cookie 名
cookieMaxAgeDaysnumber30Cookie 有效期(天)
dshSecretstring''DSH browser-session secret
secureCookiesbooleanfalseCookie 加 Secure 标志
tlsEnabledbooleanfalse启用自签名 TLS (HTTPS)
tlsDaysnumber365自签名证书有效期(天)
tlsHostsstring[][]证书 SAN 主机列表
lanCidrsstring[][]信任的 LAN CIDR
lanPasswordlessbooleanfalseLAN/loopback 源免登录

安全特性

密码门

  • 设置密码后,所有请求必须携带有效会话 Cookie
  • 登录页:/__bridge_login(GET 显示表单,POST 验证密码)
  • 登出:/__bridge_logout(POST 撤销当前会话)
  • 速率限制:每 IP 每 60 秒最多 5 次登录尝试
  • 密码使用 scrypt 哈希存储,明文不保存

会话管理

  • 每个会话有唯一 ID(16 字节随机数)
  • 会话 Cookie 使用 HMAC-SHA256 签名
  • 登出只撤销当前会话,不影响其他
  • 修改密码递增 epoch,撤销所有会话
  • 状态持久化到 ~/.dsh/proxy-bridge/state.json(0600 权限)

DSH Cookie 注入

当客户端请求不携带 dsh-auth-* Cookie 时,Bridge 使用配置的 secret 自动生成并注入,使 DSH 认证透明化。

文件结构

~/.dsh/proxy-bridge/
├── state.json          # 持久化状态(Cookie secret、密码哈希、会话 epoch、已撤销会话)
└── tls/
    ├── selfsigned.crt  # 自签名证书(tlsEnabled=true 时生成)
    └── selfsigned.key  # 私钥

nginx 配置示例

server {
    listen 11007 ssl;
    server_name dsh.poxx.top;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:3083;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 86400;
    }
}

开发

# 构建
npx tsdown

# 部署到 DSH profile
rm -rf ~/.dsh/profiles/web/node_modules/@riceawa/dsh-proxy-bridge/lib/
cp -r lib/ ~/.dsh/profiles/web/node_modules/@riceawa/dsh-proxy-bridge/lib/

源码结构

src/
├── index.ts            # 插件入口,工具注册,生命周期管理
├── proxy.ts            # 核心代理逻辑(HTTP 转发 + WS 透传 + 认证)
├── auth.ts             # 源分类、会话签名、速率限制
├── state.ts            # 持久化状态(scrypt 密码、Cookie secret、会话管理)
├── tls.ts              # 自签名证书生成和加载
├── login.ts            # 登录页渲染、登出路径、速率限制处理
├── config-fields.ts    # 配置 schema
└── client/
    ├── index.ts        # 客户端入口
    └── bridge-card.tsx # React 配置卡片

与 dsh-lan-gateway 的区别

特性dsh-lan-gatewaydsh-proxy-bridge
Same-site 检查严格(Origin/Host 必须匹配)跳过(信任 nginx)
适用场景直接暴露到 LAN放在 nginx 后面
WS 403 问题需要配置 Origin 白名单自动解决
DSH Cookie 注入无有
复杂度较高(request policy、upstream session)较低

License

MIT