DeepSeek Harness 插件

dsh-client-connection-authz

Auth-capable drop-in replacement for the DeepSeek Harness web connection(英文原文)

跳到安装方式

来源信息

GitHub 仓库
sperictao/dsh-client-connection-authz
最近更新
2026年8月21日
分类
工具与能力
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/sperictao/dsh-client-connection-authz
插件名:dsh-client-connection-authz
作者:sperictao

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-client-connection-authz

DeepSeek Harness 0.1.0-rc.x 内置 connection 的完整替代包。它保留官方 HTTP、共享/独立 RPC、WebSocket 和浏览器 client 行为,并在所有远程入口前 增加一个由外部插件提供的 ConnectionRequestAuthorizer

设计

本包的 bundle patch 做两件事:

1. 用 id + name 双重匹配禁用内置 @deepseek-ai/dsh-client-connection;如果上游改名,patch 会显式告警而不会 误伤复用该 id 的其它插件。 2. 插入 @dsh-external/dsh-client-connection-authz,并强制注入 connectionRequestAuthorizer。认证插件缺失或配置失败时,connection 不会以 匿名模式降级启动。

浏览器 bundle 来自官方 @deepseek-ai/dsh-client-connection(跟随 package.json 声明的依赖范围),构建时只替换模块表 id;脚本校验唯一 id 出现次数防止静默漂移, 不校验上游精确版本。Host 源码基于 DeepSeek Harness commit 47f943859bef60e4160492346772ded9b24f765a,来源见 [NOTICE.md](NOTICE.md)。

授权接口

interface ConnectionRequestAuthorizer {
  authorize(facts: ConnectionRequestFacts):
    | { allowed: true; principal: ConnectionPrincipal }
    | { allowed: false; status: 401 | 403 }
}

facts 包含 transport、channel、endpoint、headers、TCP peer address,以及目标 要求的 authority:

  • trusted-host:普通 API、普通 RPC 和两个 WebSocket downlink。
  • loopback:设置、凭据、宿主文件操作等特权 API;认证插件只有显式授予更高权限

才能让远程调用通过。

执行顺序固定为:Host/Origin/DNS-rebinding fence → 本地回环判断 → 外部 authorizer → body 读取/协议升级/业务 handler。有效本地旁路必须同时满足回环 Host 和回环 TCP peer;远端仅伪造 Host: 127.0.0.1 仍会进入 authorizer。共享 RPC 会在 授权前把 handler 与 authority 快照为同一 target,避免授权后切换 interceptor 的 时序绕过。

浏览器侧不再用页面 hostname 预先否决 Host-authority 界面。替换 bundle 会让既有 connection.isLoopback 消费者尝试配置、凭据、宿主文件等特权 RPC;这不是授权结论, 每个请求仍必须通过上述 Host fence 与外部 authorizer。没有 admin capability 的远程 身份只能得到 403,拥有 admin capability 的身份才会到达业务 handler。

安装

这个包故意不能单独启用;profile 还必须安装一个提供 authorizer 的认证包。例如与 dsh-auth-tailscale 一起安装:

gh auth setup-git
dsh plugin --profile web add \
  git+https://github.com/sperictao/dsh-client-connection-authz.git \
  git+https://github.com/sperictao/dsh-auth-tailscale.git

两个仓库目前是 private;上面的已验证路径使用当前 gh 登录为 Git 配置 HTTPS 凭据。也可以改用已配置公钥的 SSH URL。

开发

pnpm install
pnpm check

测试覆盖 HTTP、共享/独立 RPC、WebSocket、特权 authority、回环 Host 伪造和既有 trust fence。pnpm build 生成并校验官方浏览器 bundle。

兼容范围

依赖声明(package.json 的 ^0.1.0-rc.8 等)是本包与 dsh 版本兼容性的唯一事实 来源:范围语义承诺该包在任何满足范围的 dsh 版本下工作。升级 dsh 到新 rc 时, 本包的依赖范围随 ^ 自动覆盖(npm 预发布语义下 ^0.1.0-rc.8 匹配 0.1.1-rc.1 等后续 rc);只有当上游 d.ts 出现 breaking change 时才需要改代码, 此时 bump 本包版本并把依赖范围同步到新下限。不能用锁死确切版本的方式"防漂移"—— 那只会让 pnpm 在 profile 里解出版本裂缝(rc.6 插件 + rc.8 核心的 boot 崩溃 就是这么来的)。