feat(knowledge): Executor 行动记忆 + 归一化质量等级解决 ISS-002 重复检索

- RetrievedDocTracker 升级为域级+文档级双层记录(Map<sessionId, Map<domain, Set<filePath>>>)
- LookupKnowledgeTool 新增 Min-Max 归一化层(BGE-M3 L2 距离→[0,1] similarity)
- 三等级 relevanceLevel:PRECISE / HIGHLY_RELEVANT / REFERENCE + completenessHint 兜底信号
- LookupResult 新增 relevanceLevel、completenessHint、retrievedDomainsThisSession
- Executor prompt 重写:4 条检索约束 + 合法出口不查全不追责,重复检索才惩罚
- 入库可观测性:V010 迁移 + retrieval_details JSON 扩展
- 归档 executor-action-memory-relevance change
This commit is contained in:
zhuyongxin
2026-07-01 18:24:41 +08:00
parent e4f37cb9e6
commit e438df4355
21 changed files with 1076 additions and 88 deletions
@@ -0,0 +1,35 @@
# Brief: executor-action-memory-relevance
## 背景
ISS-002:Executor 在单次会话中调用 `lookup_knowledge` 20+ 次,大部分是同域换变体的冗余调用。前序 change `session-dedup-knowledge-map` 解决了文档级重复召回(ISS-001),但未解决 Executor 重复调用问题。
## 目标
- Executor 获得行动记忆(知道自己本次会话已检索了哪些域)
- 检索结果提供归一化质量等级(PRECISE/HIGHLY_RELEVANT/REFERENCE)+ 兜底信号
- Executor prompt 提供明确的检索约束和"放弃检索"的合法出口
- 原始分数入库保留可观测性,但不暴露给 LLM
## 范围
- `RetrievedDocTracker`:域级 + 文档级双层记录
- `LookupKnowledgeTool`:归一化层 + 行动记忆注入
- `LookupResult`:新增 relevanceLevel / completenessHint / retrievedDomainsThisSession
- `chat-executor-prompt.md`:检索约束重写
- `ToolInvocation` + V010:入库可观测性
## 非目标
- 不给 Executor 注入 knowledge map(保持 Agent 边界)
- 不修改 Planner prompt 或 Planner 逻辑
- 不修改 PrimaryResult / SupplementResult 的字段(不暴露原始分数)
- Phase 2 域级硬限制暂不实施
## 分档
standard
## 关联 OpenSpec change
openspec/changes/executor-action-memory-relevance