chore(memory): bump version to 0.2.8 - #3375
Conversation
Synchronize Cargo, OpenClaw, MCP, RPM, and catalog release metadata. Keep Cargo.toml authoritative and generate the package contract from its template. Curate bilingual notes from the changes since 0.2.7, including the OpenClaw name migration, writable sessions, configuration validation, and search ranking. Retain the requested patch version while explicitly documenting the tool-name break. This bump adds no new runtime behavior; validation covers Linux x86_64. Assisted-by: Codex:0.155.1 Signed-off-by: 爱鲲 <jiawa.syx@alibaba-inc.com>
kongche-jbw
left a comment
There was a problem hiding this comment.
Review baseline: a35d3d2ecff2...6b4355ba0919
未发现阻塞问题。
Remaining risks:
- 未复跑完整 RPM 构建;agent-memory 和 anolisa 的 CI 在审查时仍在运行。
0.2.8含已记录的 OpenClaw 工具名迁移;部署仍需更新提示词/allowlist 并重启。
Verification scope:
- 审查完整 11 文件 PR diff、全部评论、Review、thread 与触发事件上下文。
- 版本同步、JSON 解析、Cargo metadata、rustfmt 和 diff check 均通过。
|
Code Review(AI · Code Reviewer agent)@ 已独立复核(本地 checkout PR head,非仅读 diff):
|
Forrest-ly
left a comment
There was a problem hiding this comment.
Review baseline: 6b4355ba0919e9bc19f24d34c1547851a8096279(单 commit,head 未漂移)
结论: COMMENT — 未发现阻塞问题,4 条非阻塞建议。审查方式:本地 checkout PR head 独立复核,不只看 diff。
一、已复核通过的点
1. 11 个发布面版本一致性
全部为 0.2.8,且改动文件集与上一次 bump a443acbd(0.2.7)逐文件一致,符合既有约定:
Cargo.toml:3;Cargo.lock:13仅[[package]] name = "agent-memory"条目变更,无依赖漂移 ⇒ 与「纯元数据 commit」自洽。adapters/agent-memory/manifest.json:3、openclaw/openclaw.plugin.json:4、openclaw/package.json:3、config/mcp-server.json:4。openclaw/package-lock.json:3,9:root.version与packages[""].version都改了,与Makefile:98里sync-versions的 jq 表达式(.version = $v | (.packages[""] | select(.) | .version) |= $v)一一对应 ⇒ 该 head 上make sync-versions为 no-op,不会在构建时 dirty 工作树。src/anolisa/manifests/components/agent-memory/component.toml:3(catalog),.anolisa/component.toml被 gitignore、由component.toml.in(version = "@VERSION@")生成,处理方式正确。- 全仓
git grep -n "0\.2\.7"残留仅三类,均为预期:根CHANGELOG*.md的 v1.4 stack 组件表(按specs/documentation-standard.md:226,根 changelog 由 stack release 聚合,不属组件 bump 范围)、其它组件 lockfile 里的第三方依赖(relateurl@0.2.7等)、agent-memory 自身的 0.2.7 历史 changelog/spec 条目。 python3 scripts/check-component-versions.py⇒Component version metadata is synchronized.(exit 0)。
2. RPM
agent-memory.spec.in 无需改 Version(Version: @VERSION@,由 Makefile 从 Cargo.toml 注入)。新增 %changelog 条目(spec.in:204-211):逆序紧接在 0.2.7-1 之前、空行分隔与既有条目一致;Sun Sep 20 2026 星期自洽(date -d 2026-09-20 +%A = Sunday);-1 与文件头 %define anolis_release 1 一致;6 条摘要与 a443acbd..main 的实际范围匹配,且把工具改名的迁移要求放在第一位。
3. changelog 内容准确性(逐条回查已合并代码)
#3213:「在插件启动时按服务端规则检查 128 字节 UTF-8 上限」表述准确 —— JSON Schema 的maxLength: 128只是字符数,真正的字节校验在openclaw/src/config.ts:91的Buffer.byteLength(value, "utf8"),且resolveSessionId(config.ts:283)对sessionId复用同一函数;sessionId/sessionDir两个 schema key 也确实存在。#3296:对应let relevance = -bm25_score;与SearchHit::score的「higher is better」注释,并有回归测试search_ranks_the_stronger_bm25_match_first/search_reports_one_score_convention_on_every_path。#3266:对应src/session/base.rs的$XDG_RUNTIME_DIR→ tmp 两级回退,以及fallback_owner_is_us()、is_planted_symlink()(AT_SYMLINK_NOFOLLOW)等 ownership/permission/symlink 检查 ⇒ 「回退路径会检查所有者、权限及符号链接重定向」无夸大。#3238:openclaw.plugin.json:45-50的enum只剩basic|advanced(expert被拒),stopStaleClient()在resolveConfig之前调用 ⇒ 「校验重载前先停旧 client,避免旧进程持有存储锁」准确。#3231:make distcopy list 修复,影响 source/RPM 构建者拿到的产物,放进 Fixed 合理。#3347:contracts.tools恰为 4 项,且每项在toolMetadata下声明profiles: ["coding"]⇒ 「声明全部四个插件工具」准确;改名映射见mcp-client.ts:91(anolisa_memory_search → memory_search),只有 2 个工具改名、memory_observe/memory_get_context保持原名 ⇒ changelog 只写这两个新名字是准确的;「内部 MCP 名称和已存储记忆保持不变」也与resolveMcpToolName的实现一致。
4. 中英对齐与链接可达性
两份 changelog 结构完全对称(新增 1 / 变更 2 / 修复 4,PR 编号与顺序一致,各自指向对应语种文档),语义等价。bash scripts/docs-lint.sh(naming + en/zh tree parity)与 python3 scripts/docs-link-check.py 本地均通过。
更关键的是链接指向的用户指南确实兑现了迁移承诺,不是空头引用:docs/user-guide/{en,zh}/token-saving/agent-memory.md 已包含 4 个新工具名、anolisa_memory_search → memory_search / anolisa_memory_get → mem_read 映射表、.anolisa-memory-anolisa-disabled-memory-core 标记的手动恢复步骤(en:189-199 / zh:179-186),以及排障表中「提示词仍使用旧工具名」一行(en:687 / zh:672)。破坏性变更的迁移指引在 changelog(en/zh) + RPM changelog 首条 + user guide(en/zh) 共四处落地,醒目度足够。
5. 范围对账(是否漏记/多记)
git log --no-merges a443acbd..origin/main -- src/agent-memory = 13 commits,来自 10 个 PR:#3213 #3222 #3231 #3238 #3256 #3266 #3281 #3296 #3347 #3372。changelog 引用了 6 个;未引用的 4 个中,#3281 与 #3372 是 ci(memory)(仅在打包/PR 时跑插件 TS 测试)、#3256 是构建管线(esbuild 前加 tsc),都不改变已发布产物内容,按 user-perceivable 口径排除合理 ⇒ 无越界内容、无把未合并改动写进 release note 的情况。唯一值得补的是 #3222 的编号(见 S1)。
6. CI @6b4355b(现已全部完成)
Test agent-memory、Test anolisa、Check component versions、📚 Docs Lint 全部 completed/success;整体 14 pass / 0 fail。这也是 #3372 新接入的插件单测门禁第一次跑在 release PR 上,已通过,npm 依赖抖动未复现。
7. 改名的仓内影响面
除 src/agent-memory 与 docs/ 之外,全仓唯一的 memory_get / memory_search 引用是 src/benchmark/claweval-runner/src/ce_runner/tool_injector.py:73 的 _DENY_BUILTIN_TOOLS —— 那是 OpenClaw 内置 memory-core 的工具名,正是本次改名要避开的同名冲突(first-wins 注册表会把插件同名工具丢弃)。改名后该 deny 列表不再误伤本插件 ⇒ 仓内无消费者被破坏。
二、非阻塞建议
S1 · 可追溯性(建议本次就改)
src/agent-memory/CHANGELOG.md:19、CHANGELOG_zh.md:19(coding profile 那条)与 agent-memory.spec.in:206:这一条描述的其实是 #3222 + #3347 的合并终态(install/uninstall 不再接管 memory-core、但保留历史禁用标记并给出手动恢复)。#3347 自己的 commit message 也写了 Supplements: b8d93c2f6fad。建议把引用改成 (#3222, #3347),这样 specs/documentation-standard.md:272 要求的「release bump PR 聚合上个版本以来所有 user-perceivable 变更」可以直接对着 git log a443acbd..HEAD 逐 PR 核账,不需要读 commit message 才能对齐。
S2 · 收录口径显式化(可后续做)
现在的口径是隐式的:#3231(make dist)进了 Fixed,理由是「source/RPM 构建者拿到的产物变了」;#3256(bundle 前跑 tsc)没进,理由是「只改构建流程」。两者都属构建侧,判断本身我认同,但建议在发布 checklist / specs/documentation-standard.md 里补一行规则(例如「仅改变构建或 CI 流程、不改变已发布产物内容的变更不入 changelog」),避免每次 bump 重新讨论一遍。
S3 · breaking change 与 patch 版本号(本次不阻塞,建议在根 release 补强)
这是本仓所有组件 changelog 里的第一条 **Breaking change:**。CONTRIBUTING 与 specs 都没有禁止 pre-1.0 组件在 patch 位做不兼容变更,PR body 也明确记录了「patch version was explicitly requested」,且迁移指引已在四处落地 ⇒ 不构成阻塞。建议:下一次根 stack release(不是本 PR)把这次工具改名写进根 CHANGELOG.md 的 ### Compatibility 小节,参照 CHANGELOG.md:48-52 里 Tokenless Protocol v2 的写法 —— 运维查跨组件不兼容变更是看那一节的;同时在 ### Component Versions 表旁的 highlights 里点一句「agent-memory 0.2.8 需迁移提示词 / tool allowlist 并重启 gateway」。
S4 · 适配层版本下限(请 owner 确认,不必在本 PR 改)
adapters/agent-memory/manifest.json:6 仍是 "compatibleVersions": ">=5.0.0",而 0.2.8 的 plugin manifest 首次依赖 toolMetadata.profiles(#3347 引入的新 key)。请适配层 owner 确认 >=5.0.0 仍是支持 toolMetadata 的真实下限;若需要抬高,走单独 PR 更合适,不必塞进这个纯元数据 commit。
关于 #3372 的 4 条 follow-up(setup-node 无 cache、npm install 应为 npm ci、tsx --test 不拦类型错误、失效注释)
均为 CI / 构建质量项,不改变已发布产物,不建议作为本 release 的前置条件;按正常 follow-up PR 落地即可。
本次审查为 AI Code Review(Code Reviewer agent),复核范围:完整 11 文件 diff、a443acbd..main 提交范围对账、changelog 与已合并代码的逐条比对、版本一致性脚本与 docs-lint/link-check 本地复跑、CI 结论。未复跑完整 RPM 构建与 cargo test(本 commit 不含 Rust 代码变更,CI 已覆盖)。
Why
Prepare agent-memory 0.2.8 from the changes merged after the 0.2.7 release commit
a443acbd. This release includes writable session fallback, corrected search ranking, and OpenClaw configuration and tool integration fixes. The patch version was explicitly requested; the OpenClaw tool-name incompatibility is prominently documented.What changed
Synchronize all 11 tracked release surfaces: Cargo manifest/lock, adapter and OpenClaw manifests, npm manifest/lock, MCP descriptor, ANOLISA catalog, RPM changelog, and English/Chinese changelogs. Cargo.toml remains authoritative; the ignored
.anolisa/component.tomlis regenerated and checked separately. Notes describe the final behavior of #3213, #3231, #3238, #3266, #3296, and #3347; the temporary memory-core takeover was superseded by namespaced tools. This commit changes metadata and release documentation only.Related issue
no-issue: component release aggregation and synchronized version metadata.
User / Agent impact
anolisa_memory_searchandanolisa_memory_get; update prompts and allowlists, restart the gateway, and start a new conversation. Internal MCP names and stored memories are unchanged.codingprofile. Explicit custom and sandbox policies remain operator-owned. Intermediate installers' memory-core disable markers require manual recovery; installation does not silently reselect the operator's memory backend.expertprofile is rejected with guidance. Reload validation stops the prior client first.Risk and compatibility
These boxes describe the released range; this bump adds no runtime changes. Tool-name migration is required despite retaining the requested patch version. Session fallback checks ownership, permissions, and symlink redirection. The catalog and adapter versions are synchronized. No stored-memory format migration is introduced.
Validation
Linux x86_64; rustc 1.98.1, Node.js 24.15.0, npm 11.12.1.
cargo fmt --allandcargo fmt --all -- --checkcargo check --offline;cargo clippy --workspace --all-targets --locked -- -D warningscargo test --workspace --locked: 370 passed, 0 failed/ignoredcargo doc --workspace --no-deps --lockedmake build-openclaw-plugin: TypeScript check and bundle passed;npm test: 154 passedmake test-openclaw-install: 53 scenarios passednode tests/host-policy-test.mjs /tmp/anolisa-memory-openclaw-2026.9.2/node_modules/openclaw: 12 real-host loader/policy scenarios passed, including coding, custom allow/deny, sandbox restrictions, and namespaced toolscargo build --release --locked;target/release/agent-memory --version:agent-memory 0.2.8make smokewith isolated outer memory/session paths; additional JSON-RPC assertions verified the 0.2.8 handshake, tool listing, write/read/grep/list/observe, and traversal rejection, then reaped the servermake distin an isolated copy produced source/vendor archives; unpacked archives passedcargo check --offline --locked --all-targetsfrom the extracted source directorynpm pack --dry-run --json: version and required plugin payload verifiedmake spec;rpmspec -q --qf '%{NAME} %{VERSION}\n' agent-memory.spec:agent-memory 0.2.8python3 scripts/check-component-versions.py;bash tests/test-check-component-versions.sh;bash tests/test-build-all-runtime-deps.shcheck_release.pypassed for the working tree and committed revision againsta443acbd, covering all 11 previous release surfaces; generated contract checked as 0.2.8;git diff --checkpassedLimits: no full
rpmbuildwas run. The existing source archiveLICENSEis still the literal../../LICENSEtext rather than the license body.rpmspecretains the pre-existing 0.2.1 historical weekday warning. These were not changed by the release bump.Documentation and rollback
English and Chinese changelogs are paired and the RPM changelog records the same release boundary. Tool migration and legacy marker recovery link to the existing bilingual user guide. To roll back the release metadata, revert this commit; to roll back deployed behavior, reinstall 0.2.7 and restore the prior OpenClaw prompt/tool policy names, then restart the gateway and start a new conversation. Preserve memory data and inspect any legacy memory-core disable marker before changing the selected backend.