better-er/dsh-write-rule-guard ↗★ 4

dsh-write-rule-guard

「DSH·写入规则守卫」:禁止在 edit/write 写入内容中使用匹配正则的字符,extraTools 可额外配置拦截更多工具。可在 cordis 配置文件里配置正则与报错文案。host 单半身。 适合需要对模型写入内容进行合规性检查、拦截特定敏感字符的用户。

패키지
dsh-write-rule-guard
호환성
미검증
버전
0.3.3
라이선스
MIT
최근 업데이트
2026. 10. 2.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:better-er/dsh-write-rule-guard

配置

插件通过 cordis 配置注入,默认 enabled: true。规则列表 rules 由 cordis.patch.yml 随安装带入一条匹配全角圆括号的默认规则;代码不兜底默认,rules 为空即不拦截。extraTools 由 cordis.patch.yml 随安装带入 dsh-remote-file-system 的 edit_remote 与 write_remote,给空数组则只拦内置的 edit / write。

配置文件位于 ~/.dsh/profiles/web/cordis.patch.yml,在此文件中添加对本插件的 config 覆盖即可。

键默认说明
enabledtrue是否启用拦截
joiner单个空格多规则命中时拼接各规则文案的分隔符,可填空格或 \n 等,由配置决定形态
pwshMessage内置默认文案处于禁 pwsh 态时拦截 pwsh 的文案,支持 {reason} 占位符嵌入最近一次失败理由;空则回落到内置默认。禁 pwsh 态指本回合内某次被拦截工具失败
rulespatch 注入的单条匹配全角圆括号的默认规则,为空则不拦截规则列表,每条含 enabled / pattern / message
extraToolspatch 注入的 edit_remote 与 write_remote额外拦截的工具列表,每项含 name 和 contentKey;给空数组则只拦截内置的 edit / write。文件路径参数固定按 file_path 读取,路径字段名不同的工具命中规则时 {file} 会填成「未知路径」;与内置 edit / write 同名的条目会覆盖内置映射

安装即随 cordis.patch.yml 注入一条默认规则,可直接对照修改;rules 为空则不拦截。每条规则独立检查、任一命中即拦,缺 pattern 的条目被忽略。单条规则命中的输出即该规则 message 填占位符后的单行文本;多条命中时用顶层 joiner 拼接,不再自动追加明细。

pwshMessage 缺省或为空时回落代码内置默认文案,patch 也注入了同款,可在配置文件里改成别的写法;想带上原写入理由就在文案里加 {reason} 占位符。

配置示例,等价于 patch 注入的默认规则与工具范围:

patch 的 config 是整块替换而不是逐键合并,所以在 profile 里覆盖本插件的 config 时必须重述 extraTools,否则会退回空数组。

- id: dsh-write-rule-guard
  config:
    enabled: true
    joiner: ' '
    pwshMessage: 'あー!坏孩子被抓住啦!用 pwsh 绕过可不行哦!先改对了再来吧!'
    rules:
      - enabled: true
        pattern: '[\uFF08\uFF09]'
        message: 本次写入未遵循用户偏好,已被用户拒绝写入。请修改为不使用括号的描述方式。行:{lines};文件:{file}
    extraTools:
      - name: edit_remote
        contentKey: new_string
      - name: write_remote
        contentKey: content

pattern 支持任意合法正则;若某条 pattern 是非法正则,该条保守放行不阻断。message 支持 {file}、{count}、{lines}、{pattern} 占位符,其中 {lines} 填充违规所在不重复行号的逗号分隔纯数字列表,如 3, 7。输出即填占位符后的结果,完全由 message 决定;需单行时 message 别写换行即可。