《本地 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,欢迎在评论区留下你的评论。动手是最好的学习方式,我们一起填坑。

相关推荐
专注写bug2 小时前
Spring AI Alibaba——支持Agent Skill
ai·llm·langchain4j·ai alibaba
fanly115 小时前
利用surging 网络组件重构插件开发
微服务·ai·microservice
多年小白7 小时前
中科院 Ouroboros 晶圆级存算一体芯片深度解析
大数据·网络·人工智能·科技·ai
ofoxcoding9 小时前
MiniMax M2.7 API 调用实测:和 GPT-5、Claude Sonnet 4.6、Gemini 3 放一起比,结果有点意外
gpt·ai
张忠琳10 小时前
【vllm】(五)vLLM v1 Attention — 模块超深度分析之五
ai·架构·vllm
网络工程小王10 小时前
【hermes多智能体协作】个人学习笔记
笔记·学习·ai·智能体·hermes
俊哥V10 小时前
每日 AI 研究简报 · 2026-04-22
人工智能·ai
yyk的萌10 小时前
Claude Code 命令大全
linux·运维·服务器·ai·claude code
zs宝来了10 小时前
PyTorch DDP:分布式训练与梯度同步
机器学习·ai·基础设施
张忠琳11 小时前
【vllm】(五)vLLM v1 Attention — 模块超深度分析之二
人工智能·深度学习·ai·架构·vllm