合并受阻
🤖 正在生成合并请求摘要,请稍候…


🤖 AI 代码检视正在进行中,请稍候…


[提问] 语义重试成功时首次调用的 usage 被丢弃
语义修复重试成功后只记录了最后一次响应的 usage,首次调用的 token 消耗没有累加,长期用量统计会系统性偏低。
建议:跨尝试累加 usage 后再上报。


[阻塞] 拉取可变 MR ref,构建不可复现
refs/merge-requests/18/head 是随时可变的 MR 头,同一 Dockerfile 两次构建可能对应不同 commit;--depth 1 又丢失了基线信息,事后只有 /tmp/ram-a-commit 的记录而无校验。
建议:合并后改为固定 tag / commit pin(git fetch upstream <sha> && git checkout <sha>),或在 CI 中注入期望 sha 并校验后再构建。


[阻塞] 已部署环境的重建同样拉取可变 ref
与 Dockerfile 构建阶段同源的问题,但这条路径发生在已部署容器内,等于给运行环境留了一个"每次重建都可能拉到不同代码"的供应链入口。
建议:改用 /opt/metadata/ram-a-commit 记录的 sha 做固定 fetch,并在构建产物前校验 commit 一致。


[阻塞] sha256 只记录、不校验
sha256sum 只是把"当前下载到的文件"的哈希写进 /opt/metadata,没有与任何可信预期值比对——且下载源是"动态取最新版"的 URL,这条链路没有真正的完整性保障。
建议:pin 具体 RPM 版本号 + 期望 sha256,下载后 echo "<expected> /tmp/xiaoo.rpm" | sha256sum -c 通过再安装。


PR #18 评审总结
对照 merge-base 74879b1 与 PR head c2745ea 的完整 diff 做了一轮评审,主要问题已逐条发为行内评论。结论:存在 5 个建议合并前必须处理的阻塞项(集中在 deploy/arm64 镜像构建与服务端错误语义)。
阻塞项(5)
deploy/arm64/Dockerfile:28— GLM/OpenRouter 密钥经 ARG→ENV 固化进镜像,docker history可读;Dockerfile:11— 构建拉取可变refs/merge-requests/18/head,构建不可复现;scripts/rebuild-ram-a.sh:5— 已部署环境的重建同样拉可变 ref;Dockerfile:52— xiaoo RPM 的 sha256 只记录不校验,无完整性保障;memory-mcp service.rsmap_pipeline_error— 无条件retriable: true,永久性错误也被标记可重试。
应修项(7)
VECTOR_PERSIST_FAILED 兜底可重试、PIPELINE_VERIFY_FAILED 改名遗漏、json_repair_attempts == 1 魔法条件、strict json_schema 下 items 定义、reasoning 判定缺 <think> 标签支持、max_body_bytes 默认 1MiB→16MiB、文档错误映射表与代码不符。详见行内评论。
提问项(2)
Dockerfile:36运行时镜像 root + 完整编译工具链的攻击面问题;client.rs:198语义重试成功时首次调用的 usage 被丢弃。
已排查、无问题
- auth 配置校验并未 fail-open(
AuthConfig::validate仍强制 principal 检查); SQLITE_READONLY映射为不可重试,语义正确;- 错误码大规模改名与 observability 映射基本一致(仅上述一处遗漏)。
其他(非本 PR 引入 / 低优先级)
memory-pipeline/src/client.rs退避公式Duration::from_secs((1u64 << attempt.min(6)).min(64))三处重复(:287/:305/:367)为既有代码,建议顺手提取函数;- rerank 对
decode failed不再重试已有测试显式断言(rerank.rs:342),理解为有意收窄;仅提示与主 LLM 路径重试策略不一致,确认无碍可忽略。
行号均基于 PR head c2745ea。


概述
完善 RAM-A-MEM 的输入参数和运行时配置约束,增强 Pipeline 与存储故障的可观测性,并补充记忆摄入、检索、幂等、Rerank 和日志行为的自动化验收用例。
更新补齐记忆摄入管线的模型兼容配置和 GLM Coding Plan 验证说明;
主要变更
fail_fast行为。RAM_A_LOG_FORMAT支持json和compact日志格式,通过RAM_A_LOG_SOURCE控制源码位置输出;补充七阶段 Pipeline 事件、稳定诊断字段及敏感内容脱敏。fail_open行为;仅在显式启用fail_open时,Rerank 失败才返回 Rerank 前的 Hybrid 排序结果。reasoning_effort、enable_thinking、send_temperature、output_token_parameter、structured_output、reasoning_only_retry、json_repair_attempts等配置。reasoning_content只用于响应分类,不作为业务 JSON;如果只有 reasoning、没有最终content,可按配置最多纠正重试一次。prompt_only、json_object、json_schema三种结构化输出模式。兼容性与安全性
验证结果
cargo test -p memory-mcp:146 个测试通过。cargo test -p memory-pipeline:40 个测试通过。cargo check --workspace:通过。cargo clippy -p memory-mcp --all-targets -- -D warnings -A clippy::field-reassign-with-default -A clippy::items-after-test-module:通过。rustfmt --edition 2021 --check。git diff --check:通过。当前分支基于最新的
upstream/master,领先 7 个提交,没有仅存在于上游的新增提交。