Skip to content

fix: 修复 MEMMY-592 产物输出位置(v1.2.4) - #627

Closed
yxyi123 wants to merge 1 commit into
MemTensor:v1.2.4from
yxyi123:fix/memmy-592-output-location-v124
Closed

yxyi123 wants to merge 1 commit into
MemTensor:v1.2.4from
yxyi123:fix/memmy-592-output-location-v124

Conversation

@yxyi123

@yxyi123 yxyi123 commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

关联缺陷:MEMMY-592(https://devops.aliyun.com/projex/bug/99438b0647c72a788219fbeb2b)。项目 A 的任务读取外部目录 B 的参考资料后,产物可能沿用 B 的保存路径。现在默认保存到当前工作区;当前用户明确指定其他目录时直接采用,并在写入前和交付前检查位置。

修复范围

  • 读取工作区外的参考文件符合现有设计。本次约束写入目标和实际交付位置,普通引用链接不会被当成产物拦截。
  • 会话保存用户指定的输出目录,子任务继承;历史记忆和参考文件路径不能改变当前目的地。
  • 文件写入、编辑和补丁执行前检查目标;脚本通过 output_paths 声明交付文件并在执行前检查。
  • 交付前检查已跟踪产物的位置和存在性;失败时返回正确目录,最多进行两轮交付修复。

对格式、是否实际重写及虚假完成声明的对照实验显示,基模能力是重要因素:5.6 luna 出现复制旧稿并声称重写,6 luna 仍复用或未在本轮预算内完成,6 sol 在同样输入下实际生成和重写正文。本次不扩展记忆评分、摘要机制或报告正文验收,也不增加授权弹窗、操作系统隔离或 document 专用模块。该结论不保证强模型在所有任务中均正确。

独立提交

基于最新 v1.2.4:daf6bc76;修复提交:ca3b736d。相对目标分支只有 1 个提交,10 个源码文件和 3 个测试文件(共 13 个文件)。从旧 PR #608 提取已审核的功能与回归测试,未带入旧 CI 配置、同步合并提交或其他人的改动;新增一项回归测试,覆盖 v1.2.4 的工作区内绝对补丁路径与含空格文件名。

验证

  • Linux/macOS 关联 Agent 回归各 558 项通过;Windows 555 项通过、3 项跳过(2 项此前已确认的无关 Windows 断言按约定未重复运行,1 项上游平台条件跳过)。三个平台的 Agent 类型检查和构建通过。
  • 仓库规范、类型检查,改动文件规范检查,以及 45 项打包检查通过。
  • 桌面运行时专项 98 项通过;剩余 2 项 Memory 服务身份断言在未修改的 v1.2.4 上同样失败,CI 整体仍显示失败,未计为通过或改动其测试。
  • 新构建的 arm64 unsigned DMG 内,10 项可控模型路径场景通过,包括默认目录、用户指定外部目录、错误路径纠正、外部引用、有限修复和新绝对补丁路径。包内 10 个改动运行时模块与本轮构建完全一致。
  • 同一 Electron 运行未修改的 DMG 代码,隔离数据目录验证首次启动、重启和测试数据库哨兵保留通过;本轮不宣称完成真实账号迁移、界面人工验收或正常退出清理验证。

测试工作流仅位于个人 fork 的独立验证分支,检出的修复提交固定为 ca3b736,不进入本 PR。验证:https://github.com/yxyi123/memmy-agent/actions/runs/38517241341

限制:这不是 OS 沙箱,不能完整阻止任意脚本中未声明的写入;没有增加报告原创性或语义完成审核。本轮没有重复与迁移无关的模型实验和已归因的全量基线失败。

@origami-chen origami-chen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

看了下,当前方案是从模型最终回复的 Markdown 中提取文件路径,再决定哪些文件需要交付检查。这个方案感觉不太合理,检查范围太依赖模型的回复格式了,PR里已经出现了两个问题:

  1. 正则问题导致带括号的文件名匹配失败,导致产物漏检;
  2. 声明交付多个文件但实际只生成部分文件,回复只链接已生成文件时,其他缺失文件未被检查,任务仍被判定为完成。
    看下是不是可以复用 output_paths 和文件工具的执行记录,统一维护明确的待交付清单,在最终回复交付给用户前,直接核验完整清单中的文件是否存在、是否位于用户指定目录。检查时要注意区分中间文件与最终产物。
    检查通过后,如果又发生文件变更、输出目录调整或相关后台任务继续写入,不能沿用原来的验证结果。子任务也需要获取最新输出目录,并将产物记录传回父任务,由父任务在真正交付前统一复核,避免用户已修改目录,子任务仍向旧目录交付。

@yxyi123

yxyi123 commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

已迁移至最新集成分支 v1.2.6,后续修改与审核请见 #677。本 PR 面向 v1.2.4,现关闭以避免重复审核。

@yxyi123 yxyi123 closed this Oct 20, 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.

2 participants