dsh-bulwark:DSH 插件的安全守则与路径拦截

前言

DSH 的核心理念是「一切皆插件」。在使用 Agent 进行开发时,开发者面临两个常见风险:一是 Agent 可能会尝试绕过既定的安全规则,二是 Agent 可能会执行修改敏感路径或卸载关键安全插件的操作。dsh-bulwark 插件旨在解决这两个问题。

dsh-bulwark 是什么

dsh-bulwark 是一个 DSH 插件,由 Hashing2030 维护。它通过两个机制保障环境安全:首先,向 systemPrompt 注入守则段,限制 Agent 的行为;其次,在工具调用层拦截对受保护路径的修改与受保护插件的卸载。

核心功能

dsh-bulwark 提供以下核心能力:

  • 守则注入:把一个可配置的守则段写进 systemPrompt,位置由中心顺序表推导。
  • 路径保护:拦截对 protectedPaths 内路径的写、删、移动操作。这包括相对路径解析、重定向以及通过 dd / truncate / tee、python / node 内联脚本发起的修改。
  • 插件卸载保护:命中 protectedRemovalPatterns 关键词的卸载或删除命令一律被拦截。
  • 配置热重载:监听配置文件,改动后无需重启。
  • 逃生通道:提供一个环境变量,允许在紧急情况下完全禁用插件。

安装与启用

安装插件需要使用官方提供的命令:

dsh plugin add github:Hashing2030/dsh-bulwark

执行安装命令后,重启 DSH 使插件生效。

配置与使用

插件配置文件位于 $DSH_HOME/dsh-bulwark/config.json。若未设置 DSH_HOME,则默认为 ~/.dsh。

首次启动时,控制台可能会输出:
[dsh-bulwark:config] watcher unavailable, config changes need a restart: ENOENT...
这不是错误,它表示配置文件尚未创建,热重载功能暂未启用。创建配置文件后,此提示会自动消失。

推荐使用脚本管理配置,而不是手动编辑 JSON 文件。进入插件安装目录(路径根据实际 profile 替换):

cd ~/.dsh/profiles/web/node_modules/dsh-bulwark

常用命令如下:

# 添加受保护路径
./scripts/protect.sh add /path/to/protect

# 查看受保护路径列表
./scripts/protect.sh list

# 移除受保护路径
./scripts/protect.sh remove /path/to/protect

# 测试特定命令是否会被拦截
./scripts/protect.sh test "rm -rf /path/to/protect/foo"

# 修改守则内容
./scripts/protect.sh set-rules "[dsh-bulwark 守则] 新的守则内容"

逃生通道

如果需要临时完全禁用 dsh-bulwark,可以在启动 DSH 时设置环境变量:

DSH_FORTRESS_DISABLE=1 dsh web

清除该环境变量或重启即可恢复保护。注意,变量名中的 FORTRESS 是项目旧名(dsh-fortress)的遗留,保留它是为了不破坏已有配置。

注意事项

  • 插件以当前 DSH 进程的权限运行,建议在安装前检查源码与许可证(MIT)。
  • 默认配置中 protectedPaths 为空,需通过上述 CLI 脚本手动添加需要保护的路径。
羽毛球分组比赛记分
小程序二维码

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

小夜