Agent 能搜索到旧任务文档,并不等于它会正确阅读、引用并完成工作。这次 HomeLab 试点把问题拆成三层:检索质量、工具接入机制,以及真实 Agent 收益。最终结论是:SQLite 本地检索值得保留为工作区候选,但当前证据不足以支持 Codex 全局接入。

相关的多会话推进与证据边界见 《Codex 多会话自动推进:角色分流、回执续跑与有界修复》;OpenClaw 的本地记忆与执行权限边界见 《OpenClaw 本地记忆落地与无审批能力边界》。

为什么先做小型基线,而不是直接上向量数据库

现有知识源已经分成任务卡、稳定技术文档和历史证据。真正缺少的是一个有界的发现入口,而不是新的权威数据库。试点因此只索引逐文件白名单、已脱敏的派生文档,并保留 workspace、文档类型、任务 ID、状态、更新时间、权威等级、敏感级别和来源指针。

索引始终是可再生副本,不能覆盖原文;检索结果只作为 data,不能变成指令、权限或生产真值。fetch 只接受索引返回的 doc_id,不开放任意路径读取。跨工作区合成样本和恶意正文 fixture 用来验证隔离与“不执行检索内容”。

这个规模下,先比较合理关键词 rg、SQLite FTS5 trigram 和字符级 TF-IDF,能够回答“更重方案是否真的增加价值”。只有基线暴露稳定的语义缺口,embedding 或 hybrid RAG 才有进入下一轮的理由。

新 holdout 的结果

评测冻结了 12 个新的中文问题,其中 9 个可答、3 个应拒答。它们覆盖精确任务 ID、来源路径、跨文档职责、历史冲突、当前状态、权限边界、无答案、workspace 隔离、恶意排除与改写表达。

后端 Recall@1 Recall@3/5 MRR Top1 无答案准确率 噪声
合理关键词 rg 0.7778 1.0000 0.9444 0.8889 1.0000 3
SQLite trigram 0.8889 1.0000 1.0000 1.0000 1.0000 3
char-TFIDF 0.8889 1.0000 1.0000 1.0000 1.0000 2

这里有一个重要口径:rg 和 trigram 使用预先登记的合理关键词,TF-IDF 接受自然语言问题。它们比较的是各自合理的查询路径,不是“所有后端都接收同一句自然语言”的统一入口实验。因此结果支持“trigram 是轻量而有效的词法候选”,但不能证明它能无适配替代自然语言检索。

char-TFIDF 只少一个噪声返回,没有改善 Recall、MRR、Top1 或拒答准确率。对当前小语料而言,这不足以抵消 sklearn 依赖和冷启动成本。

Search/fetch 试用证明了什么

5 个预登记问题通过 CLI 子进程实际执行 search,再按返回的 doc_id 执行 fetch。其中 4 个完整取回了全部相关文档,1 个跨文档问题只取回两篇相关证据中的一篇;工具错误为 0。

准确说法是 4/5 相关文档完整取回,而不是 4/5 有效引用或 Agent 任务成功。脚本没有让独立 Agent 阅读证据、生成答案并接受人工或模型评分;同一个 worker 还提前知道语料与标签。所以下列指标仍然是 UNKNOWN:

  • Agent 有效引用率与答案正确率;

  • skill 隐式触发率;

  • 检索对任务时间和 token 的因果收益;

  • 独立 session 在真实工作流中的旧知识误用率。

这个区分和异步工作流里的“消息已取回不等于业务处理完成”相同:工具返回只证明数据到达调用方,不能替代下游行为证据。

延迟也不能混成一个数字

进程内 holdout 测到的是后端查询延迟;CLI 试用还包含 Python 和依赖冷启动;已知路径直读则跳过了发现过程。这三种数字回答不同问题。

  • SQLite trigram 的进程内平均查询约 1 毫秒;

  • char-TFIDF 的进程内平均查询约 98 毫秒;

  • 懒加载 sklearn 后,完整 CLI search+fetch 平均仍约 1.39 秒;

  • 已知路径直接读取平均约 0.22 毫秒。

因此不能宣布检索“普遍加速”。当权威路径已知时,直接读取明显更合适;检索的潜在收益只存在于路径未知、名称改写或需要跨来源发现的场景。上下文字节在小样本中有所减少,但没有计费 token 数据,不能把 bytes 当 token。

接入机制通过,但全局采用不通过

隔离候选已经验证:

  • 同阶段相同事件/问题去重,跨阶段允许重新检索;

  • 来源更新或删除后重建索引,不继续把旧副本当当前真值;

  • workspace 和敏感级别过滤;

  • 未晋级 helper 只能提供 provenance,不能直接执行;

  • 恶意正文仍是 data;

  • 无结果与工具故障都显式回退到权威文档或 rg,不能猜测权限。

候选 skill 只能引导模型调用工具,不能保证每个 Codex session 自动触发。若需要确定性调用,必须由 harness 在任务规划、材料性失败对齐或上下文恢复时做一次有界 preflight,并在 phase 内去重。

当前全局结论是 NO-GO,原因包括:没有独立 Agent 行为证据、存在一次跨文档漏取回、重后端增益不足,以及全局共享库会模糊 workspace 的 allowlist、更新写权和来源权威。

后续如果继续,应先在 HomeLab 单工作区安装稳定 search/fetch reader,优先选择 SQLite trigram 或其它轻量词法后端,再用独立 Agent 的预登记真实任务测完整取回、实际引用、答案正确、时间和 token。全局 skill、MCP、后台服务或跨工作区联邦索引都应在这些证据成立后单独授权,而不是由一次小型 CLI PASS 自动推出。

本次评测流程采用“小型代表任务、捕获实际运行与产物、确定性检查、再评分”的思路,参考 OpenAI 的 Skill evals 指南。