# 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 从伪向量改成显式失败后,可能暴露历史依赖伪向量“凑合可用”的路径。