[{"data":1,"prerenderedAt":560},["ShallowReactive",2],{"content:\u002F2026\u002Fdeep-research-agent":3,"surround:\u002F2026\u002Fdeep-research-agent":549},{"id":4,"title":5,"body":6,"categories":506,"date":508,"description":509,"draft":510,"extension":272,"image":511,"meta":512,"navigation":514,"path":515,"permalink":511,"published":511,"readingTime":516,"recommend":511,"references":521,"seo":537,"sitemap":538,"stem":539,"tags":540,"type":547,"updated":508,"__hash__":548},"content\u002Fposts\u002F2026\u002Fdeep-research-agent.md","Deep Research Agent：让 AI 带着小本本去查资料",{"type":7,"value":8,"toc":491},"minimark",[9,13,16,19,27,31,34,37,115,118,136,139,142,175,178,182,185,207,210,223,226,230,233,236,246,253,260,263,266,276,279,282,285,304,307,311,314,317,389,414,417,420,430,437,440,443,446,454,457,461,464,467,475,478,482,485,488],[10,11,12],"p",{},"有些问题不适合让 AI “秒答”。",[10,14,15],{},"比如“给我比较几种向量数据库”“分析某个行业的机会”“帮我查一下这个开源项目能不能用于生产”。这类问题像一团毛线球：一拽就是资料、定义、时间线、价格、限制、反例、过期信息、营销话术。普通聊天模型如果张口就答，常常答得很顺，顺到像刚从 PPT 里滑出来。",[10,17,18],{},"Deep Research Agent 做的是另一种活。它不急着回答，而是先背上小书包，拿出小本本，开始查资料：先拆问题，再找来源，再对比证据，最后把“我为什么这么判断”写清楚。很像一只戴眼镜的小仓鼠在资料堆里翻来翻去：吱吱，找到一个来源；吱吱，这个来源有点可疑；吱吱，先别下结论。",[20,21,24],"alert",{"title":22,"type":23},"一句话理解","info",[10,25,26],{},"Deep Research Agent 是研究型 agent：它会把开放问题拆成子问题，循环搜索和阅读材料，保存证据，交叉验证，最后生成带来源、带不确定性说明的报告。重点不是“搜到了什么”，而是“证据链怎么长出来”。",[28,29,30],"h2",{"id":30},"它和普通搜索差在哪",[10,32,33],{},"搜索引擎像图书馆门口的索引卡。你问一句，它递给你十扇门。",[10,35,36],{},"Deep Research Agent 更像一个研究助理。它会进门、翻目录、做笔记、发现不对劲再换一个门。最后它不应该只说“我找到了这些网页”，而要告诉你：哪些证据可靠，哪些互相打架，哪些结论只能暂时相信。",[38,39,40,56],"table",{},[41,42,43],"thead",{},[44,45,46,50,53],"tr",{},[47,48,49],"th",{},"任务",[47,51,52],{},"普通搜索",[47,54,55],{},"Deep Research Agent",[57,58,59,71,82,93,104],"tbody",{},[44,60,61,65,68],{},[62,63,64],"td",{},"找资料",[62,66,67],{},"返回链接列表",[62,69,70],{},"主动阅读、摘录、去重",[44,72,73,76,79],{},[62,74,75],{},"拆问题",[62,77,78],{},"靠用户自己拆",[62,80,81],{},"先写研究计划，再分头查",[44,83,84,87,90],{},[62,85,86],{},"处理冲突",[62,88,89],{},"用户自己判断",[62,91,92],{},"标出冲突来源和可能原因",[44,94,95,98,101],{},[62,96,97],{},"写结论",[62,99,100],{},"用户自己汇总",[62,102,103],{},"给出结论、证据和置信度",[44,105,106,109,112],{},[62,107,108],{},"可复查",[62,110,111],{},"浏览器历史里慢慢找",[62,113,114],{},"报告里保留引用和中间笔记",[10,116,117],{},"这听起来像“搜索 + 总结”的豪华版，但真正的差别在循环：它会带着问题反复回来，不是扫一眼网页就交卷。",[119,120,121,124,127,130,133],"chat",{},[10,122,123],{},"{:研究现场}",[10,125,126],{},"{用户}\n帮我看看这个技术方向值不值得投时间。",[10,128,129],{},"{.小研究员}\n收到，我先拆成：市场需求、技术成熟度、替代方案、学习成本、未来风险。先不急着夸它，喵。",[10,131,132],{},"{用户}\n喵？",[10,134,135],{},"{.小研究员}\n语气可以可爱，引用必须严肃。",[28,137,138],{"id":138},"一只靠谱研究员的工作流",[10,140,141],{},"Deep Research Agent 的核心不是“联网能力”，而是一条研究流水线。它大概会这样转：",[143,144,145,148,151,154,157,160,163,166,169,172],"timeline",{},[10,146,147],{},"{1. 问题澄清}",[10,149,150],{},"把用户的一句话改写成可以研究的问题。如果目标太大，它要先缩范围，不然会查成一锅粥。",[10,152,153],{},"{2. 制定计划}",[10,155,156],{},"列出子问题、关键词、可能来源、验收标准。计划不是装饰，是防止迷路的地图。",[10,158,159],{},"{3. 搜索与阅读}",[10,161,162],{},"搜索只是入口。真正花时间的是打开材料、抽取事实、记录出处、判断时效。",[10,164,165],{},"{4. 交叉验证}",[10,167,168],{},"同一个结论至少找两个角度看。官方文档、论文、社区实践、代码仓库、价格页，说话方式都不一样。",[10,170,171],{},"{5. 综合报告}",[10,173,174],{},"把证据揉成结构化结论，标出不确定性，给出下一步建议。",[10,176,177],{},"这里有个很反直觉的点：一个好的研究 agent 不应该显得“特别自信”。它应该在该怂的时候怂一下。资料不足就说不足，来源冲突就说冲突，过期信息就标日期。可爱一点说就是：尾巴可以翘，证据不能飘。",[28,179,181],{"id":180},"架构小队出动而不是一个模型硬扛","架构：小队出动，而不是一个模型硬扛",[10,183,184],{},"如果把 Deep Research Agent 画成一间小小研究所，我会这样分工：",[186,187,188],"card-list",{},[189,190,191,195,198,201,204],"ul",{},[192,193,194],"li",{},"规划员：把大问题切成小问题，决定先查什么、后查什么。",[192,196,197],{},"搜索员：负责找入口，不迷信第一页结果。",[192,199,200],{},"阅读员：打开网页、论文、文档，抽取事实和原文片段。",[192,202,203],{},"质检员：检查来源是否可靠、是否过期、是否互相矛盾。",[192,205,206],{},"写作者：把材料整理成报告，让人能读下去。",[10,208,209],{},"它们可以是同一个模型在不同 prompt 下扮演，也可以是多个子 agent 分工。关键不是名字好听，而是职责要清楚。否则一个模型一边搜索、一边判断、一边写结论，很容易把“刚看到的东西”当成“最重要的东西”。",[211,212,219],"pre",{"className":213,"code":215,"filename":216,"language":217,"meta":218},[214],"language-text","User question\n  ↓\nResearch planner\n  ↓\n┌──────────────┬──────────────┬──────────────┐\n│ Web searcher │ Doc reader   │ Paper reader │\n└──────────────┴──────────────┴──────────────┘\n  ↓\nEvidence store \u002F notes\n  ↓\nVerifier \u002F contradiction checker\n  ↓\nReport writer\n  ↓\nFinal answer with citations\n","research-agent-architecture.txt","text","icon=tabler:microscope",[220,221,215],"code",{"__ignoreMap":222},"",[10,224,225],{},"这也是为什么我不太喜欢“把搜索工具塞给模型就叫 deep research”。那只是给小仓鼠一个放大镜。真正的研究 agent 还要有书架、便签、垃圾桶、复核流程，以及一个能把它从资料堆里捞出来的停止条件。",[28,227,229],{"id":228},"证据仓库别让上下文窗口变成垃圾桶","证据仓库：别让上下文窗口变成垃圾桶",[10,231,232],{},"研究任务最容易爆上下文。网页全文、PDF 摘要、搜索结果、表格、聊天记录，全塞进模型窗口，最后模型像抱着十床被子过独木桥，走两步就开始晃。",[10,234,235],{},"更稳的做法是建一个证据仓库：",[211,237,244],{"className":238,"code":240,"filename":241,"language":242,"meta":243},[239],"language-yaml","id: source-007\ntitle: LangGraph overview\nurl: https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Flanggraph\u002Foverview\naccessed_at: 2026-07-08\nclaims:\n  - LangGraph 用图结构组织 agent 工作流。\n  - 它支持持久执行、human-in-the-loop 和长期运行任务。\nquotes:\n  - \"...\"\nreliability: official-doc\nused_for:\n  - agent runtime architecture\n","evidence-note.yaml","yaml","icon=tabler:notes",[220,245,240],{"__ignoreMap":222},[10,247,248,249,252],{},"然后模型每一轮只读取需要的片段。报告里引用 ",[220,250,251],{"code":251},"source-007","，质检时也能回去查。这个动作很笨，但笨得可靠。很多工程最后拼的不是“模型更聪明”，而是“资料别乱飞”。",[20,254,257],{"title":255,"type":256},"不要把引用当装饰品","warning",[10,258,259],{},"引用不是给文章贴金的小贴纸。它应该能支撑具体句子。比如“某工具支持 checkpoint”后面要能点回官方文档；“某研究说效果提升”要能点回论文或实验说明。否则引用再多，也只是漂亮的鱼鳞片。",[28,261,262],{"id":262},"研究计划应该长什么样",[10,264,265],{},"一个研究 agent 开始干活前，最好先写一份计划。不是为了仪式感，而是为了让后面的偏航能被看见。",[211,267,274],{"className":268,"code":270,"filename":271,"language":272,"meta":273},[269],"language-md","# 研究问题\nDeep Research Agent 适合替代哪些人工资料整理工作？\n\n# 子问题\n1. 它比普通搜索多了哪些环节？\n2. 哪些任务适合，哪些任务不适合？\n3. 需要哪些工具和数据结构？\n4. 风险在哪里：幻觉、来源质量、时效、版权、隐私？\n\n# 验收标准\n- 至少覆盖官方文档、论文\u002F技术报告、实际产品说明三类来源。\n- 每个关键结论都能追到来源。\n- 明确写出不能确定的部分。\n- 给出可执行的落地建议，而不是泛泛而谈。\n","research-plan.md","md","icon=tabler:clipboard-text wrap",[220,275,270],{"__ignoreMap":222},[10,277,278],{},"这个计划最好可以被人改。人类说“我只关心开源实现，不关心商业产品”，agent 就应该把搜索范围收窄。别让它像热心但没听题的同学，一路查到宇宙尽头。",[28,280,281],{"id":281},"它适合做什么",[10,283,284],{},"Deep Research Agent 最适合那些“答案不是一句话，但也不是写博士论文”的任务。",[186,286,287],{},[189,288,289,292,295,298,301],{},[192,290,291],{},"技术选型：比较框架、数据库、模型服务、监控系统。",[192,293,294],{},"竞品调研：梳理产品能力、价格、限制和用户反馈。",[192,296,297],{},"论文初筛：从一堆论文里找主线、方法、实验和争议点。",[192,299,300],{},"开源项目尽调：看维护活跃度、issue 风险、许可证、生态依赖。",[192,302,303],{},"故障背景调查：查相似问题、版本变更、已知 bug、社区 workaround。",[10,305,306],{},"不适合的也要说。它不适合替你做没有来源的主观判断，也不适合查需要强权限的私有信息，更不适合在医疗、法律、投资这类场景里直接替人拍板。它可以整理材料，但最后按下按钮的人应该还是人。",[28,308,310],{"id":309},"风险小研究员也会乱贴便利贴","风险：小研究员也会乱贴便利贴",[10,312,313],{},"Deep Research Agent 的错误通常不是“完全没查”，而是“查了但查歪了”。这更麻烦，因为它看起来很努力。",[10,315,316],{},"常见翻车点有几个：",[38,318,319,332],{},[41,320,321],{},[44,322,323,326,329],{},[47,324,325],{},"翻车点",[47,327,328],{},"表现",[47,330,331],{},"该怎么防",[57,333,334,345,356,367,378],{},[44,335,336,339,342],{},[62,337,338],{},"搜索偏差",[62,340,341],{},"只看排名靠前或 SEO 很强的内容",[62,343,344],{},"多查询词、多来源类型、保留反例",[44,346,347,350,353],{},[62,348,349],{},"来源过期",[62,351,352],{},"拿旧价格、旧 API、旧 benchmark 当现在",[62,354,355],{},"每个来源记录访问日期和发布时间",[44,357,358,361,364],{},[62,359,360],{},"引用漂移",[62,362,363],{},"引用存在，但不支撑那句话",[62,365,366],{},"把 claim 和 source 绑定，逐条检查",[44,368,369,372,375],{},[62,370,371],{},"过度综合",[62,373,374],{},"把几个相似观点揉成一个更强结论",[62,376,377],{},"报告里保留“哪些来源真的这么说”",[44,379,380,383,386],{},[62,381,382],{},"假装确定",[62,384,385],{},"资料不足还给出强判断",[62,387,388],{},"输出置信度和缺口",[390,391,393,396,411],"folding",{"title":392},"一个可爱的质检咒语",[10,394,395],{},"写最终报告前，让 agent 对每个关键结论念一遍：",[397,398,399,402,405,408],"ol",{},[192,400,401],{},"这句话的来源是谁？",[192,403,404],{},"来源有没有可能过期？",[192,406,407],{},"有没有相反证据？",[192,409,410],{},"如果用户据此行动，最可能踩什么坑？",[10,412,413],{},"念完还站得住，再写进正文。站不住就把它放进“不确定”小篮子里。ฅ^•ﻌ•^ฅ",[28,415,416],{"id":416},"一个最小实现长什么样",[10,418,419],{},"不需要一上来就造复杂平台。最小可用版本可以很朴素：搜索工具、网页读取器、笔记文件、引用检查器、报告模板。",[211,421,428],{"className":422,"code":424,"filename":425,"language":426,"meta":427},[423],"language-python","class DeepResearchAgent:\n    def __init__(self, search, fetch, model, store):\n        self.search = search\n        self.fetch = fetch\n        self.model = model\n        self.store = store\n\n    def run(self, question: str):\n        plan = self.model.make_plan(question)\n\n        for subquestion in plan.subquestions:\n            results = self.search(subquestion.query)\n            for item in results[:5]:\n                page = self.fetch(item.url)\n                note = self.model.extract_claims(page, subquestion)\n                self.store.save(note)\n\n        draft = self.model.write_report(question, self.store.relevant_notes())\n        checked = self.model.verify_citations(draft, self.store.all_notes())\n        return checked\n","mini_deep_research.py","python","icon=tabler:brand-python wrap",[220,429,424],{"__ignoreMap":222},[10,431,432,433,436],{},"真正上线时，",[220,434,435],{"code":435},"verify_citations"," 不能只靠模型自己说“没问题”。更好的做法是把引用做成结构化数据，让程序检查 URL 是否存在、引用是否被使用、每条关键 claim 是否至少绑定一个来源。模型负责读和写，程序负责数手指。数错了就打回去，重新来过。",[28,438,439],{"id":439},"输出报告别写成资料坟场",[10,441,442],{},"研究报告最怕两种：一种像营销白皮书，热闹但没证据；一种像资料坟场，证据很多但人读完只想睡觉。",[10,444,445],{},"我更喜欢这种结构：",[211,447,452],{"className":448,"code":449,"filename":450,"language":272,"meta":451},[269],"# 结论先行\n一句话回答问题。\n\n# 主要判断\n- 判断 A：证据、反例、置信度。\n- 判断 B：证据、反例、置信度。\n\n# 证据表\n| 结论 | 来源 | 备注 |\n| --- | --- | --- |\n\n# 风险和未知数\n哪些地方还不能确定，为什么。\n\n# 下一步\n如果继续研究，应该查什么；如果要落地，先做什么实验。\n","report-template.md","icon=tabler:file-description wrap",[220,453,449],{"__ignoreMap":222},[10,455,456],{},"这个模板不花哨，但读者舒服。先给答案，再给证据，再告诉我哪里别信太满。像一只小猫把抓来的线团按颜色摆好：虽然毛茸茸，但很有秩序。",[28,458,460],{"id":459},"和-loop-engineering-的关系","和 Loop Engineering 的关系",[10,462,463],{},"上一篇写 Loop Engineering 时，我说 agent 真正难的是循环。Deep Research Agent 正好是一个典型例子。",[10,465,466],{},"它每一圈都在做：提出子问题，找材料，读材料，抽取证据，检查冲突，更新计划。没有 loop，它只是“搜索总结器”；有了 loop，它才像研究助理。",[211,468,473],{"className":469,"code":470,"filename":471,"language":217,"meta":472},[214],"Plan → Search → Read → Note → Verify → Revise Plan → Report\n          ↑                              ↓\n          └──────── need more evidence ──┘\n","deep-research-loop.txt","icon=tabler:repeat",[220,474,470],{"__ignoreMap":222},[10,476,477],{},"所以我更愿意把 Deep Research Agent 看成一种“证据驱动的 loop”。它的目标不是显得聪明，而是让结论有来路。",[28,479,481],{"id":480},"最后让-ai-查资料也要让它交作业","最后：让 AI 查资料，也要让它交作业",[10,483,484],{},"Deep Research Agent 最迷人的地方，是它把 AI 从“答题选手”变成了“研究助理”。它可以慢一点，可以查久一点，可以中途改计划。只要最后把证据摊开，让人知道每个判断从哪里来，这个慢就值得。",[10,486,487],{},"但也别把它神化。它会漏资料，会被 SEO 带偏，会把过期内容当新消息，会在证据不足时偷偷摆出一副很懂的样子。可爱的小研究员也要打卡、交笔记、接受抽查。ᕕ( ᐛ )ᕗ",[10,489,490],{},"我对它的期待很简单：少一点“我觉得”，多一点“我查到”；少一点漂亮废话，多一点可复核的路径。等一个 agent 能把问题查清楚、把不确定性说清楚、把引用放清楚，它就不只是会联网的聊天框了。它真的开始像一个能一起干活的同事。",{"title":222,"searchDepth":492,"depth":492,"links":493},4,[494,496,497,498,499,500,501,502,503,504,505],{"id":30,"depth":495,"text":30},2,{"id":138,"depth":495,"text":138},{"id":180,"depth":495,"text":181},{"id":228,"depth":495,"text":229},{"id":262,"depth":495,"text":262},{"id":281,"depth":495,"text":281},{"id":309,"depth":495,"text":310},{"id":416,"depth":495,"text":416},{"id":439,"depth":495,"text":439},{"id":459,"depth":495,"text":460},{"id":480,"depth":495,"text":481},[507],"开发","2026-07-08 21:14:04","Deep Research Agent 不只是“联网搜索一下”，而是会拆问题、找证据、交叉验证、写报告的研究型 agent。可爱归可爱，证据链不能撒娇。",false,null,{"slots":513},{},true,"\u002F2026\u002Fdeep-research-agent",{"text":517,"minutes":518,"time":519,"words":520},"16 min read",15.675,940500,3135,[522,525,528,531,534],{"title":523,"link":524},"Introducing deep research","https:\u002F\u002Fopenai.com\u002Findex\u002Fintroducing-deep-research\u002F",{"title":526,"link":527},"Deep research system card","https:\u002F\u002Fopenai.com\u002Findex\u002Fdeep-research-system-card\u002F",{"title":529,"link":530},"ReAct: Synergizing Reasoning and Acting in Language Models","https:\u002F\u002Farxiv.org\u002Fabs\u002F2210.03629",{"title":532,"link":533},"Building effective agents","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":535,"link":536},"LangGraph overview","https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Flanggraph\u002Foverview",{"title":5,"description":509},{"loc":515},"posts\u002F2026\u002Fdeep-research-agent",[541,542,543,544,545,546],"AI","Agent","Deep Research","Research Agent","LLM","工程实践","tech","sOtDCEbQ3U2H6eYlYDoQhJ6bjXc3WK9ek6rBpizUfmU",[550,555],{"title":551,"path":552,"stem":553,"date":554,"type":547,"children":-1},"Loop Engineering：别再只会写 Prompt 了","\u002F2026\u002Floop-engineering","posts\u002F2026\u002Floop-engineering","2026-07-08 18:29:00",{"title":556,"path":557,"stem":558,"date":559,"type":547,"children":-1},"Vercel AI SDK 入门：从 0 搭一个会流式回复的聊天页","\u002F2026\u002Fvercel-ai-sdk-getting-started","posts\u002F2026\u002Fvercel-ai-sdk-getting-started","2026-07-08 21:56:13",1783560682660]