bamboostrip/dsh-access-gate ↗★ 1
dsh-access-gate
DSH plugin: password gate for remote (non-loopback) /api access (passwordless by default), unblock the loopback-pinned privileged endpoints, restore everything on uninstall, and give the local 127.0.0.1 user the native OS folder picker for workspace selection. Zero residue by design. TypeScript source, compiled output.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:bamboostrip/dsh-access-gate说明文档
阅读完整 README ↗dsh-access-gate
DSH 远程访问认证门禁 · Remote access authentication gate for DeepSeek Harness
dsh plugin --profile web add dsh-access-gate
dsh-access-gate(中文)
DSH(DeepSeek Harness)远程访问认证门禁插件:解决"经 nginx 公网域名转发访问时,/api/* 全部 403"的问题 —— 认证通过后所有被浏览器信任护栏拦截的接口(含 settings.*、credentials.* 等 loopback 钉死的特权接口)全部可用;本机 127.0.0.1 访问不受影响;卸载插件一切还原,零残留、不污染用户配置。
同时是 dsh-lan-access 的完整替代品(0.0.0.0 绑定 + crypto.randomUUID polyfill + 远程认证 + 本机原生目录选择,一个包全包)。
功能
| 功能 | 说明 |
|---|---|
| 🔐 远程认证门禁 | 配置密码后,除本机直连外的访问(公网域名 / 局域网 IP / 同机 nginx 反代)需密码登录(HttpOnly Cookie,默认 7 天有效) |
| 🔓 默认无密码 | 未配置密码时远程直接放行(等价纯 lan-access),配置密码即启用门禁,设置界面实时生效、无需重启 |
| 🗂 本机原生目录选择 | 本机添加工作区弹官方原生目录对话框(Windows IFileOpenDialog / macOS choose folder / Linux zenity-kdialog,跨平台);远程自动降级官方应用内浏览器 |
| 🌐 替代 dsh-lan-access | webserver 0.0.0.0 绑定 + crypto.randomUUID polyfill(幂等注入),卸载 lan-access 后无需额外配置 |
| 🧹 零残留 | 所有副作用随 ctx.effect 清理回调还原;不修改 DSH 源码、不写入用户配置文件 |
| 🛡 安全细节 | sha256 + timingSafeEqual 密码比较、防开放重定向、Host 欺骗封死、认证后 sec-fetch-site: cross-site 不再误杀 |
| 📐 TypeScript | 源码 TS + 编译产物,外部 API 契约集中在 src/types.ts(DSH 是测试版,升级可快速定位 API 变化) |
安装
# 方式一:npm 发布后(推荐)
dsh plugin --profile web add dsh-access-gate
# 方式二:GitHub 直装(lib/ 已提交,装上即用)
dsh plugin --profile web add github:bamboostrip/dsh-access-gate
# 方式三:本地开发(link: 符号链接,改代码只需 build + 重启)
npm run build
dsh plugin --profile web add link:E:/ALLCODE/project/dsh-auth-gate
重启 DSH 生效。默认无密码:远程直接可访问。设置访问密码(二选一):
# ① 推荐:DSH 设置界面 → 插件配置 → 访问认证 卡片
# 写入 ~/.dsh/.credentials.yaml;保存后实时生效,无需重启
# ② 环境变量(优先于文件层,适合脚本/CI):
$env:DSH_GATE_PASSWORD='你的密码' # PowerShell;重启 DSH 生效