🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

密码门禁 felixpu/dsh-lock

DeepSeek Harnessv0.1.2
felixpu20 天前有提交已提供中文文档扫描:含敏感能力

密码门禁:打开 DSH 时先显示密码界面,解锁后才能使用;支持手动锁定与自动锁定,密码以 scrypt 单向哈希存储。

30.7/100
综合分
1
GitHub 星标
268
npm 周下载
—/5
用户评分

数据截至 2026/10/15 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-lock
npm 源 · dsh-lock 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · other
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功(非静态推断);本次验证针对插件 v0.1.4,当前版本为 v0.1.2
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-lock @ 0.1.2
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 06:06:02

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 14 条)
  • 写入本地文件
    lib/index.js:117
    mkdirSync(LOCK_DIR, { recursive: true, mode: 0o700 })
  • 写入本地文件
    lib/index.js:118
    writeFileSync(file, JSON.stringify(data, null, 2) + '\n', { mode: 0o600 })
  • 读取本地文件
    lib/index.js:135
    if (existsSync(CREDENTIALS_FILE)) return
  • 读取本地文件
    lib/index.js:136
    if (existsSync(LEGACY_LOCK_DIR) === false) return
  • 读取本地文件
    lib/index.js:139
    if (existsSync(legacyCredentials) === false) return
  • 写入本地文件
    lib/index.js:141
    mkdirSync(LOCK_DIR, { recursive: true, mode: 0o700 })
  • 读取本地文件
    lib/index.js:148
    if (existsSync(from) === false || existsSync(to)) continue
  • 读取本地文件
    lib/index.js:151
    writeFileSync(to, readFileSync(from), { mode: 0o600 })
  • 写入本地文件
    lib/index.js:151
    writeFileSync(to, readFileSync(from), { mode: 0o600 })
  • 删除本地文件
    lib/index.js:152
    unlinkSync(from)
  • 读取本地文件
    lib/index.js:163
    if (!existsSync(file)) return undefined
  • 删除本地文件
    lib/index.js:551
    if (existsSync(CREDENTIALS_FILE)) unlinkSync(CREDENTIALS_FILE)
  • 发起网络请求
    client/client.js:434
    var res = await fetch(API + path, Object.assign({ credentials: 'same-origin' }, options || {}));
  • 发起网络请求
    client/client.js:451
    var res = await fetch(API + '/status', { credentials: 'same-origin' });
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 密码解锁界面
  • 手动锁定
  • 自动锁定

README

由 DeepSeek 最新模型翻译生成
dsh-lock 给 DSH(DeepSeek Harness)网页版加一道密码门禁:打开页面先显示锁定界面,输入密码解锁后才能使用。 功能 - 全屏遮罩:未解锁时覆盖整个界面,阻止直接操作会话 - 手动锁定:随时一键锁定(侧边栏按钮 + 快捷键) - 自动锁定:可配置空闲时长后自动锁定 - 密码安全:仅存 scrypt 单向哈希,永不保存明文 - 界面中英双语:跟随 DSH 的界面语言设置实时切换(见下方「界面文案(运行时 locale)」) 安装 dsh plugin --profile web add github:felixpu/dsh-lock 安装后重启宿主进程。 使用 | 操作 | 方式 | | 解锁 | 在锁定界面输入密码 | | 立即锁定 | 侧边栏底部「锁定」按钮 | | 立即锁定(快捷键) | macOS / Windows:Ctrl/Cmd + Shift + L;Linux:Ctrl/Cmd + Shift + . | | 自动锁定时长 | 设置 → 插件 → dsh-lock | Linux 用 Ctrl/Cmd + Shift + . 而非 Ctrl/Cmd + Shift + L:DSH 平台的 Linux 键位白名单不接受「修饰键 + 字母」,为各平台分别声明才不会被校验拒绝。
展开完整文档(README 剩余 1 节)
dsh-lock

给 DSH(DeepSeek Harness)网页版加一道密码门禁:打开页面先显示锁定界面,输入密码解锁后才能使用。

功能

- 全屏遮罩:未解锁时覆盖整个界面,阻止直接操作会话
- 手动锁定:随时一键锁定(侧边栏按钮 + 快捷键)
- 自动锁定:可配置空闲时长后自动锁定
- 密码安全:仅存 scrypt 单向哈希,永不保存明文
- 界面中英双语:跟随 DSH 的界面语言设置实时切换(见下方「界面文案(运行时 locale)」)

安装

dsh plugin --profile web add github:felixpu/dsh-lock

安装后重启宿主进程。

使用

| 操作 | 方式 |
| 解锁 | 在锁定界面输入密码 |
| 立即锁定 | 侧边栏底部「锁定」按钮 |
| 立即锁定(快捷键) | macOS / Windows:Ctrl/Cmd + Shift + L;Linux:Ctrl/Cmd + Shift + . |
| 自动锁定时长 | 设置 → 插件 → dsh-lock |

Linux 用 Ctrl/Cmd + Shift + . 而非 Ctrl/Cmd + Shift + L:DSH 平台的 Linux 键位白名单不接受「修饰键 + 字母」,为各平台分别声明才不会被校验拒绝。

配置

本包不导出 Config schema,密码与自动锁定设置由插件自身持久化,通过「设置 → 插件 → dsh-lock」面板管理。

安全说明

- 密码以 scrypt(N=2^15, r=8, p=1)加盐哈希存储,比对使用常量时间比较
- 解锁后签发的是短期令牌,而非保存密码本身
- 存储位置在插件私有目录下,卸载插件不会把密码留在会话或配置里

⚠️ 这是界面门禁,不是磁盘加密。它防的是「别人走到你电脑前直接操作 DSH」,不能防止能读取你用户目录下文件的攻击者。

宿主贡献

- inject: ['webServer'],注册解锁/锁定相关的同源路由
- 无客户端以外的外部依赖
- 不产出面向用户的自然语言:所有路由响应只回机器可读的 error code (如 invalid-password / too-many-attempts / locked),由客户端字典翻译。
宿主无从知道 UI 语言,写死中/英文都会在另一种语言下露馅。
唯一保留自然语言的地方是宿主日志(ctx.logger.info),那是给开发者看的。

界面文案(运行时 locale)

界面文案走平台官方 locale 服务,中英双语:

// client/client.js
inject: ['slots', 'shortcuts', 'locale'],
apply(ctx) {
ctx.effect(() => ctx.locale.register(NS, { zh, en }), NS + ': dictionaries');
const t = ctx.locale.bind(NS);
ctx.slots.register({ name: 'shell.overlay', id: '…', locale: NS }, Veil); // ← 渲染器据此注入 t
}

组件从 props.t 拿翻译函数,不需要自己 inject: () => ({ t }) ——
槽注册选项里给了 locale: NS,渲染器(@deepseek-ai/dsh-client-ui-renderer 的
standardKit())会把绑定好的 t 注入 props;缺 locale 插件时它会抛出明确的
SlotAssemblyError,而不是静默渲染出 key 名。

约定:

- 一条消息 = 一个完整句子,变量用 {name} 占位(如 'autoLock.minutes': '{n} 分钟' /
'{n} minutes')。不拆片段拼接,否则中英语序无法重排。
- 键名小写点分层级:lock.title、field.password、button.unlock、 error.wrongPassword、autoLock.minutes。
- retry / loading / unknown 等平台 common 命名空间已有的通用词不重复定义,查表未命中会自动回落到 common。
- zh 与 en 的键必须完全一致:运行时不校验,漏键只会显示 key 名。故 apply 里做了一次键一致性自查,不一致时 console.warn 点名缺的键。
- 需要本地化的字符串不能只存在于源码字面量里 —— 静态审计(去掉注释后 grep 中文字符)应只剩注释与宿主日志。

展示元数据(locale)

locale/en.json 与 locale/zh.json 提供插件展示元数据(meta.title / meta.description), Plugin Manager 与设置页无需激活插件即可读取,用于显示本地化的插件名与说明。
这与运行时 UI 文案(客户端 ctx.locale.register,见上一节)是两套互不相关的东西:前者是 JSON 资源、由宿主按 Node 模块解析器读取;后者是客户端代码里的字典对象。

{ "meta": { "title": "…", "description": "…" } }

⚠️ 两个容易漏的点(漏任一个都会静默失效,不报错):

1. 必须在 package.json 的 exports 里导出 ./locale/*.json —— 宿主经 Node 模块解析器读取该资源,未导出的子路径会得到 ERR_PACKAGE_PATH_NOT_EXPORTED,被当作「没有 locale」跳过。
2. files 需包含 locale —— 否则 pnpm pack / npm publish 的产物里不会带上它。

icon.svg 走顶层 icon 字段(相对路径),不需要 exports。

客户端挂载点

| 槽位 | 用途 |
| 全屏遮罩 | 未解锁时的锁定界面 |
| sidebar.footer.action | 「立即锁定」按钮 |
| plugins.bundle.config | 自动锁定设置面板 |
客户端 bundle 只 require 平台种子表里的模块(本包只用到 react)。
槽位、快捷键、语言这三个服务通过 package.json 的 dsh.client.inject 声明,在插件对象 inject: ['slots', 'shortcuts', 'locale'] 里注入 —— 服务不走 require。

快捷键的 label 用函数(thunk),不要用字符串,这样语言切换后快捷键面板那一行会跟着变; aliases 是快捷键面板的搜索别名,平台没有本地化机制,所以只放英文(官方各包一律如此),写死中文会让英文界面下露出中文。

许可证

MIT © felixpu

仓库

<https://github.com/felixpu/dsh-lock>
预览分享卡片长什么样 ↓felixpu/dsh-lock
分享 · DeepSeek Harness Hub
felixpu/dsh-lock

密码门禁:打开 DSH 时先显示密码界面,解锁后才能使用;支持手动锁定与自动锁定,密码以 scrypt 单向哈希存储。

这是你的仓库?认领条目

回到顶部