dsh-simple-auth:DeepSeek Harness 超轻量登录网关

前言

DeepSeek Harness (DSH) 的 Web 界面在生产环境中需要额外的安全防护。现有的登录门方案往往较为复杂或依赖繁重。dsh-simple-auth 提供了一个直接的替代方案:通过共享密钥或主/访客密钥进行访问控制,并支持基于 ACL 的会话隔离与分享。

插件简介

dsh-simple-auth 是由 lt9 维护的一个 DeepSeek Harness Web 插件。它是一个超轻量登录网关,核心设计理念是零生产依赖。

该插件提供单登录字段,支持可选的“主密钥”或“访客密钥”。默认情况下,会话是隔离的;只有“所有者”可以分享或取消分享会话。侧边栏列表经过 ACL 过滤,右下角提供一个浮动操作按钮 (FAB) 专门用于分享当前选中的会话。

安装与启用

使用 DSH 的插件管理器添加该插件:

dsh plugin --profile web add github:lt9/dsh-simple-auth

如果当前 profile 是 pnpm workspace,且添加时遇到 ERR_PNPM_ADDING_TO_ROOT 错误,请使用 -w 参数:

dsh plugin --profile web add -w github:lt9/dsh-simple-auth

本地检出安装:

dsh plugin --profile web add ./dsh-simple-auth

启用前必须设置密钥。插件采用“故障关闭”策略:如果密钥缺失,登录页面会提示,且所有其他请求将被拒绝。

export DSH_SIMPLE_AUTH_KEY='a-long-random-secret'

在 systemd 或 Docker 服务中,请将同样的变量放入 Environment 或 EnvironmentFile。如果需要复用已有的环境变量,可在配置中指定 keyEnv:

# $DSH_HOME/cordis.patch.yml
- id: dsh-simple-auth
  config:
    keyEnv: EXISTING_SECRET_ENV

重启 DSH Web 进程后,打开 UI 并输入密钥即可。

配置项

以下为已核实的配置项。所有密钥均为可选,默认值由代码提供。在 cordis.patch.yml 中配置时,home-layer patch 的 config 会完全替换默认配置,不支持深度合并。

配置项 默认值 说明
keyEnv DSH_SIMPLE_AUTH_KEY 存储访问密钥的环境变量名
keyFile "" 如果设置,从该文件读取密钥(去除首尾空白),优先级高于 keyEnv
cookieName dsh_simple_auth Session Cookie 名称
sessionTtl 604800 Cookie 有效期(秒),默认为 7 天
cookieSecure auto auto 会跟随 X-Forwarded-Proto;true 或 false 强制设置 Secure 标志
rewriteLoopback true 将认证后的流量重写为 127.0.0.1:<port>,避免 DSH 的反向代理 Host 检查阻断特权 API
title DeepSeek Harness 登录页面的标题
remember true 显示“记住密钥在本设备”选项(仅存储于 localStorage,服务端仍使用 Cookie)
rpcMinTimeoutMs 120000 注入到 Web Index 的 AbortSignal.timeout 下限。默认 DSH RPC 为 30s,大页面可能中断,设为 0 可禁用

安全与注意事项

  • 故障关闭:配置错误不会导致界面暴露。如果密钥缺失或配置错误,所有请求将被拒绝。
  • 速率限制:针对每个客户端 IP 进行登录尝试的速率限制。
  • 会话分享机制:分享会话意味着分享“实时智能体”,而非仅分享聊天文本。这意味着凭证、bash、工作区和设置仍然保持机器级别的共享。
  • 非 TLS 替代品:此插件仅做访问控制,不能替代 TLS 或将智能体视为远程代码执行来处理。请勿在公网明文暴露 DSH。
  • 目录清单:Catalog 中的列出仅用于展示,不是安全审计。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜