dsh-chatlock:DSH 会话界面锁与目录保险箱

前言

在 DeepSeek Harness(DSH)里跑智能体,侧栏会堆很多会话。其中一些只想自己看,但同一台机器上别人也能打开 DSH,会话正文就摆在界面上。把敏感资料放在工作区目录里时,Explorer 或任意程序读文件也不经过 DSH。单靠「别让别人点我的 DSH」并不成立。

下面介绍社区插件 dsh-chatlock(维护者 xevil3301,分类 admin-security)。它做两件事:给单个会话加界面锁;把工作区目录整包加密成保险箱。两者共用一把口令,口令只存 scrypt 派生值,解锁状态只在内存里,进程重启后需重新验证。

插件托管于 GitHub:xevil3301/dsh-chatlock。目录页见 SkillHub 插件页。DSH 生态是「一切皆插件」;SkillHub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-chatlock 是 DSH 的隐私与安全管理插件:会话锁在打开已锁会话时模糊内容并弹窗验密;保险箱把指定目录加密后,磁盘上只剩 .bin 密文,原始文件名也读不出来。会话记录本身没有做磁盘加密——DSH 启动时要读会话列表——所以第一件事是界面锁,第二件才是磁盘锁。README 里把这一点写得很明确,后面谈威胁模型时也依赖这个区分。

版本与依赖(以仓库资料为准):package.json 为 0.2.0,许可证 MIT,Node ≥ 22;README 徽章标注兼容 dsh 0.2.1-rc.3。

核心功能

会话锁

在侧栏给某个会话上锁。再次打开该会话时,会话区模糊,弹出密码框;口令错误则无法查看正文。「已解锁」只存在于当前进程内存,重启 DSH 后需重新输入。

保险箱

选定工作区中的一个目录,加密并锁定后,目录内为 AES-256-GCM 密文;清单同样加密,避免 manifest 泄露原始路径。解锁时用正确口令还原目录。两个能力共用一把口令。

自动锁与一键全锁

解锁后密钥留在内存;空闲约十五分钟(可调)会自动锁回,期间不必重复输密。另有「立即锁全部保险箱」,同样依赖内存中的密钥。进程正常退出时密钥清空,相当于全部上锁。

宿主侧守卫

host 半边通过路由与 ctx.fs 守卫,在 DSH 文件工具路径上配合保险箱状态;client 半边负责遮罩、侧栏锁标、设置页与上锁入口。具体文件分工见 README「这堆文件是什么」一节。

安装与启用

安装步骤来自官方 README,装完后必须重启 dsh(宿主侧不支持热重载,改文件后若日志无变化,先确认是否已重启)。

git clone https://github.com/xevil3301/dsh-chatlock
cd dsh-chatlock
node install.mjs                 # 默认装进 desktop profile
node install.mjs --profile web   # 或者别的 profile

也可在仓库内执行 node install.mjs,等价于 npm run install:dsh。

经过上面的步骤后,打开 DSH 设置里「聊天锁」页面,先设置密码。回到侧栏,鼠标移到任意会话上会出现锁图标,点击即可上锁。

典型用法

  1. 只防旁人误看屏幕:在设置里设口令,对敏感会话点侧栏锁;离开电脑前可依赖进程退出或等待空闲超时自动锁回。
  2. 防目录被直接打开或拷走:在插件能力范围内,把导出会话或私密资料目录登记为保险箱,锁定后磁盘上只有密文;需要使用时解锁,用完锁定或等自动锁。
  3. 本地演示加解密效果:仓库提供 demo/vault-demo.mjs,跑一次可对比加密前后目录形态(README 说明)。

真机自检(可选,需运行中的 DSH 实例):

node test/live-check.mjs --port <你的端口>
node test/live-check.mjs --mutate     # 写入往返,跑完自己清干净

README 说明:live-check 会按 DSH 算法签浏览器会话 cookie;纯 curl 访问 /api 容易 401,不代表插件未安装。

威胁模型与边界

插件 README 用三层表格说明能力边界,本版实现的是第二层磁盘锁加第一层界面锁,未做虚拟盘驱动(第三层)。

层 作用 大致能挡谁
界面锁 不输密码看不见会话内容 能操作你 DSH 的人;DOM 里仍可能有文字
磁盘锁 目录内密文,文件名也加密 直接打开或拷走目录、换机器看硬盘
虚拟盘 数据始终密文,驱动透明解密 除解锁中机器外;本插件未实现

另一个 Windows 账户访问同一台机器时,NTFS ACL 往往够用;同一账户下 ACL 挡不住,保险箱的意义是把明文暴露的时间窗口压短。加密主要在文件被拷走、硬盘被拿走时才有用。

务必知晓的硬边界(均来自 README):

  • 聊天锁是界面锁,不是会话文件的磁盘加密。
  • 保险箱是整目录加锁/解锁,不是边用边透明的实时加密。
  • 符号链接不跟随;单文件超过 512MB 会跳过并在结果中点名。
  • 保险箱路径不允许互相嵌套。
  • 忘记保险箱密码不可恢复(scrypt,无后门)。
  • 进程被强杀时可能没有清理钩子;不要把正在写入的工作区当保险箱,更适合归档区。

插件以当前 dsh 进程权限运行,安装前建议通读源码并确认 MIT 许可证与上述边界是否符合你的合规要求。

结尾

dsh-chatlock 用一把口令把「侧栏误点」和「目录被裸读」两类日常风险分开处理:会话用界面锁,资料目录用 AES-256-GCM 保险箱,并配合内存授权与空闲自动锁。若你需要在 DSH 工作流里加一层可复现的本地防护,可按 README 安装、设密、上锁,并对照威胁模型判断是否足够。

  • 目录页:https://www.skillhub.cn/plugins/xevil3301/dsh-chatlock
  • 源码与文档:https://github.com/xevil3301/dsh-chatlock
羽毛球分组比赛记分
小程序二维码

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

小夜