Skip to content

fix(edit_file): 前置定位模式校验并明确参数互斥规则 - #662

Closed
Orsted290 wants to merge 94 commits into
MemTensor:mainfrom
Orsted290:fix-edit-file-selection-validation-v124
Closed

Orsted290 wants to merge 94 commits into
MemTensor:mainfrom
Orsted290:fix-edit-file-selection-validation-v124

Conversation

@Orsted290

Copy link
Copy Markdown
Contributor

问题与修复

edit_file 原先在读取文件、查找匹配之后才检查定位参数互斥,创建文件及部分提前返回路径会绕过检查。模型参数说明也未明确定位模式和计数断言的关系。

  • 将参数类型、定位互斥及创建模式约束统一前置,覆盖注册器校验和直接 execute,在任何文件访问前拒绝冲突。
  • 明确默认唯一匹配、occurrence、line_hint、replace_all=true 的定位语义;仅 replace_all=true 与定位参数互斥,false 可以和定位参数组合。
  • expected_replacements 保持为独立计数断言,在写入前验证选中数量;创建模式仅接受省略/null 或 1,包括无变化操作。
  • 补充参数/工具契约说明,以及缺失文件、空文件、无匹配、创建、无变化和合法定位模式回归。

例如,old_text="" 配合 replace_all=true, occurrence=1 现在直接返回参数错误,不创建文件或目录;replace_all=false, occurrence=2, expected_replacements=1 可以正常替换第二处。

改动范围

  • App/memmy-agent/src/core/agent-runtime/tools/filesystem.ts
  • App/memmy-agent/src/templates/agent/tool-contract.md
  • App/memmy-agent/tests/core/agent-runtime/tools/edit-file-validation.test.ts
  • App/memmy-agent/tests/core/agent-runtime/tools/tool-descriptions.test.ts

本 PR 不包含别名收敛或 exec 输出单位修复。

验证

  • 本独立分支:6 个测试文件、241 项通过(定位校验、参数说明、文件操作、注册器及参数验证)。
  • 两项修复组合后:22 个文件、688 项通过;涉及的 10 个文件与此前打包验收版本逐字节一致。
  • 此前组合版本:macOS arm64 unsigned 打包成功,包内回归 22/22、桌面 4 场景的 8/8 断言通过。桌面使用隔离配置/数据库、本地可控模型响应,实际经过 UI→Agent→工具执行器,不代表外部真实模型效果评估。
  • git diff --check 通过。此前已确认的 3 处 ApiConfig.timeout 测试类型错误不在本 PR 范围;不声称全测试类型检查通过。

合并协调

与 fix-tool-aliases-output-units-v124 同以 v1.2.4 为基线,分别对应两个缺陷。两者修改相邻的参数入口与契约,先合并任一条后,另一条需要处理重叠冲突;不能直接以 ours/theirs 覆盖。已在本地组合分支验证:保留别名归一化,再执行本 PR 的定位约束,组合回归 688 项通过。

xuzhiqin1990 and others added 30 commits September 19, 2026 19:52
The OpenAI-compatible provider defaulted to a 120s request timeout,
which caused frequent timeouts during evaluation runs where model
responses legitimately take longer. Raise the default to 300s.

The MEMMY_AGENT_OPENAI_COMPAT_TIMEOUT_S env override is unchanged;
only the fallback default changes. Update the two default-timeout
assertions accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eout-300s

fix(providers): raise default model call timeout to 300s
…l-reply-copy-v1.2.2

fix(chat): 修复多轮对话中历史助手回复缺少复制按钮 MemTensor#666
…-install-v123

修复 Agent Hook 卸载后自动注入及 Codex trust 失败残留
…rt-conflict

修复:复用占用 18960 端口的兼容 Memory 服务
Synchronize the main branch code to the v1.2.3 branch
jiachengzhen and others added 21 commits October 15, 2026 22:53
…display

fix(desktop): render skill Markdown and restore slash command suggestions
统一已保存凭据的复用条件,绑定角色表单与 endpoint 来源,覆盖返回配置页、复用切换和凭据变更。

纳入 516ba15、43ead001 的 endpoint 去重依赖思路,并使用后端返回的 endpointAliases 替代掩码匹配;补齐相同模型去重和完整保存回归。
…all-dedup-v124

修复跨账号会话记忆重复写入与 L1 召回
…g-guard-v124

fix: guard embedding inputs and isolate rejected batches (MEMMY-488)
…ey-test

修复 BYOK 配置返回后的连接测试失败
…delete

fix: 删除任务时级联删除关联的 L1 和 span
@Orsted290
Orsted290 changed the base branch from v1.2.4 to v1.2.6 October 20, 2026 06:33
@Orsted290
Orsted290 changed the base branch from v1.2.6 to v1.2.4 October 20, 2026 06:36
@syzsunshine219
syzsunshine219 changed the base branch from v1.2.4 to main October 22, 2026 13:55
@Orsted290 Orsted290 closed this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants