Skip to content

feat(hosts): add active memorization instructions - #699

Draft
xnne-bot wants to merge 4 commits into
NevaMind-AI:mainfrom
XnneHangLab-Mirror:feat/host-active-memorize
Draft

xnne-bot wants to merge 4 commits into
NevaMind-AI:mainfrom
XnneHangLab-Mirror:feat/host-active-memorize

Conversation

@xnne-bot

Copy link
Copy Markdown
Contributor

📝 Pull Request Summary

给所有 host 的 managed instruction block 增加主动 memorize 触发指引:用户要求记住内容,或已完成的交流/任务产生值得保留的偏好、决策、可复用流程时,agent 按需运行 memu memorize instructions,读取共享的完整操作指南。

依赖 #698 的独立 run 生命周期。 本 PR 单独维护在 feat/host-active-memorize,未向 #698 添加提交;待 #698 合入后更新基线。

仅审查本次指令改动:XnneHangLab-Mirror/memU@feat/developer-isolated-runs...feat/host-active-memorize


✅ What does this PR do?

  • 复用所有 host 现有的 install-instruction / remove-instruction,安装和卸载简短的主动 memorize 触发指引。
  • 新增 memu memorize instructions,直接打印随包分发的 Markdown 指南;读取指南不构建 backend、不分配 run。
  • 指南覆盖真实消息到 canonical JSON 的转换、prepare 返回的 run-id、串行执行 handoff、成功后 commit,以及失败保留和 discard。
  • 明确尊重不记忆要求,排除凭据与运行元数据,并避免在安装、定时 bridging 或 evolve 执行中递归触发。
  • Agent 可自行执行一个串行 executor pass,或委派给一个能够等待完成的 executor;使用已有 developer CLI run 契约。
  • 更新 developer 文档,说明已安装 host 通过重新运行 install-instruction 获取新触发指引。

🤔 Why is this change needed?

Host agent 已能检索记忆,也需要在任务完成后主动保存值得保留的内容。统一的按需指南让各 host 使用同一输入与执行契约,同时保持常驻指令简短。

覆盖 Codex、Claude Code(含其 Cowork 接入)、Cursor、Hermes、OpenClaw、WorkBuddy、Cola、pi 和 generic agent。主动流程调用 memu memorize;定时 host bridging 继续使用自己的 prepare–commit 与游标,不因主动 memorize 跳过整个原始 session。


🔍 Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor / cleanup
  • Other (please explain)

✅ PR Quality Checklist

  • PR title follows an allowed format
  • Changes are limited in scope and easy to review
  • Documentation updated where applicable
  • No breaking changes (or clearly documented)
  • Related issues or discussions linked

验证:

  • 全量测试:710 passed,7 skipped;全库 mypy 通过。
  • 9 个 host 的安装、重复安装、卸载均覆盖;用户原有指令保持不变。
  • 指南的 message/tool JSON 示例通过 canonical 模型校验;指令入口不访问 backend 或创建 run。
  • Wheel 构建成功,确认包含 memu/app/memorize/INSTRUCTIONS.md。
  • 修改文件通过 pre-commit 和 git diff --check。

这里验证的是指令分发、命令和输入契约,尚未实测各 host 模型自主触发和完成 memorize 的效果。


📌 Optional

  • Screenshots or examples added (if applicable)
  • Edge cases considered
  • Follow-up tasks mentioned

Evolve 类型选择继续由 #697 跟踪。

MrXnneHang and others added 4 commits September 10, 2026 17:30
Allocate a private directory for each prepare batch and return its run id.
Target commit, resource verification, and explicit discard by that id.
Keep failed backend commits retryable and remove successful runs completely.

Document the CLI migration, executor ownership, and backend conflict boundary.

BREAKING CHANGE: memorize commit and verify-resources require a run id.

Co-authored-by: Codex <codex@openai.com>
AI-Model: gpt-6-astra
Co-authored-by: Codex <codex@openai.com>
AI-Model: gpt-6-astra
Report successful backend submission when snapshot refresh or working-file
cleanup fails, so callers can discard the stopped run instead of resubmitting.
Cover snapshot, job, and directory cleanup failures in regression tests.

Co-authored-by: Codex <codex@openai.com>
AI-Model: gpt-6-astra
Add a shared completed-work trigger to host instruction blocks and expose the
packaged developer run guide through memu memorize instructions. Cover all nine
host installers and validate the guide's canonical examples offline.

Co-authored-by: Codex <codex@openai.com>
AI-Model: gpt-6-astra
@xnne-bot

Copy link
Copy Markdown
Contributor Author

补充主动 memorize 的使用场景、触发方式,以及一次实际运行的结果。

使用场景

  • 用户明确要求保存偏好:例如“记住:README 保持极简,详细操作说明放到专门文档。”
  • 一轮设计讨论已经收敛,希望保存最终决策:例如“把我们刚才确定的主动 memorize 设计保存为 memory,并区分已实现能力和后续方向。”
  • 一个任务已经完成,形成了可复用的工作方法,希望下次继续使用。

模型也可根据 managed instruction,在已完成任务中发现长期偏好、决策或可复用流程时主动启动。此类自主判断属于模型行为,不保证每个 host、模型、上下文下都稳定触发;应尊重用户不记忆的要求,且避免在安装、定时 bridging 和 evolve 执行中递归触发。

当前可用的显式触发

在 host 对话里可以直接说:

请主动 memorize 刚才确定的设计。先运行 memu memorize instructions,按指南完成 prepare → evolve → commit,最后告诉我提交结果和 run 是否已清理。

这比只说“记住一下”更明确:它指定了工具入口和完成条件,避免 agent 只在聊天中口头确认。

也可以先手动运行:

memu memorize instructions

注意,这条命令只打印指南;真正的输入整理、evolve 和 commit 仍由 agent 接续执行。它本身不会保存记忆。

/skill 调用的现状

#699 当前安装的是全局 managed instruction 中的触发指引,加上 memu memorize instructions 命令;没有安装名为 memu-memorize 的 skill。因此当前不能把 /skill:memu-memorize 当作已可用入口。

如果后续给 pi 增加一个薄的 memu-memorize skill,让它转到同一个 CLI 指南,则可以提供这样的显式入口:

/skill:memu-memorize 把刚才确定的设计保存为 memory

以上 slash 命令是后续入口建议,尚未实现。各 host 的 skill 调用语法需要遵循其自身约定。

已有实测与产出

在 pi 当前会话中,用户明确要求把主动 memorize 设计保存为 memory,已完成真实 Cloud 流程:prepare → 模型执行 evolve → commit → 从 Cloud 回读确认。产生一条 memu-active-memorize-design memory;commit 返回的 recall_files 仅有该 memory,resources 为空,run 目录已自动删除。

这次输入来自真实设计讨论,由模型在 memory evolve 中提炼。skill job 没有需要新增的产物,resource job 验证结果为 0;两者仍执行了检查,但没有写入新 skill/resource。这证明当前完整流程可用,也说明明确的 memory 保存请求可以从 #697 的按类型 evolve 中获益。

直接接收“模型从上下文提炼的候选摘要”的独立输入格式仍待实现;本次运行没有把模型摘要伪装成用户原话提交。

@xnne-bot

Copy link
Copy Markdown
Contributor Author

补充主动 memorize 的流程压缩顺序,作为后续优化建议。

这次真实运行产出为 1 条 memory、0 条 skill、0 条 resource。对于“保存刚才确定的设计”这种明确的 memory 请求,skill job 检查后没有新增产物,resource 验证结果也为 0;完整流程能工作,但有可省去的执行成本。

优先级 可压缩部分 建议
1 固定执行全部 memory / skill / resource jobs 先做 #697 的按类型 evolve。明确保存 memory 时,只执行 memory evolve;only skill 与 resource 的关系也需明确。选择应贯穿 prepare、run marker 和 commit 范围。
2 模型把已理解的上下文重新组织成对话,再读回来提炼 支持明确标注的“模型提炼候选”输入,让模型直接提交候选结论;保留其来源语义,不能冒充用户原话。候选仍经过 evolve 与已有记忆比较。
3 简单请求仍拆成多个指令文件并逐个读取 memory-only 可以返回一份完整 handoff,减少 job 拆分及读取次数。执行目标与 job 粒度分开设计。
4 准备与本次目标无关的工作区内容 按所选类型进行镜像和快照,先减少无关 skill 文件的写入与检查。仅在客户端过滤不会减少后端列表响应流量;服务端查询优化可另行评估。
5 message-only 输入生成两个相同的 JSONL 按执行目标只生成必要投影。优先减少 agent 的无效工作,再优化文件写入。
6 同一会话重复读取相同完整指南 已加载且版本未变化时复用指南,减少重复上下文与工具调用。
验证开销 每次 commit 后再全量回读 本次回读用于验证真实持久化;正常成功路径通常可依赖 commit 响应,按需再做回读检查。

应保留的步骤:输入校验、与已有记忆的比较/去重、明确的 commit 边界,以及失败保留和恢复。模型理解当前上下文,并不意味着它知道后端已经保存了什么。

建议的主动 memory 流程:

模型从已完成上下文提炼候选
  → prepare 独立 run,准备现有 memory
  → 一次 memory evolve:比较、去重、修改
  → commit
  → 自动清理该 run

以上是基于本次产出的优先级判断,尚未做逐阶段耗时测量,也不是当前已实现的简化路径。本 PR 继续聚焦 host 指令分发与触发入口。

@MrXnneHang

Copy link
Copy Markdown
Collaborator

已建立供分层评审的 upstream stack,由 MrXnneHang 创建,使用与原 PR 相同的提交:

评审可在该 stack 中进行;最终合入仍由 xnne-bot 的 #698 / #699 承接。已核对两层 head 与原 PR 完全一致。后续评审修改需要同步回相应合入 PR。

This branch has not been deployed

No deployments
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