[控场AI]
· 7 分钟阅读· 3,951 字

本地大模型真能离线?Bees 网络请求实测拆解

本地大模型真能离线?Bees 网络请求实测拆解

开发者审查 Bees 源码,核实本地大模型"数据不出本机"承诺的边界与例外。

一位开发者通过逐行阅读 Bees 源码,验证其"Nothing leaves your computer"宣传是否属实。结论是:本地运行时提示词、文件、Agent 内容和记忆确实留在本机,模型仅监听回环地址,且无内置遥测。但默认仍有四类对外请求:配置查询、更新检查、FreeLLMAPI 模型列表同步和首次记忆初始化下载,其中 FreeLLMAPI 同步即使用户从不使用免费云端模型也会触发。文章还区分了按需发起的请求(模型下载、网页搜索、云模型同步等)与已确认关闭的功能(遥测、CSP 远程加载等),并坦承尚未在全新环境抓包验证。团队已承诺三项修复。

本地运行大模型常被宣传为"数据不出本机",但这个承诺到底有多真?Bees 团队最近发布了一支名为 "Nothing leaves your computer" 的宣传片,随后一位开发者决定亲自翻一遍 Bees 的源码,逐条列出它在运行时发出的每一个网络请求,以验证这个说法是否站得住脚。

据 bees.bot 博客披露,当用户在本地运行模型时,提示词、文件、Agent 工作内容和记忆确实留在本机——模型运行在 llama-server 中,仅监听 127.0.0.1,外部无法访问。Bees 中也没有内置崩溃上报、分析统计或追踪代码。

Bees 本地模型网络请求分析

但作者也坦言:默认情况下仍有四类请求会主动发出,其中一个让他自己都感到意外。他选择公开这些细节,而不是让用户自己在抓包里发现。

默认发出的四类请求

这部分是文章最核心的发现。即使用户从不登录账号,Bees 启动时也会主动向外部服务器发出以下请求:

配置查询:每次启动时,Bees 会访问 app.bees.bot/api/config 询问登录方式的配置。请求本身不携带账号信息或 token,只有常规的 IP 地址和 user agent。该行为无法在应用内关闭,只能通过设置环境变量 BEES_ACCOUNT_API_URL 来改变目标地址。

更新检查:启动时及每隔 6 小时,Bees 会从 GitHub 拉取 bees-update.json。请求不携带用户数据,也不会自动下载任何内容——除非用户点击"Update and restart"。目前尚无关閉开关。

FreeLLMAPI 模型列表同步:这是作者没有预料到的一项。Bees 内置了一个小型服务器来支持免费云端 AI 选项,它在每次启动时都会运行,即使用户只用本地模型。启动 10 秒后、之后每 12 小时,它会访问 api.freellmapi.co 获取最新免费模型列表。请求只发送已有列表的版本号,不包含用户数据。目前唯一关闭方式是设置 CATALOG_SYNC_DISABLED=1,团队表示将修复为"仅在选择免费 AI 时才启动该服务"。

首次记忆初始化:本地记忆默认开启。首次启动时,Bees 通过 uv 下载 Python 3.12(来自 GitHub)、记忆相关包(来自 PyPI)以及一个嵌入模型 all-MiniLM-L6-v2(来自 Hugging Face)。代码中明确注释:"Never forward memories to a hosted model"。用户的记忆内容不会出现在这些请求中。

说个细节,官方帮助页面目前只提到了登录检查和模型下载,遗漏了 FreeLLMAPI 列表同步和记忆初始化两项,团队承诺会修正该页面。

什么是 127.0.0.1(回环地址)?

文中多次提到模型仅监听 127.0.0.1,这是理解"数据不出本机"承诺的技术基础。127.0.0.1 是 IPv4 中的回环地址(loopback address),俗称 localhost,专门用于指代本机自身。绑定到该地址的服务只接受来自同一台机器的连接,局域网内的其他设备、路由器乃至公网都无法访问。与之相对,如果服务监听 0.0.0.0,则意味着接受所有网卡的连接,同网络下的任何设备都可能连上。因此当 llama-server 仅绑定 127.0.0.1 时,模型推理所用的提示词、上下文和输出确实不会经由网络接口泄出。不过要注意,这只能保证"模型服务本身"不对外暴露;应用的其他模块仍可能主动向外发起请求,这正是本文后续四类默认请求要讨论的重点。回环地址是一个网络层的事实约束,而"是否对外联网"是应用层的行为问题,二者不能混为一谈。

嵌入模型(Embedding Model)与本地记忆的关系

文章提到首次记忆初始化会下载 all-MiniLM-L6-v2,这是一个嵌入模型。嵌入模型的作用是把文本转换成一串固定维度的数值向量,使语义相近的句子在向量空间中距离更近。本地记忆功能依赖它来完成两件事:一是把用户的历史内容编码成向量存入本地数据库,二是把新的查询也编码成向量,再通过相似度检索召回相关的旧记忆。all-MiniLM-L6-v2 是一个体量很小的开源句子嵌入模型,约 80MB,常被本地应用选作默认方案,因为它在消费级硬件上运行快、占用低。由于嵌入过程完全在本机执行,记忆的原文和向量都不会离开设备——代码注释"Never forward memories to a hosted model"正是指这一点。需要区分的是:下载模型权重是一次性的联网行为,而使用模型进行编码是纯本地计算,两者性质不同。

按需发出的请求:有动作才联网

与默认请求不同,以下网络行为需要用户或 Agent 主动触发,且每次只发送执行该操作所必需的数据。

模型下载:开启 Qwen3 4B 模型时,Bees 会从 Hugging Face 下载约 2.5 GB 的文件,并使用固定校验和验证。用户也可以粘贴自己的 GGUF 链接。

网页搜索与阅读:每个 Agent 都内置搜索和页面读取工具,且没有开关。搜索会同时向 search.brave.com、html.duckduckgo.com、lite.duckduckgo.com 和 bing.com 发送查询,新闻搜索则走 Google News RSS。只有搜索关键词离开本机,且仅在 Agent 决定搜索时触发。

Ask Bees 规划:请求规划时,Bees 可能查询 MCP 公共注册表 registry.modelcontextprotocol.io,并从 GitHub 读取 skill packs。Skills 页面使用相同的调用。

Apps 页面:打开时从 bees-bot.github.io 拉取应用列表。

云模型与团队同步:选择 API key 提供商时,提示词会发送到对应服务;登录 Bees Cloud 团队后,每隔 15 秒同步一次,作者在自己的 Mac 上观察到约 20 个到 app.bees.bot 的长连接。

GGUF 格式是什么?

文中提到模型下载约 2.5GB 并要求"粘贴自己的 GGUF 链接"。GGUF(GPT-Generated Unified Format)是目前本地大模型生态中最主流的模型文件格式,由 llama.cpp 项目设计并推广。它把模型的权重、分词器配置、元数据(如架构、量化类型、上下文长度)打包进单个文件,便于分发和加载。GGUF 的核心优势是支持多种量化方案——通过降低权重精度(如从 16 位降到 4 位)大幅压缩体积,让原本需要数十 GB 显存的模型能跑在普通笔记本上。因此一个 4B 参数的模型经量化后可能只有 2.5GB 左右。llama-server 正是 llama.cpp 提供的推理服务,也是 Bees 在本地运行模型时的底层引擎。理解 GGUF 有助于明白为什么用户可以自行替换模型文件:只要格式兼容,同一套本地推理栈就能加载不同来源、不同大小的模型,而无需依赖云端。

代码审查中确认"关闭"的项

作者不仅列出"发出了什么",还检查了哪些看似可疑但实际是关闭的:

Agent 运行时内置了 telemetry,但 Bees 启动时传入 DSH_TELEMETRY_DISABLED=1,作者追踪代码确认该设置确实生效。即便 telemetry 打开,也只在用户发送反馈后才上传数据。

应用窗口的内容安全策略(CSP)只允许自身和 127.0.0.1,无法加载任何远程字体、脚本或图片。帮助链接在用户点击时会在本地浏览器打开。

记忆服务有 tracing 代码,但只有设置了 endpoint 才会导出,而 Bees 并未设置。设备 ID 文件仅用于团队登录场景。

尚未验证的部分

作者坦诚地划出了边界:这份清单完全来自阅读源码,尚未在全新安装环境上抓包验证。他手头 Mac 上的 Bees 已经登录团队,无法代表首次运行的干净状态。

还有两个问题没能从代码中确定:记忆重排器指向 Hugging Face,但找不到其下载存储位置;记忆服务中某个库在加载时可能从 GitHub 拉取价格表,但 Bees 使用的路径理论上不会触发。作者表示下一步会做一次纯净安装,只运行本地模型,监控前 15 分钟的网络流量并公布结果。

团队承诺的三个修复

作者同时也是项目方,给出了明确的改进清单:FreeLLMAPI 列表同步不应在用户从未选择免费云端模型时运行;更新检查应提供开关;帮助页面需要补充记忆初始化的说明。

Bees 是免费开源软件,支持 Mac、Windows 和 Linux,代码托管在 GitHub。作者鼓励用户发现遗漏的请求时提交 issue——这种"先自查再公开"的做法,本身也为本地 AI 工具的隐私透明度提供了一个可参考的样本。

对于关注数据隐私的本地大模型用户来说,这篇文章的价值在于:它没有笼统地承诺"一切都在本地",而是把"哪些默认发出、哪些按需发出、哪些已确认关闭、哪些还没查"分门别类地摊开。这种颗粒度,比一句宣传语更值得信任。

#Bees 本地模型#本地大模型网络请求#数据隐私#开源AI工具#llama-server#本地模型离线#AI隐私透明度
分享:

相关推荐