macOS 配置 OpenClaw 接入 DeepSeek 大模型及飞书
概述
OpenClaw 是一个开源的个人 AI Agent(智能体)框架。
- 普通 AI(如 ChatGPT):你问它答,它住在浏览器里。
- OpenClaw:它住在你的电脑或服务器里,通过微信、钉钉、Telegram 等聊天软件和你沟通。最核心的区别是它能执行操作:
- 前端开发:你可以让它'帮我改一下这个页面的 CSS 布局',它能直接读取本地代码并修改。
- 后端运维:通过聊天窗口发个指令,它就能登录服务器查看日志、重启服务或部署 Docker。
- 股票分析:它能定时抓取行情数据,结合你给的策略(Skills)生成分析报告发给你。
费用来源
OpenClaw 本身是开源免费的(MIT 协议),你不需要为软件本身付费。但实际使用中有两部分成本:
- 大脑的'思考费'(API Token):你需要给它接入大模型(如 Anthropic 的 Claude 3.5、阿里云的通义千问 Qwen 或 OpenAI)。你需要向这些大模型厂商支付 API 调用费(按量计费)。
- 身体的'住宿费'(服务器):如果你选择租云服务器,会有月租费。
了解了两个方面,对 OpenClaw 有了一个大概的了解,就可以决定好是要在本地配置还是云端租服务器,以及对应的大模型选择。
这里介绍的是 MacBook 本地配置 OpenClaw,选取 DS 模型 deepseek/deepseek-chat,是国内性价比比较高的,但是配置起来会有点复杂。当前直接下载的 openclaw 的 provider 里暂时还没有直接的 ds,但是已经有了千问,感兴趣的也可以选择千问去配置。
配置步骤
1. 安装环境
确保电脑有 Node.js (v22+) 和 Git。
a@MacBookAir ~ % node -v
v25.2.1
a@MacBookAir ~ % git --version
git version 2.50.1 (Apple Git-155)
2. 一键安装
检查好配置后,打开终端,运行官方提供的脚本。
curl -fsSL https://openclaw.bot/install.sh | bash
3. 配置 DeepSeek 进 OpenClaw
安装完成后,终端通常会自动启动 Onboarding Wizard。按照以下提示选择:
- Onboarding mode:选择 Quickstart(快速开始)。有其余的选项一路上按默认勾选就可以了。
- Model provider:选择 Custom Provider(自定义提供商)。这一步有 ds 可以选就直接选 ds,没有的话就选 openai。openai 这里会有选项,不要选择第一个,选择第二个,按照后续步骤填写从 ds 处得到的 API KEY。
◆ OpenAI auth method │ ● OpenAI Codex (ChatGPT OAuth) │ ○ OpenAI API key │ ○ Back └
- API Base URL:输入
https://api.deepseek.com/v1。(加不加/v1 都可以,官方文档是不加,但由于兼容性等问题有些电脑需要加/v1 才能连上)千万记得填这个,如果不填,它默认会去连 OpenAI 的官方服务器,那你的 DeepSeek Key 就失效了。 - API Key:粘贴你第一步获取的 sk-xxxx 密钥。(具体获取步骤后续讲解)
How do you want to provide this API key? │ ● Paste API key now (Stores the key directly in OpenClaw config) │ ○ Use external secret provider └
这里选择第一个。然后把得到的 key 粘贴进去,回车。
- default Model:不要选 openai 的相关模型,选手动输入(如 manual input)。这些错了也没关系,等会会再改配置文件的。输入
deepseek-chat(如果你想让它逻辑更强但稍微贵一点点,可以填deepseek-reasoner,即 R1 模型)。新手的话先用 chat 应该够了。 - Model alias:随便起个名,比如 ds。(但是这样配置 ds 后续 openclaw tui 肯定是会报识别不出来 deepseek 这个 provider 的错的,所以后续还要手动配置)
DeepSeek 模型 API 获取
- 访问 DeepSeek 开放平台。
- 注册账号并充值(建议先充 10 元人民币,应该足够至少一个月使用)。
- 点击左侧的 "API Keys",创建一个 Key 并复制保存好(它只会出现一次)。
飞书小助手配置
1. 选择模型
按下方向键找到飞书。
◆ Select channel (QuickStart)
│ ● Telegram (Bot API) (recommended · newcomer-friendly)
│ ○ WhatsApp (QR link)
│ ○ Discord (Bot API)
│ ○ IRC (Server + Nick)
│ ○ Google Chat (Chat API)
│ ○ Slack (Socket Mode)
│ ○ Signal (signal-cli)
│ ○ iMessage (imsg)
│ ○ LINE (Messaging API)
│ ○ Feishu/Lark (飞书)
│ ○ Nostr (NIP-04 DMs)
│ ○ Microsoft Teams (Bot Framework)
│ ○ Mattermost (plugin)
│ ○ Nextcloud Talk (self-hosted)
│ ○ Matrix (plugin)
│ ○ BlueBubbles (macOS app)
│ ○ Zalo (Bot API)
│ ○ Zalo (Personal Account)
│ ○ Synology Chat (Webhook)
│ ○ Tlon (Urbit)
│ ○ Skip for now
2. 飞书具体配置
这里的配置只需要先做到拿到 appid 和 secret id 这一步就可以继续去终端配置 OpenClaw 了。当然为了后续使用方便最后也是要配齐的。主要分为两大块,首先是简约配置,目的是为了拿到 app id 和 secret id。其次是权限配置,需要给飞书开放对应的权限和事件回调,才能在客户端和机器人进行聊天。
简约配置
- 登录 飞书开放平台。
- 点击 '创建企业自建应用'。应用名称:起个酷点的名字(比如:工作搭子)。应用描述:随便写,比如'我的工作搭子'。
- 创建成功后,在左侧菜单点击 '凭证与基础信息'。找到 App ID 和 App Secret。把这两个值填回你的终端(Terminal)里对应的提示位置。
- 开启机器人功能:在飞书开放平台左侧菜单,点击 '添加应用能力'。找到 '机器人',点击 '添加'。
权限配置
- 在左侧目录树选择'开发配置 > 权限管理',单击'批量导入/导出权限'按钮。
- 在'导入'页签中,将如下权限替换原有示例,单击'下一步,确认新增权限'按钮。不想开通这么多权限的话,也可以手动添加,但要打开几个核心权限:
im:message(接收消息),im:message:send_as_bot(以机器人身份发送消息),im:chat(获取群组信息),im:resource(获取资源文件)。
{"scopes": {"tenant": ["contact:contact.base:readonly","docx:document:readonly","im:chat:read","im:chat:update","im:message.group_at_msg:readonly","im:message.p2p_msg:readonly","im:message.pins:read","im:message.pins:write_only","im:message.reactions:read","im:message.reactions:write_only","im:message:readonly","im:message:recall","im:message:send_as_bot","im:message:send_multi_users","im:message:send_sys_msg","im:message:update","im:resource","application:application:self_manage","cardkit:card:write","cardkit:card:read"],"user": ["contact:user.employee_id:readonly","offline_access","base:app:copy","base:field:create","base:field:delete","base:field:read","base:field:update","base:record:create","base:record:delete","base:record:retrieve","base:record:update","base:table:create","base:table:delete","base:table:read","base:table:update","base:view:read","base:view:write_only","base:app:create","base:app:update","base:app:read","sheets:spreadsheet.meta:read","sheets:spreadsheet:read","sheets:spreadsheet:create","sheets:spreadsheet:write_only","docs:document:export","docs:document.media:upload","board:whiteboard:node:create","board:whiteboard:node:read","calendar:calendar:read","calendar:calendar.event:create","calendar:calendar.event:delete","calendar:calendar.event:read","calendar:calendar.event:reply","calendar:calendar.event:update","calendar:calendar.free_busy:read","contact:contact.base:readonly","contact:user.base:readonly","contact:user:search","docs:document.comment:create","docs:document.comment:read","docs:document.comment:update","docs:document.media:download","docs:document:copy","docx:document:create","docx:document:readonly","docx:document:write_only","drive:drive.metadata:readonly","drive:file:download","drive:file:upload","im:chat.members:read","im:chat:read","im:message","im:message.group_msg:get_as_user","im:message.p2p_msg:get_as_user","im:message:readonly","search:docs:read","search:message","space:document:delete","space:document:move","space:document:retrieve","task:comment:read","task:comment:write","task:task:read","task:task:write","task:task:writeonly","task:tasklist:read","task:tasklist:write","wiki:node:copy","wiki:node:create","wiki:node:move","wiki:node:read","wiki:node:retrieve","wiki:space:read","wiki:space:retrieve","wiki:space:write_only"]}}
在弹窗中确认权限无误后,单击'申请开通'按钮,完成操作。
- 发布应用:单击顶部弹窗'创建版本'按钮。按需配置应用版本号、默认能力、更新说明等信息。一开始填 1.0.0 就好,后续更新可以按自己的想法来编号,只是私人用的话不用作规范要求。

- 单击页面底部的'保存'按钮,创建版本。
- 单击页面右上角的'确认发布'按钮,完成应用发布。
- 订阅机器人长链接接收事件和卡片回调。(这一步如果在长连接无法调通的话,可能先继续按照终端配置流程走,把飞书插件下载下来之后才能连接上) (1)进入飞书开放平台,在左侧列表找到事件与回调,配置事件订阅方式。订阅方式改为长连接,并保存。

添加事件:接收消息、消息被 reaction、消息被取消 reaction。(注意:一共添加三个事件,少添加会导致使用体验感变差)

继续终端配置
刚刚到了起名那一步,接下来还有很多步骤需要走。
- 当你在前面选择了飞书,后续会选择:
◆ Install Feishu plugin? │ ○ Download from npm(@openclaw/feishu) │ ● Use local plugin path (/opt/homebrew/lib/node_modules/openclaw/extensions/feishu) │ ○ Skip for now
这个 Plugin(插件)是给 OpenClaw 用的'通讯模块',既然这里已经检测到本地路径下有这个插件,那直接进去用就可以了。
选完这一步,OpenClaw 就会正式加载飞书模块,接着它会找你要刚才在'飞书开放平台'申请的 App ID 和 App Secret,复制粘贴过来就可以了。
- 飞书连接模式选择:
◆ Feishu connection mode │ ● WebSocket (default) │ ○ Webhook └
选择第一个 websocket。为什么选 WebSocket 而不是 Webhook? Webhook (麻烦):需要公网 IP 或复杂的内网穿透(比如 cpolar)。飞书服务器主动'推'消息给你,如果你家里的 Mac 防火墙没关或者 IP 变了,它就找不到了。 WebSocket (推荐):这是专门为本地部署设计的。你的 Mac 会主动和飞书建立一个长连接。只要你的 Mac 能上网,飞书的消息就能传进来。不需要内网穿透,不需要公网 IP。
- 区域选择:
◆ Which Feishu domain? │ ● Feishu (feishu.cn) - China │ ○ Lark (larksuite.com) - International └
中国飞书用户直接选择第一个就好了,这个和有没有梯子没关系,只要是用中国手机号注册的那数据就在 feishu.cn 里面。
- 权限选择:
◆ Group chat policy │ ● Allowlist - only respond in specific groups │ ○ Open - respond in all groups(requires mention) │ ○ Disabled - don't respond ingroups └
初次配置选择 allowlist,后续挑选可聊天对象要输出 id 时,直接留空,enter 键跳过。现在先只让机器人和你私聊,想拉入群聊后续可以再加名单。 放一个对比给大家参考,有别的需求也可以视情况选择。
-
Allowlist:如果你打算把机器人拉进特定的工作群,选这个。机器人只在你指定的群里说话。这样可以防止它在不相关的群里乱插话,也能省钱(防止别人在群里疯狂艾特它,消耗你的 DeepSeek Token 余额)。
-
Open:如果你想在任何群里都能随时召唤它,选这个。只要你在群里 @机器人,它就会回复。不需要手动维护白名单。注意:它必须被 @(提及)才会响应,不会监听群里的每一句话(除非你开启了特殊设置),所以隐私相对有保障。 ❌ **为什么不选 Disabled?**因为你之后可能需要建一个专门的'服务器监控群'这种工作群,如果选了 Disabled,它在群里就变哑巴了。
-
联网设置:
Search provider │ ● Brave Search (Structured results · country/language/time filters) │ ○ Gemini (Google Search) │ ○ Grok (xAI) │ ○ Kimi (Moonshot) │ ○ Perplexity Search │ ○ Skip for now └
这个直接选最后一个跳过,联网搜索还是要付费,有需求的话可以配一下第一个,没有强需求的话 ds 深度思考也够用了。
- 安装技能:
Configure skills now? (recommended) │ ● Yes / ○ No
选择 yes,为 OpenClaw 配置相关功能。这个依据自己的功能要求选择,没有什么强制要求。我希望它能操控我的备忘录帮我做一些笔记和提醒事项,以及我会有一些前端开发和后端运维的工作,以及有一丢丢想分析股票的需求。所以勾选了下述内容。 📊 model-usage:它能帮你统计 DeepSeek 消耗了多少 Token,花了多少钱。防止你写代码时循环调用导致余额瞬间归零。 🐙 github:它可以让 AI 帮你提交代码(Commit)、推送(Push)以及管理你的仓库。 📄 nano-pdf:如果你下载了一些股票的 PDF 研究报告,勾选这个后,你可以把 PDF 丢给 AI 让他帮你总结要点。 🧾 summarize:它可以快速总结长文章或长网页内容。 📝 apple-notes 和 ⏰ apple-reminders:在 mac 上用原生备忘录和提醒事项。
-
接下来一连串询问直接按默认来就行,基本上都是多余的付费选项,包括要不要开通位置服务这些,刚开始全部拒绝就行。
-
允许的钩子:
Enable hooks? │ ◻ Skip for now │ ◻ 🚀 boot-md │ ◻ 📎 bootstrap-extra-files │ ◻ 📝 command-logger │ ◻ 💾 session-memory └
● 💾 session_memory:作用:让机器人拥有'短期记忆'。为什么选:做代码修改时,你需要它记得上一句话说了什么。 ● 📝 command_logger:作用:记录它执行过的所有终端指令。为什么选:做后端运维的话,万一 AI 刚才运行了一个 rm -rf 或者改错了某个配置文件,可以通过日志追溯它到底干了什么。其余的视自己情况。
- 交流的界面:
How do you want to hatch your bot? │ ● Hatch in TUI (recommended) │ ○ Open the Web UI │ ○ Do this later
直接选 ● Hatch in TUI (recommended)。为什么选这个?
- 实时监控:TUI(终端用户界面)会直接在你的 Mac 终端里显示运行日志。你可以亲眼看到 DeepSeek 是如何通过 WebSocket 连接飞书的。如果中间报错了(比如网络断了或 Key 填错了),在这里能立刻看到原因。
- 一键运行:选这个会立即激活你的机器人。
- 调试方便:对于做后端运维的你来说,看终端日志是最自然、最直观的方式。
理论上来说应该可以和 ai 聊天了,但刚刚 ds 的配置还是有问题的,现在还需要手动调整一下。
│ ◇ How do you want to hatch your bot? │ Hatch in TUI (recommended) openclaw tui - ws://127.0.0.1:18789 - agent main - session main session agent:main:main Wake up, my friend! ⚠️ Agent failed before reply: Unknown model: anthropic/deepseek-chat. Logs: openclaw logs --follow gateway connected | idle agent main | session main (openclaw-tui)| anthropic/deepseek-chat | tokens ?/200k
由于我们手动输入模型的时候只输入了 deepseek-chat,系统没有识别出对应的 ds 这个 provider 所以连接失败了。
最后一步配置成功
- 浏览关于 OpenClaw 的配置文件,main 文件夹下有两个文件夹,分别是 auth 和 sessions。auth 保存 API-KEY 的内容,sessions 保存会话内容,不用管。
- 修改
~/.openclaw/agents/main/agent/auth-profiles.json
nano ~/.openclaw/agents/main/agent/auth-profiles.json
刚开始可能是这样的
{"version":1, "profiles":{"openai:default":{"type":"api_key", "provider":"openai", "key":"sk-xx"}}}
修改:
{"version":1, "profiles":{"deepseek:default":{"type":"api_key", "provider":"deepseek", "key":"sk-你的 DeepSeek_API_KEY 這裡貼上"}}}
- 修改
openclaw.json文件(最好找到原有的文件并在上面添加,一般来说都能找到,没有的话就只能新建一个)
nano ~/.openclaw/openclaw.json
将以下配置添加到 openclaw.json 文件中:注意:如果连接不上,baseurl 可以在后面加/v1 尝试 agents 部分原本有 model 是因为设置了默认 model,不用完全删掉,只需要在 deepseek-chat 和 deepseek-reasoner 前面加上 deepseek/就可以了。
{"models": {"mode": "merge","providers": {"deepseek": {"baseUrl": "https://api.deepseek.com","apiKey": "${DEEPSEEK_API_KEY:-}","api": "openai-completions","models": [{"id": "deepseek-chat","name": "DeepSeek Chat (V3.2)","reasoning": false,"input": ["text"],"cost": {"input": 0.00000028,"output": 0.00000042,"cacheRead": 0.000000028,"cacheWrite": 0.00000028 },"contextWindow": 128000,"maxTokens": 8192 },{"id": "deepseek-reasoner","name": "DeepSeek Reasoner (V3.2)","reasoning": true,"input": ["text"],"cost": {"input": 0.00000028,"output": 0.00000042,"cacheRead": 0.000000028,"cacheWrite": 0.00000028 },"contextWindow": 128000,"maxTokens": 65536 }]}}},"agents": {"defaults": {"models": {"deepseek/deepseek-chat": {},"deepseek/deepseek-reasoner": {}}}}}
- 设置环境变量:保险起见再设置一次环境变量放 API KEY
export DEEPSEEK_API_KEY="your-api-key-here"
- 验证 (1)连接情况
openclaw models list |grep deepseek
若为以下情况,则为正确
deepseek/deepseek-chat text 125k no yes default,configured
deepseek/deepseek-reasoner text 125k no yes configured
(2)重新设置默认模型(可选)
openclaw models set deepseek/deepseek-reasoner
- 都成功了的话,再次运行 openclaw tui,应该就大功告成啦!下面大概会出现类似的显示,有⚠️没关系,可以试着说说话啦,警告可能只是之前没清干净。
gateway connected | idle agent main | session main (openclaw-tui)| deepseek/deepseek-chat | tokens 36k/128k (28%)
成功

