feat(agent): 新增 apply_patch 多文件补丁编辑工具

参考 Codex apply_patch 设计,支持单次调用对多个文本文件执行新增、
更新和删除:补丁以 *** Begin Patch / *** End Patch 包裹,Update 段
用 @@ 分隔 hunk,上下文行须与当前内容精确一致;先整体校验全部文件
操作,通过后才逐个原子写盘,并以校验期 sha256 防止并发修改。

- 工具描述与系统提示词明确 apply_patch / edit_file / write_file 分工:
  跨多文件或增删文件用 apply_patch,单文件单处替换用 edit_file
- 注册进工具工厂与 ALWAYS_INCLUDE 列表,加入策略 inventory 与
  MCP 隐藏列表,流式回调归类为 file_write
- 同步 create-moviepilot-plugin / publish-moviepilot-plugin /
  create-moviepilot-skill 技能的 allowed-tools 与版本
- 新增 tests/test_agent_apply_patch.py 覆盖解析、多文件应用、
  整体拒绝、权限边界与版本冲突场景
This commit is contained in:
jxxghp
2026-08-17 08:01:59 +08:00
parent 6269a24e9d
commit d7e610e656
13 changed files with 615 additions and 17 deletions
+1
View File
@@ -25,6 +25,7 @@ MCP_HIDDEN_TOOLS = {
"execute_command",
"search_web",
"edit_file",
"apply_patch",
"write_file",
"read_file",
}