
深入解析 SurfSense 主 Agent 的 DeepSeek 供应商提示词推理卫生、工具并行与引用纪律【免费下载链接】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/SurfSenseSurfSense 是一个开源的 NotebookLM 替代品支持通过统一平台、API 或 MCP 服务器检索 Reddit、YouTube、Instagram、TikTok、Indeed、Google 搜索与地图等公开网络实时数据。为了让不同供应商的模型都能以一致的风格驱动主 Agentmain agentSurfSense 在仓库中为每家模型供应商维护了一份独立的提示词片段——provider_hints。本文以 DeepSeek 专用提示词 deepseek.md 为核心结合其背后的组装器、加载器与配套提示词逐条拆解这份提示词如何约束模型行为并剖析它在 SurfSense 多 Agent 系统中的真实落地方式。一、导读这份提示词文件解决什么问题在多 Agent 系统中同一个主 Agent可能被配置运行在不同供应商的模型上DeepSeek、Kimi、Anthropic Claude、Google Gemini、OpenAI 系列等。不同模型在推理风格、工具调用能力、输出偏好上差异巨大——例如 DeepSeek 的推理模型R1 系列会在内部生成思考链而经典对话模型则不会。如果不做区分一套通用的系统提示词很难让每个模型都发挥出最佳行为。SurfSense 的解法是为每家供应商准备一份轻量的provider_hints提示词在系统提示词组装时按当前运行的模型动态注入。deepseek.md就是其中面向 DeepSeek 系列模型的专属配置全文仅 18 行却覆盖了四个关键行为域推理卫生、输出风格、引用纪律、工具调用。阅读完本文你将掌握SurfSense 主 Agent 系统提示词的分层组装机制以及供应商提示词在其中的插入位置DeepSeek 提示词中每一条规则的意图以及它们在多 Agent 检索场景中的实际作用引用开关citations on/off如何与供应商提示词协同避免模型误用[citation:…]标记如何扩展新的供应商提示词让主 Agent 适配更多模型。二、供应商提示词在系统提示词中的位置与加载机制2.1 分层的提示词架构主 Agent 的系统提示词并非一个巨型文件而是由若干片段按固定顺序拼装而成。组装逻辑集中在 compose.py文件头部的注释给出了完整的默认组装顺序agent_identity [users custom_system_instructions, if any] core_behavior # 默认主体 knowledge_base_first # 默认主体 dynamic_context # 总是注入 routing # 默认主体 specialists # 总是注入动态专家名单 tools # 总是注入纵向切片 memory_protocol # 默认主体 citations # 总是注入 output_format # 总是注入 refusal_and_limits # 总是注入 reminder # 总是注入对应地prompts/ 目录下按类别组织了一组 Markdown 片段core_behavior.md、kb_first.md、routing.md、output_format.md、refusal_and_limits.md、reminder.md等。其中citations/on.md与citations/off.md根据引用开关二选一注入而providers/目录则存放按模型供应商区分的提示词。2.2 提示词加载器片段加载由 load_md.py 完成。它通过 Python 标准库的importlib.resources定位prompts/包内的资源文件读取后去掉末尾换行返回_PROMPTS_PACKAGE app.agents.chat.multi_agent_chat.main_agent.system_prompt.prompts def read_prompt_md(filename: str) - str: ref resources.files(_PROMPTS_PACKAGE).joinpath(filename) if not ref.is_file(): return text ref.read_text(encodingutf-8) return text[:-1] if text.endswith(\n) else text值得注意的两点设计文件缺失不报错read_prompt_md在目标文件不存在时返回空字符串随后compose.py中的_wrap会把它过滤掉return .join(p for p in parts if p)。这意味着某类提示词片段缺失时系统依然可以正常工作具备容错性。custom_system_instructions是叠加而非替换compose.py的 docstring 明确说明用户自定义指令additive, not a replacement它插在身份区段与默认主体之间因此 KB 优先、路由、引用、输出格式、拒绝规则等平台安全网始终生效。从代码结构看providers/目录与compose.py中展示的组装顺序提示供应商提示词是在默认主体core behavior、kb_first 等基础上按需追加的行为微调层身份、工具、引用、输出格式等平台级约束对所有供应商一视同仁。三、DeepSeek 供应商提示词逐条解读deepseek.md 的完整内容以provider_hints标签包裹正文分四个部分3.1 推理卫生Reasoning hygieneR1-awareKeep internal scratch separate from the user-facing answer; dont leak chain-of-thought into tool arguments.这条规则专门针对 DeepSeek 的推理模型R1 系列设计。R1-aware 意味着提示词作者意识到推理模型会在内部生成思考过程如果不加约束模型可能把思考链内容泄露到工具调用的参数里例如把内部推理写进搜索 query或把 scratch 内容当作最终回答的一部分。在 SurfSense 的多 Agent 检索场景中主 Agent 需要把子任务分发给 knowledge_base、research 等专家 Agentspecialists区段动态生成专家名单并调用 web_search、scraper 等工具。如果思考链污染了工具参数会直接影响检索质量和结果可解释性。因此这条规则要求内部草稿与面向用户的答案严格分离工具参数只放真正需要的内容。值得注意的是model_list_fallback.json 中收录了deepseek/deepseek-r1、deepseek/deepseek-v3.1等多款 DeepSeek 模型其中 R1 系列被标注为 671B 参数、37B 激活的推理模型。这印证了deepseek.md针对推理模型的约束并非无的放矢——仓库确实可能把 R1 这类推理模型接入主 Agent。3.2 输出风格直接、精炼、不谄媚Concise; lead with the answer or the next action; avoid sycophantic openers.这条约束与 openai_reasoning.md 中Dont begin with conversational openers的意图一致在检索型 Agent 场景中用户要的是答案本身而不是这是一个很好的问题之类的寒暄。要求以答案或下一步动作开头是为了让回答更高效、更适合后续被引用或呈现。3.3 引用纪律跟随引用块绝不越界When citations areenabledand facts come from chunk-tagged context, follow the citation block above. When citations aredisabled, do not use[citation:…].这是deepseek.md中最需要与平台提示词协同的规则。citations区段组装顺序中总是注入决定引用格式的最终形态开启引用时注入 citations/on.md要求用单一 token 形式的方括号标签[n]引用多个来源堆叠成[1][2]严禁改写编号、自行发明标签或使用[citation:...]标记也禁止输出 References 章节。关闭引用时注入 citations/off.md明确禁止任何[n]标签和[citation:…]标记即使工具输出retrieved_context、web_results或工具描述中出现了引用格式示例也要忽略要求以纯文本回答不得向用户暴露原始 chunk id、文档 id 或内部 id。供应商提示词在这里扮演的角色是提醒层它不定义引用格式那是 citations 区段的职责而是确保模型知道当前引用开关状态从而在工具输出自带[citation:…]示例时不会机械模仿。组装顺序中citations总是注入且位于供应商提示词之后从结构上看供应商提示词是对平台引用块的再确认与强化。3.4 工具调用并行化与防幻觉Parallelise independent calls. For SurfSense docs/product questions, point the user to https://www.surfsense.com/docs. Dont invent paths, chunk ids, or URLs — only values from tools or the user.最后三条构成工具调用的行为约束并行调用多 Agent 场景下主 Agent 可能同时需要多个数据源Reddit、YouTube、Google 搜索等。提示词要求对相互独立的调用并行发起这与 Kimi 提示词 kimi.md 中Output multiple non-interfering tool calls in a SINGLE response的思路一脉相承——并行是检索效率的关键。产品问题引导官方文档对 SurfSense 自身文档/产品类问题指向官方文档站点。这避免了模型用工具猜测或编造产品信息。防幻觉禁止编造路径、chunk id 或 URL只允许使用来自工具或用户的真实值。这条与引用纪律形成组合拳——citations/on.md要求Only label claims the sources support两者共同保证检索结果可溯源、可验证。四、与其他供应商提示词的横向对比providers/目录下共存放 9 份提示词anthropic.md、deepseek.md、default.md、google.md、grok.md、kimi.md、openai_classic.md、openai_codex.md、openai_reasoning.md。对比可见供应商提示词的差异化设计思路提示词关注点特色约束deepseek.md推理卫生、输出风格、引用、工具并行R1-aware 思考链隔离引用开关跟随防幻觉kimi.md行动偏好、工具并行、语言、纪律以工具行动为默认task工具委派子任务同语言回复openai_reasoning.md输出风格、渠道、工具并行、自主性禁寒暄开头、列表扁平化、commentary/final 渠道、不征求许可openai_codex.md代码风格面向 Codex 的工程化约束从这些差异可以推断SurfSense 的供应商提示词遵循只声明该模型特有/敏感的行为约束通用行为交给平台区段的原则。例如工具并行是所有推理型/代理型模型都需要的但各供应商提示词会以各自的措辞强调引用格式、输出格式、拒绝规则等则统一在平台层避免重复维护。五、从源码结构看扩展方式如果你想把主 Agent 适配一个新的模型供应商从现有结构可以推断出清晰的扩展路径在 providers/ 目录下新建vendor.md以provider_hints标签包裹声明模型身份与专属行为约束参考deepseek.md的结构先声明你运行在哪个模型上模型身份再按推理卫生/输出风格/引用/工具调用等维度列出约束保持平台区段identity、tools、citations、output_format、refusal_and_limits、reminder不变供应商提示词只做叠加微调若供应商模型对推理链或输出格式有特殊偏好如推理模型的思考链隔离、代码模型的工程化风格在该文件中显式声明。需要说明的是从当前compose.py的公开组装逻辑看供应商提示词片段的具体注入位置与触发条件例如按model_name匹配的精确规则未在该文件内直接体现以上为基于目录结构与代码风格的推断实际接入时建议查阅主 Agent 的运行时调用链。六、总结deepseek.md虽然只有 18 行却是 SurfSense 多 Agent 系统中供应商适配层的典型样本。它用最精简的规则解决了四类实际问题推理模型思考链隔离R1-aware、高效输出风格、与平台引用开关严格协同的引用纪律、以及并行工具调用与防幻觉。它与 compose.py 的分层组装机制、load_md.py 的容错加载、以及citations/on.md与citations/off.md的引用开关共同构成了一个可扩展的提示词工程架构——让同一个主 Agent 在 DeepSeek、Kimi、OpenAI、Anthropic、Google 等不同模型上都能保持一致的平台行为同时发挥各自模型的特性。对于希望理解如何在多模型 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考