为什么 Personal AI Assistant 不应该直接成为 Search Agent:zglab-rag 的外部研究边界
目录
当前状态与问题
本文描述的是 zglab-rag Phase 11 的架构规划,不是已上线能力。当前系统的边界仍是个人公开
知识库:当证据不足时返回 insufficient_evidence,不会自动联网。这个选择与
Agent 长期记忆 中“Memory、Knowledge Base 和当前
Context 不应混为一谈”的原则一致。
引入外部网页后,系统面对的不是单纯的检索能力提升,而是三种新风险:把网上同名人物信息补成个人 事实;把搜索摘要当作足以支持答案的证据;让恶意网页内容、URL 或内网地址影响系统行为。
为什么不是“不知道就搜索”
个人事实与一般外部知识的缺失语义不同。个人资料不足不能通过搜索引擎补全实习公司、电话、论文状态 或获奖记录:同名信息和陈旧页面都可能污染 Persona。另一方面,通用技术问题缺少个人 Notes 时, 外部资料可以是有价值的补充,但仍要遵守同样的 Evidence 与 Citation 要求。
因此不触发研究的情况包括 ProviderFailure、InternalError、Timeout、RateLimit 和 ServiceBusy。 这些是服务故障或容量问题,不是“知识不足”;把它们路由到联网只会掩盖问题并放大不可控性。
Personal-first 决策链
flowchart TD
Q[用户问题] --> P[先检索 Personal Knowledge]
P --> G[Grounded Generation]
G --> S{是否 personal sufficient?}
S -->|是| A[返回个人证据回答]
S -->|否| E{问题是否属于一般外部知识?}
E -->|否:个人事实| I[继续 insufficient evidence]
E -->|是| R[受控 Web Research]
R --> T[Temporary ExternalEvidence]
T --> C[Grounded Generation + Citation Validation]
C --> W[带 Web Citation 的回答]
触发条件复用 GenerationStatus.INSUFFICIENT_EVIDENCE,不引入 LLM Router 或自由规划的
Agent。这个固定 Workflow 比“由模型决定何时上网、搜什么、再搜几轮”更容易给出资格、成本和失败
边界。
Temporary Evidence 的设计
Search 结果不等于证据。规划中的链路是 search → fetch → extraction → normalization →
ExternalEvidence[]:至少保留 evidence_id、title、url、content、retrieved_at 与 origin=web。
只有实际取回并提取的内容才能进入 Context;模型不能凭空新增、修改 URL 或把搜索 snippet 伪装成全文。
flowchart LR
S[Search] --> F[Fetch]
F --> X[正文提取与规范化]
X --> E[ExternalEvidence]
E --> C[临时 Context]
C --> V[CitationValidator]
V --> A[Web 来源回答]
E -.不写入.-> K[(knowledge.db / 长期索引)]
这些 Web Evidence 默认为 request-scoped;后续若实现同一浏览器 session 的复用,也应采用有限 TTL、
最大 session、最大 evidence items 与最大字节数。它们不写入 knowledge.db、长期 Embedding、个人
Profile、Notes 或 Git,也不自动成为个人知识。
安全与失败语义
网页正文被视为不可信 Evidence Data,而不是系统指令。Research 层还需要防 SSRF:禁止 localhost、 RFC1918、link-local 等内网目标,限制重定向、响应大小、内容类型和超时。外部链接经过 allow/deny 策略后再 fetch,不能由模型直接调用任意 URL。
如果 Personal insufficient 且 Research 不可用,正确结果仍是 insufficient_evidence,内部可记录
RESEARCH_PROVIDER_UNAVAILABLE,而不是生成无引用答案。评测也应覆盖:personal sufficient 不联网、
个人事实不自动补全、引用 URL 必须真实、恶意网页只作为证据、SSRF 被拒绝、研究失败不胡编。
非目标与方法论
Phase 11 第一版的非目标包括:自主研究 Agent、浏览器自动化、永久自动 ingestion、Redis、完整 Conversation Memory、无引用浏览和无限递归搜索。它扩展的是 Evidence Source,不是绕过现有 Grounding 的捷径。
核心方法论是:
- Personal Knowledge First:已有个人证据足够时不联网。
- External Research Is Fallback:只有符合资格的证据不足才进入研究。
- Web Evidence Is Temporary:外部资料不沉淀为个人事实。
- Citation Continues to Be Mandatory:网页让答案范围变大,但不让证据标准变低。
真正值得避免的不是 Search 本身,而是把搜索能力误当作回答权限。一个个人 AI Assistant 应该先忠于 自己的资料边界,再谨慎地说明何时引用了外部世界。