前言¶
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 脚本手动添加需要保护的路径。