DSH Plugins
返回列表
🧩

dsh-single-instance-guard

admin-security 更新于 2026.08.25

在终端中运行以下命令:

dsh plugin install Tang-mm95/dsh-single-instance-guard

将以下提示词粘贴到 DeepSeek Harness 对话框中:

在 DeepSeek Harness 中执行 dsh plugin install Tang-mm95/dsh-single-instance-guard 即可安装该插件,源码地址为 https://github.com/Tang-mm95/dsh-single-instance-guard 。

插件介绍

DSH 的 JSONL 会话持久化后端明确规定同一时刻只允许一个写入者,但框架本身并未提供任何跨进程防护。当桌面壳应用自行拉起一个 dsh server,同时另一个 dsh web 进程也在运行,且两者解析到同一个 DSH_HOME 时,它们会带着过期的序列游标各自追加批次数据,最终导致会话日志静默损坏——没有报错、没有警告,直到你翻看历史才发现时间线已经错乱。

dsh-single-instance-guard 将这种静默损坏转化为一次响亮的启动失败。插件在启动时以 O_EXCL 原子方式创建 .dsh-server.lock 文件,写入 pid、启动时间和主机名;若锁已存在,则探测持有者的 pid 是否存活——存活则直接终止启动并给出清晰的双语错误提示,已死则安全清除残留锁并重试一次获取,正常单实例路径完全不受影响。进程退出时仅在确认锁仍由本进程持有时才删除锁文件,避免误删其他实例的锁。

它面向的是多个 dsh 实例可能共享同一数据根的场景:内嵌 web view 的桌面应用、并行拉起两台 server 的 CI 任务、或开发者工作站上标签重叠的多个实例。插件以零运行时依赖的单补丁层 profile bundle 形式交付,无需改动会话后端,即可在运行时强制执行单写入者保证。

使用场景

  • 桌面壳应用内嵌 dsh server 时,防止与外部 web 实例并发写入同一 DSH_HOME
  • CI 流水线中并行拉起多个 dsh 进程,避免共享数据根下会话日志静默损坏
  • 开发者本地同时运行两个 dsh 服务窗口,启动阶段即拦截而非事后发现时间线错乱

适合人员

  • 使用 DSH 桌面壳或 web 包裹器的应用开发者
  • 在 CI/CD 中自动化调度 dsh 服务的运维工程师
  • 负责维护 DSH 会话日志完整性的平台工程师