Skip to content

fix(tools): 统一 edit_file 与 exec 参数别名及输出计量单位 - #663

Closed
Orsted290 wants to merge 93 commits into
MemTensor:mainfrom
Orsted290:fix-tool-aliases-output-units-v124
Closed

Orsted290 wants to merge 93 commits into
MemTensor:mainfrom
Orsted290:fix-tool-aliases-output-units-v124

Conversation

@Orsted290

Copy link
Copy Markdown
Contributor

问题与修复

模型同时看到 edit_file 的五组蛇形/驼峰参数、exec 的 command/cmd 等同义字段;执行器按优先级取值,可能静默忽略另一份输入。max_output_tokens 名称还与实际字符截断单位不一致。

  • edit_file 的模型 schema 只暴露规范字段;兼容层转换并归一化旧别名,同值合并、异值明确报错,并在任何文件访问前拒绝。
  • 保留显式空字符串:new_text="" 仍用于删除;空串与非空串同时传入报冲突,不擅自选取非空值。null/undefined 保持未提供语义。
  • exec 只公开 command、cwd、timeout、shell、login、yield_time_ms、max_output_chars;旧命令/目录/超时/等待时间别名继续兼容,异值冲突在命令准备、进程或会话创建前拒绝。
  • exec/write_stdin 统一公开 max_output_chars,明确为 UTF-16 码元(JavaScript string.length),不是 token;旧 token 命名字段隐藏并保持历史字符额度含义,不估算 token 换算。
  • write_stdin 同步归一化旧别名,在输入、关闭或终止等副作用前检查冲突;保留既有直接调用超时上限兼容。

冲突会作为工具错误回传,调用方可修正后重试;执行器不会自动选择某一份值执行。

改动范围

App/memmy-agent/ 下:

  • src/core/agent-runtime/tools/{filesystem,shell,exec-session,parameter-aliases}.ts
  • src/templates/agent/tool-contract.md
  • tests/core/agent-runtime/tools/{edit-file-aliases,exec-aliases,exec-session-tools}.test.ts

本 PR 不包含定位模式校验顺序的修复,该缺陷由另一条 PR 处理。

验证与边界

  • 本独立分支:7 个文件、279 项通过,覆盖 schema、旧别名、同值合并、空串/异值冲突、无副作用、合法执行及输出限制。
  • 两项修复组合后:22 个文件、688 项通过;涉及的 10 个文件与此前打包验收版本逐字节一致。
  • 此前组合版本:macOS arm64 unsigned 打包成功,包内 22/22、桌面 4 场景的 8/8 断言通过。桌面真实走 UI→Agent→工具执行链路,使用隔离数据及本地可控模型响应。
  • 桌面证据包含:别名冲突后文件不变;修正为空串后删除成功;command/cmd 冲突未生成副作用文件;旧 cmd 成功;2400 UTF-16 码元输出保留 1000、截去 1400。
  • git diff --check 通过。此前 3 处 ApiConfig.timeout 测试类型错误未改,不声称全测试类型检查通过。
  • 沿用 UTF-16 slice,未改为 Unicode 字素安全截断;未评估远程模型重复参数/token 消耗下降幅度,未做 Windows 验收。

合并协调

与 fix-edit-file-selection-validation-v124 同以 v1.2.4 为基线,分别对应两个缺陷。两者修改相邻参数入口与契约,先合并任一条后,另一条需要处理重叠冲突;保留别名归一化和定位校验两部分,不以 ours/theirs 覆盖。已验证本地组合结果及 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
纪广帝 and others added 23 commits October 15, 2026 20:07
feat: build all Memory runtime platforms with one command
fix: wake exec waits on completion and buffered output (MEMMY-675)
…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
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