deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
中文 | English
DSH(DeepSeek Harness)远程 Web 启动 + 用户名/密码认证插件。

原版 @deepseek-ai/dsh-web-app/startup 出于安全考虑硬拒绝 --host 0.0.0.0;本插件替换它,并配一个带登录/注册页的认证插件,让 dsh web 可以在局域网(或任何非回环接口)上安全暴露浏览器界面。
--host 0.0.0.0 可用,替代原版启动器的硬性拒绝。dsh_sid,14 天有效,HttpOnly + SameSite=Lax)。/api/* 路由(除 /api/auth/*)必须携带有效会话,否则返回 401。crypto.randomUUID polyfill —— 非安全上下文下该 API 缺失,会导致所有 RPC 失败。settings.* / credentials.* 等敏感域强制限制在回环地址;认证通过后本插件以回环身份放行。本插件是一个 DSH bundle(package.json 的 dsh.bundle.patch 声明了随包分发的 cordis.patch.yml)。用 dsh plugin 安装后,包会被加入 profile 的 dsh.profile.bundles,补丁层自动生效,无需手动编辑任何配置文件。
# 方式一:从源码安装
git clone <仓库地址>
cd dsh-web-startup-auth
npm install # 安装构建依赖(typescript 等)
npm run build # 编译 src/ 到 lib/(插件运行时加载 lib/ 下的产物)
dsh plugin --profile web add .
# 方式二:从 npm registry 安装
dsh plugin --profile web add dsh-web-startup-auth
dsh plugin是 pnpm 转发器,--profile <name>必填;add .会把当前目录以link:方式装进 profile。
启动:
dsh web --host 0.0.0.0
安装时已自动应用补丁,无需再用
--patch叠加——重复叠加会把插件再插入一遍,导致重复。
http://<主机IP>:<端口>/。/login,显示"设置管理员账号密码"注册表单。/api/auth/logout 清除会话 cookie)。凭据与会话密钥保存在 ~/.dsh/web-auth.json:
dsh --profile web auth-reset,交互式设置新密码(或 dsh --profile web auth-reset --password <新密码> 非交互)。重置会轮换会话密钥,作废所有已签发的会话。~/.dsh/web-auth.json 并重启,即可重新注册(同样会作废所有会话,但需重启服务)。如果您在寻找开箱即用的专为 Agent 时代研发的 IDE,推荐您使用 Omniterm
src/auth.ts 中的 SESSION_MAX_AGE_SEC。crypto.scryptSync,无第三方依赖。dsh_sid 是自包含签名 cookie,/api/auth/logout 只清除浏览器一侧的 cookie。cookie 一旦泄露(如明文 HTTP 下被嗅探),14 天有效期内无法单独吊销。例外:dsh --profile web auth-reset 和设置面板的「修改密码」都会轮换会话密钥,一次性作废全部会话(修改密码后当前会话由服务端重新签发,保持登录)。/api/auth/login 与 /api/auth/change-password(旧密码错误同样计次)。如需更严格防护请在反向代理层增加通用限速。~/.dsh/web-auth.json(含密码哈希与会话签名密钥)以 0600 保存,目录以 0700 创建;插件启动时会自动修复旧版本遗留的过宽权限。--trusted-host:该参数仅为与原版 CLI 兼容而保留透传,不参与本插件认证判断——远程客户端一律需要有效会话,不存在"受信主机免登录"。npm install
npm run typecheck # tsc --noEmit
npm test # vitest
npm run build # tsc -p tsconfig.json + tsdown,产物输出到 lib/
tsc 编译 node 侧源码(src/*.ts)与类型声明到 lib/、lib/types/。tsdown 把前端插件(src/client/index.tsx)打包成浏览器 bundle lib/client.js(window.__ModuleLoader__.load 注册格式)。改前端代码后必须重新构建,profile 里 link: 安装会自动加载新产物。@deepseek-ai/dsh-client-* 包只用于类型与构建,运行时由 DSH 前端模块表提供。MIT(仓库内未含 LICENSE 文件时,默认按 package.json 的 MIT 声明授权)
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。