跳到主要内容 macOS 配置 OpenClaw 接入 DeepSeek 大模型及飞书 | 极客日志
Shell / Bash Node.js AI
macOS 配置 OpenClaw 接入 DeepSeek 大模型及飞书 介绍在 macOS 上配置 OpenClaw 开源 AI Agent 框架,接入 DeepSeek 大模型并集成飞书小助手。步骤包括安装 Node.js 环境、运行一键安装脚本、配置自定义 DeepSeek 提供商(API Key 和 Base URL)、创建飞书企业自建应用并获取凭证、设置权限与事件回调、修改本地配置文件以识别 DeepSeek 模型,最后验证连接并启动 TUI 界面进行交互。
PhpPioneer 发布于 2026/3/21 更新于 2026/4/18 4 浏览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 directly OpenClaw config) │ ○ Use external secret provider └
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
key
in
这里选择第一个。然后把得到的 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:
由于我们手动输入模型的时候只输入了 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"
openclaw models list |grep deepseek
deepseek/deepseek-chat text 125k no yes default,configured
deepseek/deepseek-reasoner text 125k no yes configured
openclaw models set deepseek/deepseek-reasoner
都成功了的话,再次运行 openclaw tui,应该就大功告成啦!下面大概会出现类似的显示,有⚠️没关系,可以试着说说话啦,警告可能只是之前没清干净。
gateway connected | idle agent main | session main (openclaw-tui)| deepseek/deepseek-chat | tokens 36k/128k (28%)
成功