前言¶
DSH 採用插件化架構,開發者常需要精細控制模型對文件系統的操作。當模型調用 write、edit 或 str_replace_editor 等工具時,此插件在輸入區插入確認條,攔截文件寫操作,確保改動在執行前經過人工確認。
核心功能¶
- 攔截寫操作:攔截
write、edit、str_replace_editor等文件寫工具。 - Diff 預覽:輸入區出現確認條,直接展示 diff 紅綠文本。
write顯示新建內容(綠),edit顯示行級對照(紅刪綠增)。 - 允許/拒絕機制:用戶點「允許本次」放行,點「拒絕」則工具調用以失敗結束,模型可據此調整策略。
- 長文本支持:長文本 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 提供了簡單直接的文件審查能力。