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

相关推荐
霸道流氓气质27 分钟前
Prompt注入攻击与防御体系
ai
新中地GIS开发老师28 分钟前
2026年GIS行业正在发生什么?
ai·gis开发·低空经济
啦啦啦!1 小时前
RAG初阶学习
学习·ai·知识库·rag
合米AI SOP系统1 小时前
标杆客户真实改变,合米科技AI SOP视觉防错系统上线之后制造产线发生了什么?
人工智能·科技·ai
Ai-_Man1 小时前
您您这可以把Mistral AI的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。
人工智能·ai·小程序·电脑
菩提小狗1 小时前
每日极客日报 · 2026年09月21日
ai·开源·极客日报·it热点·技术资讯
codigger2 小时前
我用 AI 做完整项目后,总结出一套把需求钉死的工作流
ai·程序员·编程·ai编程·#人工智能
程序员清风2 小时前
系统架构设计:模型服务、业务服务与知识库如何拆分
人工智能·ai·架构·aigc
智行合一科技2 小时前
字节跳动将飞书并入豆包:一场“工具让位AI”的战略重构
ai·字节跳动·豆包
qq_452396232 小时前
第二篇:《Codex vs Copilot vs Claude Code:AI 编程工具选型指南》
ai