Codex 跑 lark-cli 报 401?TaoToken 的 Base URL 别多带 /v1 原文教大家把飞书云文档进阶命令整段复制给 Codex让它自己调 lark-cli 找文件夹、建文档。但我把那句「帮我在飞书里找到“工作周报”文件夹然后创建文档」发出去Codex 还没输出任何计划终端先跳出一行401 Unauthorized。这个 401 不是飞书那边拒绝而是 Codex 自己连模型通道时没通过验证后面的 lark-cli 自然一句都没执行。排障思路其实一句话先到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建一把 API Key把 Codex 的模型通道指到 TaoTokenBase URL 写 https://taotoken.net/api不要再往后面加/v1。很多人在原文里复制「帮我找文件夹」「帮我创建文档」时默认 Codex 一定能听懂。但 Codex 要先连上模型才会思考、才会决定调用 lark-cli模型通道 401它连「好的」都回不了。这篇就从 401 的现场往后查先确认是不是通道问题再去拿 Key、改~/.codex/config.toml最后把原文那两个核心动作drive search和docs create重新跑通。1. 401 Unauthorized 出现在回复之前先别怪 lark-cli1.1 Codex 和 lark-cli 谁先工作Codex 是终端里的 AI 编程代理lark-cli 是它要调用的飞书命令行工具。原文说的是「命令直接复制发给 Codex」很多人只看到了后半句忽略了前半句的前提Codex 要能正常调用模型它才知道怎么用 lark-cli。你把「帮我在飞书里找文件夹」发给 Codex 后它会先向配置好的模型 API 发一次请求。拿到这个请求的响应它才能理解你的意图才知道要执行lark-cli drive search。如果模型 API 返回 401整个过程在第一环就断了。lark-cli 有没有装、飞书凭证对不对都还没走到那一步。所以收到 401 时第一个判断是Codex 是在回答前就报错还是回答到一半再报错。前者是模型通道失效后者才可能是 lark-cli 自己的飞书凭证失效。可以这样理解lark-cli 是已经插在电脑上的飞书插头Codex 才是那个下指令的人插头没坏但下指令的人还没醒后面全是白搭。1.2 这个 401 到底错在哪401 的完整含义是「未认证」你的请求没带对身份或身份被服务端拒绝。放在 Codex 这里常见的原因有三处。第一API Key 复制得不完整或者复制到一把已经失效的旧 Key。第二Key 本身没问题但 Base URL 填错了地方填成了官网页面而不是 API 入口。第三Base URL 后面多写了/v1导致请求被送到一个不存在的路径服务端也按未授权处理。这三处都和模型通道有关和 lark-cli 无关。你不需要去动飞书开放平台的应用凭证也不需要重新执行npx skills add larksuite/cli。先把你现在手上的 API Key 和 Base URL 对一遍比重新安装工具更省时间。2. 先到 TaoToken 拿 KeyBase URL 只填到 /api2.1 官网页面和 API 入口是两回事TaoToken 提供的是统一 API 兼容通道官网页面和接口地址要分开记。注册账号、创建 API Key、看模型广场、查用量都走官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 。而填进 Codex 的 Base URL 是https://taotoken.net/api末尾没有/v1。创建 Key 的操作不复杂打开 TaoToken注册登录进控制台的 API Keys 页面点新建把生成的 Key 复制出来。后面我会一直用YOUR_API_KEY占位你换成自己复制的字符串即可。官网页面上一般会显示一把完整 Key也可以随时重建旧 Key 会立即失效。2.2 为什么特别强调别多写 /v1很多 AI API 提供商要求客户端请求里带/v1例如 OpenAI 的https://api.openai.com/v1。但 TaoToken 的接入地址本身就是https://taotoken.net/api它已经包含了通道根路径。如果你图省事写成https://taotoken.net/api/v1请求会落到一个不存在的路径网关直接拒绝表现也是 401 或 404 这类鉴权/路由错误。记住这条边界https://taotoken.net/api只用于填进工具、终端命令、环境变量而https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end只用于浏览器里注册、看模型、管理 Key。两者不要互相替换更不能把 UTM 参数加进 API 地址。3. 在 ~/.codex/config.toml 里新增 model_provider3.1 最小可用配置示例Codex 的配置文件位于~/.codex/config.toml。你不需要动其他字段只需在文件末尾加一段 provider 配置并把默认 provider 指到它model 你的模型ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY上面model里面的内容先不要照着抄你要去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的模型广场找一个模型 ID 填进去。不同时期模型广场的列表会变凭记忆写一个不确定的模型 ID会在请求阶段直接报 model not found比 401 更让人迷惑。env_key是 Codex 读取 API Key 用的环境变量名。你可以沿用TAOTOKEN_API_KEY也可以自己改成别的名称但一定要和下面的环境变量保持完全一致。3.2 让 Codex 读到这把 Key保存配置后在终端里导出 Keyexport TAOTOKEN_API_KEYYOUR_API_KEY然后重新启动 Codex。这里说的重启不是只开一个新终端而是要确保 Codex 进程重新加载环境变量和 config.toml。如果你是用codex命令启动的关掉当前终端再重新打开最省事。常见误区是配置写在文件里Key 也 export 了但没重启Codex 还是拿旧配置去请求于是继续 401。按「改配置 → 导出 Key → 重启 Codex」三步走完这条通道才算真接上。4. 重新跑通原文的前两步先 drive search再 docs create4.1 让 Codex 先找到文件夹前面通道修好现在就回到原文的核心流程。先让 Codex 执行搜索确认它能拿到文件夹 IDlark-cli drive search --query 项目周报Codex 会把这个命令解释成「去飞书搜一遍名字带‘项目周报’的云空间项目」然后返回类似fld_xxxxxxxx的文件夹 ID。你也可以用lark-cli drive list列出云空间顶层文件自己挑一个文件夹。这一步原来最容易失败不是命令写错而是 Codex 被 401 挡住后根本执行不到。现在通道通了你只要把这句话发给 Codex「帮我在飞书里搜索名称为‘项目周报’的文件夹存在就返回它的 ID不存在就告诉我缺少什么权限。」4.2 在文件夹下创建 Markdown 文档拿到文件夹 ID 后可以手动指定建文档lark-cli docs create --title 2026年5月第一周周报 --markdown # 本周完成\n- 跑通 TaoToken 通道\n- 恢复 lark-cli 调用 --folder fld_xxxxxxxx注意--folder的值换成上一步拿到的真实 ID不要照抄字面量。原文推荐的做法是让 Codex 自动完成搜索再创建省去手动复制。你可以把这整段发给 Codex「帮我在飞书里找到‘项目周报’文件夹没有就新建然后在这个文件夹里创建一篇周报标题叫《2026年5月第一周周报》内容用 Markdown要含一个完成事项表格创建完把文档链接返回。」这段自然语言提示词里同时包含了「搜索文件夹」「创建文档」「返回链接」三个动作Codex 会拆成drive search和docs create两次调用。如果 Base URL 还是错的它会先报 401配好之后它才会像原文描述的那样一步步执行。4.3 自动从消息和日历生成周报原文还提到一个更高阶的玩法从飞书消息和日历提取内容生成周报。这条链路依赖 lark-cli 的读权限和模型通道是否通不冲突。通道修好后你可以这样发「读我本周飞书群聊里的关键进展和日历上的会议整理成一份带表格的周报用 docs create 放到‘项目周报’文件夹下标题里带本周日期最后把链接给我。」Codex 会先调用搜索或列表命令确定文件夹再聚合内容再创建文档。它执行这些动作时不会再被模型通道卡住。5. 排障对照多写 /v1、Key 失效、飞书凭证失效5.1 多写 /v1 为什么最容易误判把 Base URL 写成https://taotoken.net/api/v1请求会被送到一个不存在的资源路径。网关返回的往往是 401 或 404日志里不会写「你多了个 /v1」只会写unauthorized或not found。所以排障时优先检查配置里有没有多这个尾巴。一个判断技巧是只改 Base URL 不动 Key如果报错从 401 变成 404说明身份验证其实已经通过是路径不对多半就是/v1的事。如果继续 401再看 Key 是否复制完整、有没有前后空格。注意Key 不要发到公共聊天窗口里泄露后要在控制台立即重建。5.2 区分模型通道 401 与 lark-cli 的 401lark-cli 调用飞书 API 时用的是飞书开放平台的应用凭证它也有可能报 401。区分方法很简单Codex 根本没有发起 lark-cli且输出一开始就是红字 401那就是模型通道Codex 正常回答你的话、然后 lark-cli 单独报 401那才是飞书凭证过期需要去飞书开放平台重新配置。本文流程只解决前者。如果你改完 config.toml模型通道 401 消失但 lark-cli 执行时依然报权限错误请检查飞书应用是否开启了「云文档读写」权限而不是继续改 Base URL。6. 原来的 Skill 流程不用重建直接继续用6.1 已装的 lark-cli Skill 不受影响你通过npx skills add larksuite/cli装好的 lark-cli Skill本质是把一组命令和使用说明交给 Codex。模型通道修好后Codex 能读取 Skill 里的说明并使用这些命令。重启 Codex 时它会重新扫描已安装的 Skill不需要重新安装。假如你发现/skills列表里没有 lark-cli先别怀疑 TaoToken可能是环境变量没加载或 Codex 的工作目录不对。回到第 3 节确认export那行和config.toml都存在再重启一次。6.2 建专属 Skill 也不影响原文教的 Skill 创建方法仍然适用。例如你常写周报可以新建一个feishu-weekly-report文件夹里面放SKILL.md--- name: feishu-weekly-report description: 当用户要求写周报、月报、总结时自动触发使用 lark-cli 搜索飞书内容并创建文档。 --- 步骤 1. 用 lark-cli 查询最近的飞书消息和日历。 2. 整理成结构化 Markdown包含表格。 3. 用 lark-cli docs create 创建文档放到“项目周报”文件夹。 4. 返回文档链接给用户。description写得越具体Codex 越知道什么时候触发它。同一个 SKILL.md 在通道修好后就能被 Codex 正确执行跟 TaoToken 没有冲突。6.3 配好之后去控制台对一下这次调用等 Codex 把文档链接返回说明模型通道和 lark-cli 都正常了。你可以顺手在 模型对话 里用同一把 Key 发一条消息确认模型 ID 与 Base URL 没有错位再回到 控制台 API Keys 看这把 Key 的调用记录确认刚才建文档的过程已经记上账。如果担心 Key 存在终端历史里建议在控制台重建一把把旧的删掉。长期写文档的话Coding Plan 页面可以顺便看看套餐够不够以后在 Claude Code 里走同一套 Key参考 Claude Code 接入文档 就能少走同样的弯路。