本地 AIllama.cppDeepSeek
本地大模型做决策 + 网络搜索获取实时信息 + 本地模型综合分析——既快又准,既私密又全面。
为什么需要"信息闭环"?
最近在做本地 AI 创作 Agent 聊天工具,已经跑通了 llama.cpp + ComfyUI 的本地创作链路。
但有一个核心痛点:本地大模型的知识截止问题。
Qwen3.6-27B 的训练数据有截止日期,最新的新闻、技术文档、市场信息,本地模型一概不知。
解决方案:让本地 Agent 能够调用网络搜索能力,获取实时信息,再结合本地知识综合分析。
全程可控,数据流清晰,隐私有保障。
本地 AI 的优势很明显:
- 隐私
:数据不出本机 - 自由
:无 Token 限制,无 API 调用次数限制 - 稳定
:不依赖网络,随时可用
但劣势同样明显:
- 知识截止
:模型训练数据有截止日期,最新信息不知道 - 事实核查
:遇到不确定的事实,无法实时查证 - 时效性
:新闻、股价、天气等动态数据需要实时获取
我的目标是做一个完整的本地 AI Agent,既能发挥本地模型的优势,又能弥补信息盲区。
核心思路:本地大模型做决策 + 网络搜索获取实时信息 + 本地模型综合分析。

架构设计
用户提问↓本地 LLM (llama.cpp + Qwen3.6-27B)↓ 判断是否需要网络信息├─ 不需要 → 直接回答(纯本地知识)└─ 需要 → 调用 DeepSeek 搜索工具↓网络搜索 / API 调用↓获取实时信息↓返回本地 LLM↓综合分析 + 结合本地知识↓输出最终答案
关键设计原则:
- 本地优先
:能本地回答的,不调网络 - 按需调用
:只有本地模型判断需要时,才触发网络搜索 - 信息融合
:网络信息返回后,由本地模型综合分析,不是简单拼接 - 用户可见
:整个信息获取过程对用户透明
工具层设计:DeepSeek 搜索工具
核心思路
设计一个 deepseek_ask 工具,作为本地 Agent 的网络信息获取接口。
这个工具的职责:
接收本地 LLM 发出的搜索请求(具体问题) 调用网络 API 获取信息 将结果结构化返回给本地 LLM
工具定义
{"name": "deepseek_ask","description": "Ask DeepSeek research assistant for fact-checking, current events, technical documentation, external data, or any factual information that requires up-to-date internet research.","parameters": {"type": "object","properties": {"question": {"type": "string","description": "The clear, specific question to ask DeepSeek for research" } } },"required": ["question"]}本地 LLM 的工具调用流程
当用户提问时,本地 LLM 的工作流程:
用户:"今天 A 股大盘怎么样?"↓本地 LLM 判断:- 这个问题需要实时数据- 本地知识可能过时- 调用 deepseek_ask 工具↓deepseek_ask(question="2026年6月17日 A股大盘行情")↓网络返回:今日上证指数、涨跌幅、成交量等数据↓本地 LLM 综合分析:- 结合网络返回的实时数据- 结合本地存储的历史数据或个人分析- 输出完整回答
实现方案:Playwright 网页浏览器自动化
为什么要用 Playwright?
纯 API 调用有局限性:
不是所有信息都有 API 有些网站需要登录、交互才能获取数据 JavaScript 渲染的页面,简单的 HTTP 请求抓不到内容
Playwright 的优势:
- 真实浏览器
:可以渲染 JavaScript,处理动态内容 - 自动化操作
:点击、滚动、输入、等待,模拟真实用户行为 - 可见性
:非 headless 模式下,用户可以看到 Agent 如何操作网页 - 跨站点
:可以访问任何网页,不受 API 限制
架构
本地 Agent↓ 调用 playwright_browser 工具Playwright 浏览器(非 headless,用户可见)↓ 自动浏览网页- 打开目标网址- 执行预设操作(搜索、点击、滚动)- 等待页面加载- 提取页面数据↓结构化数据返回↓本地 Agent 分析处理
Python 代码示例
from playwright.sync_api import sync_playwrightimport jsondefplaywright_browse(url, actions=None, extract_selector=None):""" 使用 Playwright 非 headless 模式浏览网页,用户可见操作过程 Args: url: 目标网址 actions: 可选的操作列表,如 [{"type": "click", "selector": "#search-btn"}] extract_selector: 要提取数据的 CSS 选择器 Returns: 提取的页面数据(文本或结构化数据) """with sync_playwright() as p:# 非 headless 模式,用户可以看到浏览器操作 browser = p.chromium.launch(headless=False) page = browser.new_page(viewport={"width": 1280, "height": 800})# 打开网页print(f"正在打开: {url}") page.goto(url, wait_until="networkidle")# 执行预设操作if actions:for action in actions:if action["type"] == "click": page.click(action["selector"]) page.wait_for_load_state("networkidle")elif action["type"] == "type": page.fill(action["selector"], action["text"])elif action["type"] == "wait": page.wait_for_timeout(action["milliseconds"])# 提取数据if extract_selector: data = page.locator(extract_selector).all_text_contents()else:# 默认提取正文内容 data = page.locator("body").inner_text()# 截图保存(可选,用于调试和记录) screenshot_path = f"browse_{int(time.time())}.png" page.screenshot(path=screenshot_path) browser.close()return {"url": url,"content": data,"screenshot": screenshot_path }# 使用示例:搜索新闻result = playwright_browse( url="https://www.baidu.com", actions=[ {"type": "type", "selector": "#kw", "text": "A股大盘 今日行情"}, {"type": "click", "selector": "#su"}, {"type": "wait", "milliseconds": 3000} ], extract_selector="#content_left")print(json.dumps(result, ensure_ascii=False, indent=2))工具封装
将 Playwright 浏览器操作封装为 Agent 可调用的工具:
{"name": "playwright_browser","description": "使用 Playwright 非 headless 浏览器自动浏览网页,用户可见操作过程。适合需要 JavaScript 渲染、登录交互的网页数据获取。","parameters": {"type": "object","properties": {"url": {"type": "string","description": "要访问的网页 URL" },"actions": {"type": "array","description": "浏览器操作序列(点击、输入、等待等)","items": {"type": "object" } },"extract_selector": {"type": "string","description": "要提取数据的 CSS 选择器" } },"required": ["url"] }}两种网络获取方式的对比
| 适用场景 | ||
| 速度 | ||
| 覆盖范围 | ||
| 用户可见 | ||
| 数据质量 | ||
| 资源消耗 | ||
| 推荐用法 |

推荐策略
用户提问↓本地 LLM 判断是否需要网络信息↓优先调用 deepseek_ask(快速、结构化)↓如果结果不够 → 调用 playwright_browser(精细、灵活)↓本地 LLM 综合分析所有信息↓输出最终答案

实际应用场景
场景一:技术文档查询
用户:"React 19 的新特性有哪些?"↓本地 LLM:Qwen3.6 训练数据可能不包含 React 19 完整信息↓调用 deepseek_ask("React 19 新特性完整列表")↓网络返回:React 19 的 Server Components、Actions、use() Hook 等新特性↓本地 LLM 结合本地前端开发经验,输出结构化回答
场景二:股票行情分析
用户:"今天茅台股价怎么样?"↓本地 LLM:需要实时数据↓调用 deepseek_ask("2026年6月17日 贵州茅台 股价 行情")↓网络返回:当前股价、涨跌幅、成交量↓本地 LLM 结合本地存储的历史分析数据,输出综合判断
场景三:特定网站数据抓取
用户:"帮我看看 GitHub 上 llama.cpp 最新的 release 版本"↓本地 LLM:需要访问 GitHub 网页↓调用 playwright_browser(url="https://github.com/ggerganov/llama.cpp/releases",extract_selector=".release-title")↓浏览器打开 GitHub,提取最新版本信息↓本地 LLM 整理输出
信息闭环的价值
1. 本地知识的延伸
本地大模型不再是"信息孤岛"。通过工具调用,可以按需获取网络信息,相当于给本地模型装上了"搜索引擎"。
2. 隐私可控
用户提问先经过本地模型判断 只有需要时才发送问题到网络 返回的信息由本地模型处理,不是直接展示原始数据 敏感信息可以本地过滤
3. 个性化融合
网络信息返回后,本地模型可以结合:
用户的历史偏好 本地存储的个人数据 项目上下文信息
输出的是个性化的答案,不是千篇一律的搜索结果。
4. 可追溯
每一步都有记录:
用户问了什么 本地模型做了什么判断 调用了哪些工具 获取了什么信息 最终输出了什么
深度思考:可见性、隐私边界与免费 AI 搜索的商业价值
用户可见的 AI 思考过程
通过 Playwright 操作浏览器访问 DeepSeek,默认采用非 headless 模式,用户可以看到完整的交互过程:
- 输入可见
:用户可以看到 Agent 向 DeepSeek 输入了什么查询信息 - 思路可见
:用户能了解到 AI 的思考路径和分析思路 - 输出可见
:用户可以看到 DeepSeek 的联网搜索结果和输出内容
这种可见性非常重要。本质上,用户需要看到 DeepSeek 的网页信息并理解其来源,然后系统再返回数据,结合本地数据和 DeepSeek 返回的信息一起进行本地处理。整个过程透明可信,用户知道信息从哪来、经过怎样的处理。
隐私边界:什么出本地,什么不出本地
在这个架构中,隐私边界非常清晰:
出本地的信息
只有必须联网的请求信息才会离开本地环境 这些请求是经过本地 LLM 判断后认为需要实时数据的问题 请求内容通常是公开的事实性问题(新闻、股价、技术文档等)
不出本地的信息
用户的个人信息、历史偏好、本地数据 项目的私有代码和文档 用户的私人对话和敏感信息 本地 LLM 的综合分析过程和最终决策
这种设计确保了核心隐私数据永远留在本地,只有必要的查询请求才会发送到网络。
DeepSeek 的视角:信息链路的掌控
从 DeepSeek 的角度来看,这个架构中它扮演的角色是信息检索推理引擎:
用户请求 → DeepSeek 回答,整个链接和信息来源由 DeepSeek 掌控 DeepSeek 提供的是广泛的信息搜索能力,连接世界的知识推理网络 它不接触用户的本地数据和隐私信息,只提供公开信息的检索推理服务
这种分工很清晰:DeepSeek 负责"连接世界",本地 AI 负责"理解个人"。
免费 AI 搜索的巨大商业价值
虽然目前这种免费搜索 AI 的直接盈利模式不佳,但其间接商业价值正在巨大地体现出来。我已经亲身感受到了 DeepSeek 这种免费 AI 搜索带来的巨大商业价值——它能直接影响我的信息商业决策。
为什么这么说?
- 信息决策价值
:免费 AI 搜索提供的信息,会影响用户的工作决策、投资决策、学习方向等。这些决策背后蕴含着巨大的商业价值。 - 信息入口价值
:谁掌握了信息搜索入口,谁就掌握了影响用户决策的能力。即使搜索本身免费,但通过影响决策产生的商业价值是巨大的。 - 数据反馈价值
:用户的搜索行为本身就是一种高价值数据,反映了市场需求、热点趋势、用户意图等。
为什么免费 AI 搜索模式会一直持续?
我认为,各种免费信息 AI 问问题的模式将一直免费下去,原因如下:
对 DeepSeek 等 AI 搜索推理平台而言:
免费搜索推理是获取用户、建立信息入口的最佳方式 通过免费搜索推理积累的用户规模和搜索数据,本身就是巨大的商业资产 一旦收费,用户会流向其他免费替代品,信息入口地位将丧失
对豆包等日常 AI 助手而言:
豆包也不可能把日常问题收费 因为一旦收费,会将自己重要的"普通问题信息决策能力"拱手让人 日常问题的搜索和行为数据,是构建商业闭环的重要基础 失去这些数据,就等于失去了理解用户需求和市场趋势的能力
核心逻辑:免费 AI 搜索的本质不是靠搜索本身赚钱,而是通过搜索获取影响商业决策的信息能力和用户行为数据。这种能力一旦丧失,损失远大于收费带来的收入。

我的软件定位:本地 AI + 免费网络 API 的双引擎
基于以上分析,我对自己的软件定位更加清晰:
免费网络 API 的可持续性:
我这种"本地总结网络信息,并结合自身数据再次做出决策"的软件,所依赖的免费网络 API 将一直能够使用 因为 AI 搜索平台需要保持免费来维持其信息入口地位 只要它们免费,我的软件就能持续利用这种能力
双重价值模型:
| 核心价值 | ||
| 商业价值 | ||
| 信息范围 | ||
| 隐私保护 | ||
| 互补关系 |
两种模式都有不可替代的价值:
DeepSeek 这类信息搜索远程 API,能够提供联系世界广泛信息的智能商业价值。没有它,本地 AI 就是信息孤岛。 而我这种本地 AI,结合自己的数据,能最终为用户提供个性化、隐私保护的 AI 信息服务。没有它,用户只能得到千篇一律的通用搜索结果。
两者的结合,才是真正的"智能闭环"——既有全球信息的广度,又有个人数据的深度。
当前局限
1. 网络依赖
虽然核心在本地,但信息获取环节仍然需要网络连接。断网时退化为纯本地模式。
2. 信息时效性
deepseek_ask 的搜索结果有延迟,不是真正的"实时"。对于秒级时效要求的场景(如高频交易),需要更直接的 API。
3. Playwright 资源消耗
非 headless 模式下,每个浏览器实例占用较多内存。批量任务需要考虑资源管理。
4. 网页结构变化
基于 CSS 选择器的数据提取,依赖网页结构。网站改版后需要更新选择器。
下一步方向
1. 智能路由
让本地 LLM 更精准地判断何时调用网络工具,减少不必要的 API 调用:
简单事实 → 本地回答最新新闻 → deepseek_ask特定网站 → playwright_browser综合分析 → deepseek_ask + 本地知识
2. 缓存机制
对频繁查询的信息建立本地缓存,减少重复网络请求:
# 伪代码cache = {}defget_info(question, ttl=3600):if question in cache and not cache[question].expired(ttl):return cache[question].data result = deepseek_ask(question) cache[question] = {"data": result, "time": time.time()}return result3. 多源信息融合
同时调用多个信息源,交叉验证:
deepseek_ask → 搜索结果 Aplaywright_browser → 网页数据 B本地知识库 → 历史数据 C↓本地 LLM 综合 A + B + C → 最终答案
4. Agent 编排层
用更高级的 Agent 框架(如 LangChain、AutoGen)来编排整个流程,实现:
自动重试 错误处理 多轮对话上下文管理 工具调用链
写在最后
本地 AI + 网络搜索的组合,不是"二选一",而是互补。
本地模型负责决策、分析、个性化输出。
网络搜索负责实时信息、事实核查、数据获取。
两者结合,才能真正做到既快又准,既私密又全面。
这条信息闭环链路跑通后,本地 AI Agent 的能力边界将大幅扩展。
下一个目标:把这条链路集成到创作 Agent 中,实现"一句话创作"的完整闭环——从灵感获取,到内容生成,到配图配音视频,全部自动化。
本地 AI 负责"理解个人",网络搜索负责"连接世界"。两者的结合,才是真正的智能闭环。
夜雨聆风