dshbase

插件目录 / Developer / dsh-file-confirm

dsh-file-confirm

已验证 · 实测可装 hfh1999

✓ 持续维护 基于 1 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-16最近推送
跨平台平台

功能简介

给dsh添加简单的文件审查手动审查功能,文件编辑/写入时,弹窗确认。

✅
我们的评价
可用 — 实测通过,早期项目

给dsh添加简单的文件审查手动审查功能,文件编辑/写入时,弹窗确认。 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

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

Awesome DSH Plugin
npm
License

双面插件:任何文件改动(write / edit / str_replace_editor 的写命令)执行前,都会在
输入区出现确认条,确认条内直接展示 diff 红绿文本
(新建全绿、编辑红删绿增);
用户点「允许本次」才放行,点「拒绝」则该次工具调用以失败结束(模型能看到拒绝原因并调整)。

演示效果

文件改动确认演示

使用流程

模型调用 write / edit / str_replace_editor
  → 确认条弹出(标题 + 文件路径 + 内嵌 diff 红绿预览)
  → 你点「允许本次」→ 工具执行,文件写入
  → 你点「拒绝」   → 工具失败,模型收到拒绝原因并调整
  • 只拦文件写操作;read、搜索、bash 等不受影响
  • 其他工具的审批(如 bash 沙箱升级)仍走内置面板
  • 长文本 diff 不截断,块内滚动查看

文档

与生态对比

插件 定位 差异
dsh-tool-approval 任意工具调用预审批(include/exclude 通配符) 通用黑盒确认(只显示工具名+原因),无内容预览
dsh-permgate 细粒度权限网关(规则/白黑名单/分类) 重型权限管理,需要配置规则
dsh-change-review 会话内 write/edit 事后 diff 审查 写后审查,非写前确认
本插件 写前确认 + 内嵌 diff 内容预览 零配置、专注文件写入、允许/拒绝前看到确切改动

原理

利用 DSH 的官方扩展点,零侵入、不修改任何内置包:

工具调用
  │
  ▼
tools/pre-execute(可重排 allow/deny/ask 门)   ← Host 半身在此拦截
  │ 返回 { kind:'ask', reason }
  ▼
ctx.approval.request() → web 网关 → 浏览器
  │
  ▼
conversation.composer(chain slot, priority 0) ← Browser 半身在此接管渲染
  │  内置 ApprovalPanel 是 priority 1(先注册先被尝试,我的条目先被选中)
  ▼
确认条(标题 + 文件路径 + 内嵌 diff 红绿文本 + 拒绝 / 允许本次)
  • Host 半身(lib/index.js):监听 tools/pre-execute,对文件改动工具返回
    { kind: 'ask', reason };其余工具调用 next() 委托,与其他门共存。
  • Browser 半身(lib/client.js):在 conversation.composer chain slot 注册
    priority 0 条目,selector 只匹配文件改动类审批;其他审批(如 bash 沙箱升级)
    返回 null,仍由内置 ApprovalPanel 处理。
  • diff 渲染:从会话快照的配对工具调用参数(argsRaw)取内容,
    用简易行级 diff(公共前后缀 + 中间替换)渲染红删绿增:
    • write → 新内容全文(绿)
    • edit → old_string / new_string 行级对照(红删绿增)
    • str_replace_editor → str_replace / insert / write 命令分别渲染
  • 确认响应复用内置 wire 编码:wait.respond({ ok, value: { sessionId, approvalId, outcome } }),审计记录(approval/asked、approval/decided)照常写入。

安装(bundle)

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

或手动在 $DSH_HOME/profiles/web/cordis.patch.yml 里挂载:

- insert:
    - id: file-confirm
      name: dsh-file-confirm
      config:
        tools: [write, edit, str_replace_editor]   # 可自定义
        # pathPattern: '^src/'                     # 可选:仅对匹配路径确认
        # enabled: true

然后重启 dsh web 并刷新浏览器页面。

配置(cordis.patch.yml 中该行的 config)

键 默认 说明
tools [write, edit, str_replace_editor] 拦截的工具名列表
pathPattern 无 RegExp 字符串;仅对匹配的文件路径确认
enabled true 总开关

卸载

dsh plugin --profile web remove dsh-file-confirm

文件

cordis.patch.yml   bundle patch:dsh plugin add 时自动注册插件行
package.json       双面插件声明(dsh.bundle + dsh.client)
lib/index.js       Host 半身:tools/pre-execute 拦截
lib/client.js      Browser 半身:conversation.composer chain + 内嵌 diff 确认条
showtime.png       演示截图

许可证

MIT © 2026 dsh-file-confirm contributors

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-file-confirm」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:hfh1999/dsh-file-confirm

Headless(CLI)profile:

dsh plugin --profile headless add github:hfh1999/dsh-file-confirm

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →