ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SurfSense 知识库优先(KB-First)落地机制:主 Agent 如何用实时数据接地事实答案

SurfSense 知识库优先(KB-First)落地机制:主 Agent 如何用实时数据接地事实答案 SurfSense 知识库优先KB-First落地机制主 Agent 如何用实时数据接地事实答案【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense导读本文深入剖析 SurfSense 多智能体聊天系统中主 Agent 的「知识库优先KB-First」接地grounding策略——这是一段内嵌在主 Agent 系统提示词中的核心行为约束位于 kb_first.md。它规定了主 Agent 面对事实性问题时「先查实时工具、再问知识库、最后才允许动用训练知识」的优先级秩序直接决定了 SurfSense 给出的竞品分析、市场结论、用户文件问答等内容是「基于本轮真实检索证据」而非「模型过时记忆」。读完本文你将理解这段提示词在系统提示词组装管线中的位置、四层数据源的分工逻辑、知识库检索与第三方应用MCP检索的边界以及「兜底回答通用知识」的授权流程与豁免清单。一、KB-First 在系统提示词组装管线中的位置kb_first.md不是一份孤立文档而是主 Agent 系统提示词的「默认主体default body」四段之一。其组装逻辑见 compose.pyagent_identity [用户自定义 custom_system_instructions如有] core_behavior # 默认主体 knowledge_base_first # 默认主体 ← 本文主角 dynamic_context # 始终注入 routing # 默认主体 specialists # 动态名册始终注入 tools # 工具切面始终注入 memory_protocol # 默认主体 citations # 始终注入 output_format # 始终注入 refusal_and_limits # 始终注入 reminder # 始终注入关键事实KB-First 默认总是生效只要use_default_system_instructionsTrue默认值kb_first.md就会被 load_md.py 从app.agents.chat.multi_agent_chat.main_agent.system_prompt.prompts包中按文件名加载并注入。只有在显式传入use_default_system_instructionsFalse时四段默认主体core_behavior、kb_first、routing、memory_protocol才会被整体跳过但动态上下文、专家名册、工具、引用、输出格式、拒答规则等「始终注入」段不受影响。用户自定义指令是叠加而非替换custom_system_instructions被插在身份段与默认主体之间因此平台级安全网KB-First、路由、引用、输出格式、拒答规则永远位于其后无法被用户指令绕开。二、四层事实数据源回答「本轮收到的证据」而非「记忆」kb_first.md的核心论断是「关于竞争对手、市场、排名、评价、受众情绪的任何问题都必须依据本轮task(...)返回的结果作答绝不来自训练数据——因为模型对公司、价格、排名的通用知识天生是过时的stale by definition。」这构成一条证据优先级链数据源获取方式适用场景文档中的定位实时平台数据task(reddit, ...)、task(youtube, ...)、task(instagram, ...)、task(tiktok, ...)、task(amazon, ...)、task(walmart, ...)、task(google_maps, ...)、task(google_search, ...)、task(web_crawler, ...)竞品、市场、排名、评论、受众情绪「live platform data via the market specialists」用户知识库task(knowledge_base, ...)用户上传的文件、文档、笔记PRIMARY 来源主 Agent 唯一读取用户工作区的通道注入的工作区上下文dynamic_context段线程可见的工作区树只列出存在什么不含内容「injected workspace context (seedynamic_context)」已连接第三方应用task(mcp_discovery, ...)Slack、Jira、Notion、Gmail、Calendar 等实时数据「live data that is NOT in the knowledge base」专家返回的实质摘要已调用的task专家返回任何已检索内容「substantive summaries returned by a task specialist」这套数据源清单与subagents/builtins/目录下实际注册的专家一一对应reddit、youtube、instagram、tiktok、amazon、walmart、google_maps、google_search、web_crawler、knowledge_base、mcp_discovery等均可在 surfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/ 中找到各自的agent.py、description.md与system_prompt.md由 specialists.py 渲染为specialists动态名册。三、知识库优先用户的文件与笔记先问knowledge_base专家文档用大写强调了针对用户私有文件的第一原则「关于用户自己的文件和笔记的问题必须先派发task(knowledge_base, ...)而不是根据工作区树或记忆作答。」其原因是workspace_tree只列出「存在什么」不包含任何实际内容主 Agent 自身没有任何文件系统工具routing.md中明确规定「You have NO filesystem tools」所有对用户工作区的读写搜索都必须经由task(knowledge_base, ...)完成。knowledge_base专家的分工见 knowledge_base/description.md是用户想创建、读取、编辑、搜索、整理或删除文档/文件夹时应主动调用它。文档还揭示了其底层检索能力混合语义/关键词检索hybrid semantic/keyword search对应仓库中的 shared/retrieval/hybrid_search.py在用户个人文件与笔记上同时执行语义检索与关键词匹配全文阅读full-document reads专家可读取完整文档内容带引用的接地摘要返回「grounded summary with[n]citation labels」主 Agent 需把这些[n]引用标签带进最终答案与shared/citations/模块的引用标记机制衔接。由于知识库检索通过子 Agent 隔离执行主 Agent 必须把完整任务说明放进task的description「The specialist cannot see this thread」例如routing.md中给出的示范task(knowledge_base, Locate the Q2 roadmap document under /documents and summarise its milestones. Use glob or grep if the path isnt obvious from the workspace tree.)。四、第三方应用走mcp_discovery不在知识库索引内的实时数据文档明确划出了一条数据边界凡是存在于已连接第三方应用Slack、Jira、Notion、Gmail、Calendar 等中的数据属于「不在知识库中」的实时数据必须用task(mcp_discovery, ...)而非知识库检索。这是因为这些内容从未被索引进 KB。mcp_discovery专家拥有日历、Gmail 等子工具见 subagents/builtins/mcp_discovery/tools/并可获取已连接账户列表。routing.md的示例可作对照user: What did Maya say about the Q2 roadmap in Slack last week? → task(mcp_discovery, In Slack, find messages from Maya about the Q2 roadmap from the past week. Return the most relevant quotes with channel and timestamp.)五、通用知识兜底协议三步授权流程kb_first.md对「何时能动用模型固有知识」给出了严格限制除非在明确说明「在以上数据源中找不到足够信息」之后、用户明确授权否则不得用通用知识回答事实性或信息性问题。规定的流程精确为三步声明告诉用户「我在你的工作区或工具输出中没有找到足够的信息」征询询问Would you like me to answer from my general knowledge instead?是否希望我改用通用知识回答执行只有在获得明确肯定a clear yes之后才允许用通用知识作答。这段规则的意义在于把「模型知道什么」与「本轮实际检索到什么」严格区分防止主 Agent 用训练数据中的过时价格、过期排名或臆测填充事实缺口从而保证 SurfSense 面向市场研究场景Reddit/YouTube/Instagram/TikTok/Indeed/Google 搜索/地图等实时数据输出的可信度。六、豁免清单哪些场景不受 KB-First 约束文档明确列出了不适用这条规则的场景防止规则过度僵化损害对话体验日常闲聊casual conversation关于 SurfSense 自身的元问题meta-questions如 what can you do?对聊天中已有内容的格式化或分析明确的改写/编辑指令轻量级网络研究lightweight web research。另外针对「如何使用 SurfSense」这类产品文档问题规则要求直接引导用户访问 https://www.surfsense.com/docsrouting.md中补充说明没有文档搜索工具直接给出链接。七、与相邻提示词段的协同路由与工具契约KB-First 并非孤立工作它与系统提示词中其他段落形成闭环routingrouting.md定义了「直接工具」与「task专家」两条执行通道的取舍规则——受众情绪必须去平台专家取Reddit 社区讨论、YouTube 视频与评论区、TikTok 短内容趋势、Google Maps 实体店评论、Amazon/Walmart 商品评分搜索只是「发现者」而非「来源」页面级内容必须交由web_crawler抓取后再作答。这些规则是 KB-First「用实时平台数据接地」的执行细则。tools/task/description.mddescription.md定义了task工具的调用契约——单模式参数subagent_typedescription完整任务提示批处理模式tasks数组3 个及以上独立专家调用时并发扇出带[task index]前缀的聚合 ToolMessage以及verification证据校验规则子 Agent 的自然语言回复只是「自报」变更类操作必须以state[receipts]中的 Receiptstatussuccess/failed/pending为准高风险变更还可再用task(web_crawler, ...)抓取verifiable_url做外部确认。这保证了 KB-First 接地链条的最后一环引用与证据可被验证。dynamic_context工作区树等注入上下文由 dynamic_context.py 按线程可见性私有/团队选择private.md或team.md变体注入——它只提供「有什么」的索引具体内容仍由 KB-First 规则强制走task(knowledge_base, ...)检索。八、落地要点小结在实际使用 SurfSense 多智能体聊天时KB-First 策略表现为以下可观察行为问「我的文件/笔记」主 Agent 必然先调task(knowledge_base, ...)做混合检索与全文阅读返回带[n]引用标签的接地摘要绝不直接凭工作区树或记忆作答问「竞品/市场/评价」主 Agent 必然调用对应平台专家Reddit、YouTube、Amazon 等获取本轮实时数据并注明来源而非直接给出训练知识里的排名或价格问「Slack/Jira/Gmail 里的内容」走task(mcp_discovery, ...)因为这类数据不在知识库索引内什么都查不到先声明「未找到足够信息」征询用户是否允许用通用知识获明确同意后才作答闲聊、SurfSense 自身功能、改写已有内容、轻量调研直接回答不受约束。这套「实时数据 知识库 工作区上下文 已连接应用 通用知识」的接地优先级配合compose.py的「默认主体 始终注入」组装机制与routing.md/task工具契约构成了 SurfSense 作为开源 NotebookLM 替代品在事实可信度上的核心工程保障。开发者若想自定义或裁剪该行为可在 prompts/ 目录下对照kb_first.md、core_behavior.md、routing.md等片段并结合compose.py的use_default_system_instructions与custom_system_instructions参数理解其生效边界。【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表