《本地 Agent 实践》系列之一:MacOS+Ollama+OpenClaw+飞书

前言

AI时代来临,身边不少技术人员或者科技爱好者对 AI Agent 的理论能聊得头头是道,但真正动手在本地跑起来一个能操作电脑的 Agent 的,少之又少。原因无非是:模型选型踩坑、权限配置劝退、消息通道搞不定、工具调用格式对不上......

本系列文章将基于我的 iMac (M4 芯片 + 24GB 内存),用 Ollama + OpenClaw + 飞书快速搭建一个可用的本地 Agent。 本系列文章设计每篇聚焦一个难点,贴关键代码、与大家探讨一下原理、附实测数据,确保真实可复制验证,且知道为什么这样设计。

本文是系列第一篇,聚焦整体架构与技术选型。

一、为什么要做本地 Agent?

在深入架构之前,先明确需求:我想要一个随时可以通过聊天软件(飞书)向我的 iMac 发送指令,让它帮我操作应用、获取信息、执行自动化任务的AI工具。

云端方案虽然成熟,但有两个无法回避的问题:

  1. 数据隐私:所有屏幕截图、文件内容、应用状态都要经过第三方服务器。

  2. 成本与延迟:频繁调用 GPT-4 级别模型,月账单可能远超预期,且网络往返增加延迟。

本地 Agent 则将推理(LLM)+ 执行(操作系统交互) 全部放在自己的 iMac 上。M4 芯片的 24GB 统一内存根据网上的信息来看,流畅运行 7B 参数的量化模型,配合 Ollama 的 Metal 加速,首次推理延迟控制在 2~3 秒,缓存命中后亚秒级响应------完全具备实用价值。


二、全链路架构:在开始前,先了解一下大致的框架,五层职责清晰

复制代码
┌─────────────────────────────────────────────────────────┐

│  飞书客户端(自建ai助手应用支持用户输入自然语言指令)                        │

└─────────────────┬───────────────────────────────────────┘

                  │ HTTPS + 事件回调(加密)

┌─────────────────▼───────────────────────────────────────┐

│  Flask 接入层(端口 5000)                               │

│  - 验证签名、解密消息(AES)                              │

│  - 提取用户 open_id 和文本                               │

│  - 异步处理(避免飞书 3 秒超时)                          │

└─────────────────┬───────────────────────────────────────┘

                  │ 调用 Agent(HTTP)

┌─────────────────▼───────────────────────────────────────┐

│  OpenClaw 核心(Agent 引擎)                             │

│  - 维护系统提示词(工具列表、角色约束)                    │

│  - 将用户消息 + 历史 + 工具 Schema 构造成 Chat 请求       │

│  - 解析模型返回的 tool_calls,路由到对应函数              │

└─────────────────┬───────────────────────────────────────┘

                  │ Ollama REST API(/api/chat)

┌─────────────────▼───────────────────────────────────────┐

│  Ollama 服务(本地推理引擎)                              │

│  - 加载量化模型(如 Qwen、Llama、kimi等)                  │

│  - 利用 Metal 加速推理                                    │

│  - 返回 JSON 格式的 tool_calls 或纯文本                   │

└─────────────────┬───────────────────────────────────────┘

                  │ Python 系统调用 / subprocess

┌─────────────────▼───────────────────────────────────────┐

│  macOS 执行层(Accessibility API + AppleScript)         │

│  - 模拟键盘鼠标、获取 UI 元素、控制应用                    │

│  - 执行 shell 命令、读写文件                              │

└─────────────────────────────────────────────────────────┘

三、技术选型: Ollama + OpenClaw + 飞书?

参考文章:

https://blog.csdn.net/qq_40600379/article/details/158467536?ops_request_misc=elastic_search_misc\&request_id=ad459f52d58d35adbefcdef2e21d6ce2\&biz_id=0\&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend\~default-1-158467536-null-null.142^v102^pc_search_result_base9\&utm_term=openclaw × 飞书\&spm=1018.2226.3001.4187

https://blog.csdn.net/ximenpiaofeixue/article/details/158735806?ops_request_misc=elastic_search_misc\&request_id=128fac4d51c1b3b3f898578af5130357\&biz_id=0\&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch\~search_v2-1-158735806-null-null.142^v102^pc_search_result_base9\&utm_term=openclaw 飞书 如何配置多个机器人\&spm=1018.2226.3001.4187

四、iMac M4 芯片 + 24GB 内存的配置考量

本系列所有代码和实测均基于以下环境:

  • 硬件:iMac M4,24GB 统一内存

  • 系统:macOS Sequoia 15.x

  • 模型:Ollama 0.13.x,qwen、llama等支持工具调用的大模型


五、实操截图

飞书创建群组,将创建的两个ai助手拉到群组中,助手们可互相通信。(虽然还有点搞不清楚状况。。)两个助手分别对接了不同的模型。对接相同模型的情况并没有测试,根据各类技术文章来看,貌似也可正常运行。

六、系列预告

下一篇计划探讨 OpenClaw 的工具注册机制,手写第一个 macOS 专属 Tool。

如果你正准备落地本地 Agent,欢迎在评论区留下你的评论。动手是最好的学习方式,我们一起填坑。

相关推荐
数据库小学妹7 分钟前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai
装不满的克莱因瓶31 分钟前
了解 LangChain 中的 LLM 与 ChatModel 的差异
人工智能·python·ai·langchain·llm·agent·chatmodel
黑马师兄1 小时前
RAG混合检索深度解析:让AI真正找到你要的内容
java·人工智能·ai·agent·rag·ai-native
me8324 小时前
【AI面试】小白理解大模型:仅编码器(BERT类)、仅解码器(GPT类)和完整的编码器-解码器架构各有什么优缺点?
人工智能·gpt·ai·bert
DS随心转插件4 小时前
AI导出鸭:DeepSeek 转 Word 效果实测与案例展示
人工智能·ai·word·豆包·deepseek·ai导出鸭
xiami_world5 小时前
2026年UI/UX设计工具私有化部署方案深度解析
人工智能·ui·ai·产品经理·ux
码农阿强5 小时前
N8N 工作流使用中转API 教程
ai
Litluecat6 小时前
配合多角色提示语,学习AI漫剧(刚开始学)
人工智能·学习·机器学习·ai·提示词·漫剧
俊哥V6 小时前
每日 AI 研究简报 · 2026-06-09
人工智能·ai