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

相关推荐
VIP_CQCRE3 小时前
Claude Desktop + Midjourney MCP:对话式 AI 绘图教程
ai
Cha0DD11 小时前
【由浅入深探究langchain】第二十集-SQL Agent+Human-in-the-loop
人工智能·python·ai·langchain
Cha0DD11 小时前
【由浅入深探究langchain】第十九集-官方的SQL Agent示例
人工智能·python·ai·langchain
CoderJia程序员甲15 小时前
GitHub 热榜项目 - 日榜(2026-03-29)
人工智能·ai·大模型·github·ai教程
带刺的坐椅17 小时前
SolonCode v2026.4.1 发布(比 ClaudeCode 简约的编程智能体)
java·ai·llm·agent·solon-ai·claudecode·soloncode
Elastic 中国社区官方博客17 小时前
Elasticsearch:如何在 Elastic AI Builder 里使用 DSL 来查询 Elasticsearch
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
映辉17 小时前
ultralytics yolo入门实践
yolo·ai
problc18 小时前
Pretext —— 无 DOM 文本测量与布局引擎
前端·ai
gao_tjie19 小时前
Seedream MCP 集成指南
ai