PMFlow/docs/superpowers/specs/2026-04-14-query-source-pol...

48 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Query Source Policy Design
## Goal
在不改动 `plan mode` 主链的前提下,重构 `query.answer` 的来源判定,让系统先决定“查内部还是查外部”,再进入检索与回答生成。
## Confirmed Baseline
- `plan mode`、requirement workspace、draft confirm 不动。
- 只改 `query.answer` 链路。
- `source_policy` 成为一等公民,最少支持:
- `internal`
- `external`
- `uncertain`
- `uncertain` 在 v1 按用户偏好默认 `external` 优先,不做 internal/external 同轮混搜。
- 现有分散短路逻辑只清理“来源判定类短路”,保留 workflow 锁定类短路。
- embedding 不再允许静默回退伪向量;优先使用真实 embedding 引擎,本地可用时允许走本地 embedding。
## Scope
### In Scope
- `query.answer` 的来源判定、RAG 语义收口、检索域限制、回答主链短路收口。
- embedding 真实化。
- 相关测试与运行时文档同步。
### Out of Scope
- `pmflow_semantic_context_decision` 对 `query`/`plan` 的上游分流。
- requirement-plan / draft confirm 主链行为。
- 新拆仓、新服务化。
## Implementation Direction
1. 在 `query.answer` 网关前移 `source_policy`,并带审计字段进入 RAG。
2. 用单次 query 语义判定同时输出 `query_type / source_policy / retrieval_domains / subject_focus / scope_hint`。
3. `answer scene` 不再重复决定来源,只负责回答风格、deep intent 与 snapshot focus。
4. `source_policy=internal` 时只允许内部检索域。
5. `source_policy=external` 时只允许外部检索域。
6. `source_policy=uncertain` 时 v1 直接按 external-first 收敛成外部域,不做混搜。
7. embedding 改为真实 provider 链路:优先显式 embedding provider,本地可用时允许走 Ollama embedding;否则显式失败,不再回伪向量。
## Risks
- 需要避开当前工作区里已经存在的 requirement-plan 修正,避免误伤。
- 若 internal/external 规则表定义过窄,可能造成 `uncertain` 过多。
- embedding 从伪向量改成显式失败后,可能暴露历史依赖伪向量“凑合可用”的路径。