dsh-self-preserve
在终端中运行以下命令:
dsh plugin install n8guru/dsh-self-preserve
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 终端中运行 dsh plugin install n8guru/dsh-self-preserve 即可安装该插件,源码详见 https://github.com/n8guru/dsh-self-preserve
插件介绍
在 dsh web 以 systemd 用户服务常驻的场景下,一个看似无害的 bash 调用就可能把 Harness 本身杀掉。典型事故:模型在双引号字符串里写 markdown 反引号来生成 runbook,shell 将其解析为命令替换,其中一条 systemctl stop 直接命中了承载所有会话的 systemd 单元——进程以退出码 0 结束,Restart=on-failure 根本不会介入,整台主机上所有在线会话同时消失,服务静默沉默。dsh-self-preserve 就是为拦住这一类自伤而生的。
它的工作方式非常轻量:挂载到 tools/pre-execute 钩子后,从 /proc/self/cgroup 读取当前 Linux 单元名,对任何针对该单元的 systemctl stop、kill、restart、try-restart 命令返回 deny。在 macOS launchd 环境下,同样拦截 stop、kill、remove、bootout、unload、kickstart。只读 status 查询和操作其他服务的命令不受影响;若确需重启,必须从另一台机器或外部监督程序发起。激活时会在日志中打印一行 armed 提示,无法发现目标时则给出明确的 inactive 警告。
适合谁用:如果你用 dsh web 作为长期运行的多会话工作流平台,或者运行任何模型会话与宿主环境共享生命周期的 AI 代理栈,这个插件值得装一个。它不改变你的工具链,不拦截正常操作,只是加了一道针对自己的安全栏。
使用场景
- 模型在 bash 中执行 systemctl 命令时意外终止承载自身的 Harness 服务
- 多会话共享同一 systemd 单元时一次误操作导致全部会话下线
- macOS launchd 环境下模型误删或重启承载会话的 service
适合人员
- 以 dsh web 作为多会话工作流平台的运维人员
- 运行模型代理栈且会话与宿主进程同生命周期的开发者
- 希望为 agent 工作流加一道最小安全栏的团队