dsh-file-confirm:文件改动确认机制

前言

DSH 采用插件化架构,开发者常需要精细控制模型对文件系统的操作。当模型调用 write、edit 或 str_replace_editor 等工具时,此插件在输入区插入确认条,拦截文件写操作,确保改动在执行前经过人工确认。

核心功能

  1. 拦截写操作:拦截 write、edit、str_replace_editor 等文件写工具。
  2. Diff 预览:输入区出现确认条,直接展示 diff 红绿文本。write 显示新建内容(绿),edit 显示行级对照(红删绿增)。
  3. 允许/拒绝机制:用户点「允许本次」放行,点「拒绝」则工具调用以失败结束,模型可据此调整策略。
  4. 长文本支持:长文本 diff 不截断,支持块内滚动查看。

安装与启用

使用官方命令安装:

dsh plugin --profile web add dsh-file-confirm

安装后需重启 dsh web 并刷新浏览器。

配置

在 cordis.patch.yml 中配置该插件,可调整拦截范围:

- insert:
    - id: file-confirm
      name: dsh-file-confirm
      config:
        tools: [write, edit, str_replace_editor]   # 拦截的工具列表
        # pathPattern: '^src/'                     # 可选:仅对匹配路径确认
        # enabled: true

配置项说明:
* tools:默认拦截 write、edit、str_replace_editor。
* pathPattern:正则表达式字符串,用于限定文件路径。
* enabled:总开关。

工作原理

该插件利用 DSH 官方扩展点,分为 Host 和 Browser 两个半身,实现零侵入:
* Host 半身:监听 tools/pre-execute,对文件改动工具返回 { kind: 'ask', reason },其余工具调用委托。
* Browser 半身:在 conversation.composer chain slot 注册 priority 0 条目,selector 匹配文件改动类审批,接管渲染。
* 响应复用:复用内置 wait.respond 编码,审计记录照常写入。

注意事项

  • 仅拦截文件写操作,read、搜索、bash 等工具调用不受影响。
  • 其他工具的审批(如 bash 沙箱升级)仍走 DSH 内置面板。
  • 零侵入设计,不修改任何内置包。

总结

该插件专注于文件写入这一高风险环节,通过内置 diff 预览和允许/拒绝机制,为 DSH 提供了简单直接的文件审查能力。

羽毛球分组比赛记分
小程序二维码

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

小夜