惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
L
LangChain Blog
J
Java Code Geeks
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
I
InfoQ
博客园 - 聂微东
量子位
A
About on SuperTechFans
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
H
Help Net Security

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
巨坑?OpenClaw+Ollama+Qwen3.5:9b竟然无法读取本地文件!
J.sky · 2026-03-11 · via 碎言

是技术局限,还是厂商”有意为之”?

作为一名热衷于本地部署 AI 的技术爱好者,我最近踩了一个大坑:OpenClaw 配合 Ollama 部署 Qwen3.5:9b 后,竟然无法读取本地文件,信心满满的测试,结果浪费我一整天的时间!

而当我切换到线上大模型(GPT-4、Claude 等)时,这个问题神奇地消失了。这让我不禁想问:这真的是技术问题,还是某些厂商”刻意为之”?

一、问题的表象

事情的起因很简单。我想搭建一个完全本地化的 AI 工作流,于是选择了以下组合:

  • OpenClaw:作为 AI 客户端,支持多种模型接入
  • Ollama:本地运行大模型的神器
  • Qwen3.5:9b:阿里开源的中文大模型Qwen3.5:9b

部署过程一帆风顺,直到我尝试让它读取本地文件时,问题出现了:

> “请帮我分析这个文档的内容”
> → 模型回复:“我无法访问本地文件系统”

奇怪的是,当我把 API Key 换成 阿里云百炼的线上模型后,文件读取功能立即恢复正常。这种”选择性失效”让我开始怀疑。

二、官方解释 vs 我的怀疑

2.1 官方话术:模型能力差异

如果去社区提问,大概率会得到这样的回答:

> “9B 的小模型 Function Calling 能力弱,无法正确生成工具调用格式,这是正常的。线上大模型经过专门优化,工具调用能力更强。”

听起来很有道理,但仔细一想,漏洞百出。

2.2 我的质疑:真的是能力问题吗?

以下几点让我无法完全接受”能力论”:

  1. 同样的模型,不同的表现:Qwen3.5:9b 在 OpenClaw 里读不了文件,但在其他客户端(如 Chatbox、LobeChat)里却能正常读取。如果是模型能力问题,为什么换个壳子就好了?

  2. “恰好”失效的功能:文件读取是本地部署最核心的需求之一,也是线上模型收费的重要卖点。这个功能”恰好”在本地部署时失效,是不是太巧合了?

  3. API 层面的诡异行为:通过抓包发现,OpenClaw 向 Ollama 发送的请求中,tools 字段有时是空的。这是模型的问题,还是客户端”忘记”传了?

三、深挖:可能的技术原因

在指责厂商”搞鬼”之前,我们还是先来理性分析一下可能的技术原因:

3.1 Function Calling 格式兼容性

不同厂商的工具调用格式存在差异。OpenAI 的格式是业界事实标准,但 Ollama 的实现可能并不完全兼容。如果 OpenClaw 是按照 OpenAI 的格式发送请求,而 Ollama 期望的是另一种格式,就会出现问题。

3.2 系统提示词(System Prompt)差异

很多 AI 客户端会针对不同模型注入不同的系统提示词。OpenClaw 可能针对 GPT-4 优化了提示词,但对本地模型的提示词没有相应调整,导致模型”听不懂”指令。

3.3 模型名称检测

不排除 OpenClaw 内部有类似这样的逻辑:

if (model.includes("gpt") || model.includes("claude")) {
    enableFileReading = true;
} else {
    enableFileReading = false; // 本地模型?禁用!
}

这种”白名单”机制在业界并不罕见。厂商可能出于”稳定性考虑”,只给经过验证的模型开启高级功能。

四、厂商的”小心思”?

说到这里,不得不提一个敏感话题:厂商有没有动机”搞鬼”?

4.1 商业利益的考量

让我们算一笔账。GPT-4 的 API 调用成本大约是 $0.03/1K tokens,而本地部署的成本几乎为零(电费除外)。如果本地部署的体验和线上模型一样好,谁还会付费呢?

我不是说厂商一定在故意使绊子,但从商业逻辑上讲,让本地部署”能用但不完全好用”,确实是一个精妙的平衡点。

4.2 开源 vs 闭源的博弈

Ollama 和 Qwen 都是开源的,OpenClaw 也是开源的,开源软件对开源生态的支持自然不在话下。“我们支持本地部署”和”我们让本地部署好用”,是两件完全不同的事。

五、验证方法与解决方案

如果你也遇到了类似问题,可以尝试以下方法验证和解决:

5.1 验证步骤

  • 换模型测试:尝试 llama3.1:8b、qwen2.5:14b 等其他本地模型,看问题是否依然存在
  • 换客户端测试:用 Chatbox、LobeChat 等客户端连接同一个 Ollama 实例,对比表现
  • 抓包分析:用 Wireshark 或 mitmproxy 查看 API 请求,对比线上和本地模型的差异
  • 查看日志:Ollama 的日志会显示是否收到了 tools 字段

5.2 可能的解决方案

  • 使用兼容层:如 open-webui,它对 Ollama 的支持更完善,亲测可以读取文件内容和识别图片内容
  • 手动修改请求:通过代理拦截并修改 OpenClaw 的请求,补全 tools 字段
  • 向开发者反馈:如果是 bug,官方修复是最好的解决方案
  • 换客户端:如果 OpenClaw 确实对本地模型支持不佳,考虑迁移到其他客户端

六、结语:保持怀疑,但别偏执

写这篇文章的目的,不是要给某个厂商定罪,而是想表达一个观点:在技术世界里,“不能用的功能”和”不想让你用的功能”之间的界限,往往比我们想象的更模糊。

也许 OpenClaw + Ollama 的文件读取问题,真的只是一个普通的兼容性 bug;也许背后有更深层的商业考量。作为用户,我们很难知道真相。

但有一点是确定的:当本地部署的体验”恰好”不如线上服务时,受益的永远是那些按 token 收费的云服务商。

保持技术敏感,保持独立思考。

本文仅代表作者个人观点,如有雷同,纯属巧合。欢迎技术交流,拒绝人身攻击。