1. 飞书私聊 OpenClaw 的真实痛点群组 太绕qwen-max 还收费飞书机器人接入 OpenClaw 这件事很多人第一步就卡住了。默认玩法是把机器人拉进群然后靠 机器人 触发对话但实际用起来很别扭群里消息一多 容易被淹没私聊窗口明明开着发消息却提示access not configured好不容易配对成功模型又默认走 qwen-max而 qwen-max 在默认通道下没有免费额度调用直接报错。我自己踩过的坑是飞书自建机器人默认只处理群组事件私聊消息需要单独开权限OpenClaw 的配对机制又要求管理员在服务器终端执行openclaw pairing approve否则用户 ID 一直处于未授权状态。更麻烦的是模型配置默认的千问 qwen-max 没有免费额度必须换成有免费额度的模型或者通过统一 API 通道接入。这篇就聚焦一个具体场景飞书自建机器人私聊 OpenClaw不走群组 同时把 qwen-max 换成免费可用的模型。我会给出可复制的settings.json骨架、飞书事件订阅配置以及私聊消息直达 OpenClaw 的验证动作。适合已经在跑 OpenClaw、想省掉群组 这一步的开发者也适合刚接触飞书机器人、想一次性把权限和模型都配对好的小白。核心检索词先摆出来飞书机器人、OpenClaw、千问、qwen-max 免费额度、settings.json 配置、私聊直连。下面按步骤来每一步都能直接抄。2. 前置准备TaoToken 统一 Key 与 API 通道接入点在改settings.json之前先把 API 通道准备好。OpenClaw 默认的千问 qwen-max 没有免费额度直接调用会返回额度不足。我的做法是走 TaoToken 的统一 Key 和 API 通道把模型请求统一收口到一个接入点这样换模型、加模型都不用改 OpenClaw 的代码只改配置。TaoToken 的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 接入点是 https://taotoken.net/api 注意 API 地址后面不加 UTM 参数直接写https://taotoken.net/api就行。你需要先拿到一个 API Key。进入控制台创建 Key路径是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 在 API Keys 页面生成。生成后复制保存后面填进settings.json的apiKey字段。模型选择上qwen-max 默认没有免费额度建议换成有免费额度的千问系列模型比如 qwen-turbo 或 qwen-plus 的免费档。具体哪个模型当前有免费额度以控制台模型列表为准不要凭记忆写死。我实测下来把模型名改成qwen-turbo后私聊对话能正常返回不再报额度错误。如果你还想验证模型对话是否走通可以先用模型对话页面测一下 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。在页面里选好模型发一句「你好」能返回内容就说明 Key 和通道没问题。这一步能帮你排除掉「是 Key 错了还是 OpenClaw 配置错了」的干扰。注意API Key 不要写进前端代码或公开仓库settings.json如果会提交到 Git记得把 Key 放到环境变量里配置文件里用占位符引用。3. 可复制配置settings.json 骨架与飞书事件订阅3.1 settings.json 骨架OpenClaw 的配置文件一般在项目根目录或~/.openclaw/下文件名是settings.json。下面是一个可复制的骨架重点看feishu和model两段{ feishu: { appId: cli_xxxxxxxxxxxx, appSecret: xxxxxxxxxxxxxxxxxxxxxxxx, verificationToken: xxxxxxxxxxxxxxxx, encryptKey: xxxxxxxxxxxxxxxx, eventMode: private, allowPrivateChat: true, requireMentionInGroup: false }, model: { provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, model: qwen-turbo, temperature: 0.7, maxTokens: 2048 }, openclaw: { pairingRequired: true, autoApprove: false } }几个关键字段解释一下。eventMode设为private表示优先处理私聊事件allowPrivateChat设为true打开私聊通道requireMentionInGroup设为false这样群里不 也能触发但我们的主场景是私聊这个字段主要是防止群组逻辑干扰。model.provider用openai-compatible因为 TaoToken 的 API 是兼容 OpenAI 格式的baseUrl填https://taotoken.net/apimodel填有免费额度的千问模型名。3.2 飞书事件订阅配置光改 OpenClaw 还不够飞书开放平台那边要开私聊事件权限。进入飞书开放平台找到你的自建应用在「事件订阅」里添加im.message.receive_v1事件。这个事件同时覆盖群聊和私聊但私聊消息的chat_type是p2pOpenClaw 会根据这个字段分流。然后在「权限管理」里确认勾选了以下权限im:message、im:message:send_as_bot、im:chat。私聊场景还需要im:message.p2p_msg:readonly这个权限容易被漏掉漏了就会出现「群里能回、私聊没反应」的情况。事件订阅的请求地址填你 OpenClaw 服务的公网地址比如https://your-domain.com/feishu/event。如果本地调试可以用内网穿透工具把本地端口暴露出去但注意不要用任何违规的网络工具用正规的隧道服务即可。填好后点「验证」飞书会发一个 challenge 请求OpenClaw 需要正确返回challenge值验证才能通过。3.3 配对码与管理员审批私聊第一次发消息时OpenClaw 会返回类似这样的提示OpenClaw: access not configured. Your Feishu user id: ou_ce4274fd2c8cdb0016a50d8c31550000 Pairing code: T69YJPKA Ask the bot owner to approve with: openclaw pairing approve feishu T69YJP00这说明你的飞书用户 ID 还没被授权。管理员需要在运行 OpenClaw 的电脑终端执行审批命令。Windows 用 CMD 或 PowerShellMac/Linux 用终端openclaw pairing approve feishu T69YJP00注意配对码要和提示里的一致大小写敏感。执行成功后会返回pairing approved之类的提示。审批完成后再在飞书私聊里发一条消息就能直达 OpenClaw 了。4. 验证请求私聊消息直达 OpenClaw 与 qwen-max 免费额度确认配置改完、配对审批通过后做三步验证。第一步重启 OpenClaw 服务让settings.json生效。如果你是用npm run start或openclaw start启动的先停掉再启动。启动日志里应该能看到feishu event mode: private和model: qwen-turbo之类的输出确认配置被读取。第二步在飞书里找到你的自建机器人点开私聊窗口直接发一句「你好测试一下」。不要 不要拉群。正常情况下几秒内会收到 OpenClaw 的回复。如果回复内容是模型生成的说明私聊通道和模型通道都通了。第三步确认模型走的是免费额度。在 TaoToken 控制台的用量页面看这次请求的记录模型名应该是你配置的qwen-turbo或其它免费模型而不是qwen-max。如果看到qwen-max说明settings.json里的model字段没生效检查是不是有多个配置文件或者环境变量覆盖了配置。你也可以用 curl 直接测 API 通道排除 OpenClaw 的干扰curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: qwen-turbo, messages: [{role: user, content: 你好}] }返回里有choices[0].message.content就说明通道正常。如果返回model not found说明模型名写错了去控制台模型列表核对。如果返回额度相关错误说明这个模型当前没有免费额度换一个。提示私聊验证成功后群组 的逻辑可以保留也可以关掉。如果你只想用私聊把requireMentionInGroup设为true这样群里必须 才触发避免群消息误触。5. 本篇常见错排查access not configured 与额度报错5.1 access not configured 反复出现最常见的原因是配对审批没做或者审批的用户 ID 和当前发消息的用户 ID 不一致。飞书用户 ID 是ou_开头的一串字符审批时要确认这个 ID 和提示里的一致。如果换了飞书账号测试需要重新审批。另一个原因是settings.json里pairingRequired设为true但autoApprove也是false这是正常的必须手动审批。如果你想省掉审批步骤可以把autoApprove设为true但不建议在生产环境这么做任何人都能触发机器人。5.2 私聊没反应群里却正常这种一般是飞书权限没开全。检查「权限管理」里有没有im:message.p2p_msg:readonly没有就补上然后重新发布应用版本。飞书权限变更后需要重新发布才生效很多人改完权限直接测试发现没变化就是漏了发布这一步。还有一种情况是事件订阅地址只配了群组事件私聊事件没订阅。确认im.message.receive_v1已经添加并且请求地址能正确处理p2p类型的消息。5.3 qwen-max 额度报错默认的千问 qwen-max 没有免费额度报错信息一般是insufficient quota或free quota exhausted。解决办法就是把settings.json里的model字段改成有免费额度的模型比如qwen-turbo。改完重启服务再发消息测试。如果你不确定哪个模型有免费额度去 TaoToken 控制台的模型列表看每个模型会标注是否免费以及免费额度大小。不要凭网上的旧文章写死模型名额度政策会变以控制台实时信息为准。5.4 配置文件不生效OpenClaw 可能读取多个位置的配置优先级不同。常见的是项目根目录的settings.json和环境变量同时存在环境变量优先级更高。检查有没有OPENCLAW_MODEL之类的环境变量覆盖了配置。另外改完配置一定要重启服务热重载不一定支持所有字段。6. 长期编码与 Agent 场景的接入建议私聊通道跑通后如果你打算把 OpenClaw 用在长期编码或 Agent 场景比如让飞书机器人帮你跑代码、查文档、做自动化任务建议把模型通道固定下来不要频繁换 Key。TaoToken 的 Coding Plan 适合这种长期场景入口是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 可以按套餐使用不用每次单独充额度。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有 OpenAI 兼容接口的详细说明包括流式输出、函数调用等。如果你用的是 Claude Code 或 Anthropic 风格的客户端参考 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 的配置方式把baseUrl指向https://taotoken.net/api即可。API Keys 管理页面还是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 建议给 OpenClaw 单独建一个 Key方便按项目统计用量也方便出问题时快速吊销。最后说一个实用技巧把settings.json里的model字段做成环境变量引用比如model: ${OPENCLAW_MODEL}这样换模型不用改配置文件改环境变量重启就行。配合 TaoToken 控制台的用量统计能清楚看到每个模型的实际消耗避免免费额度用完后还在傻等。