首页/新闻资讯/正文详情

lark-cli `wiki +move-to-drive` 完全指南:将飞书 Wiki 节点移入 Drive 文件夹的异步移动协议与续跑实践

发布时间:2026/9/23 4:35:42 来源:云帆数科 栏目:资讯中心
lark-cli `wiki +move-to-drive` 完全指南:将飞书 Wiki 节点移入 Drive 文件夹的异步移动协议与续跑实践
lark-cliwiki move-to-drive完全指南将飞书 Wiki 节点移入 Drive 文件夹的异步移动协议与续跑实践【免费下载链接】cliThe official Lark/飞书 CLI tool, maintained by the larksuite team — built for humans and AI Agents. Covers core business domains including Messenger, Docs, Base, Sheets, Calendar, Mail, Tasks, Meetings, and more, with 200 commands and 20 AI Agent Skills.项目地址: https://gitcode.com/gh_mirrors/cli414/cli本文以 lark-cli飞书官方 CLI的wiki move-to-driveshortcut 为研究对象完整讲解「把已有 Wiki 节点移出知识库、放入指定 Drive 文件夹或『我的空间』根目录」这一写操作的命令用法、异步任务轮询协议、超时续跑机制、权限影响与底层源码实现。读完本文你将能正确区分wiki move、wiki move-to-drive与drive move的适用场景理解move_wiki_to_docs异步协议的数值状态语义并能在轮询超时后用drive task_result --scenario wiki_move_to_drive安全续跑任务。功能概述wiki move-to-drive是 lark-cli 中用于将已有 Wiki 节点移出知识库Wiki 空间放入 Drive 文件夹或当前调用身份的「我的空间」根目录的快捷命令shortcut。它是会改变文档归属与权限继承的写入操作且该操作始终创建异步任务——shortcut 会按固定窗口自动轮询窗口内未完成时返回可续跑命令交由调用方继续查询。命令定义见 shortcuts/wiki/wiki_move_to_drive.go其在 shortcut 注册表中声明为var WikiMoveToDrive common.Shortcut{ Service: wiki, Command: move-to-drive, Description: Move a wiki node to a Drive folder, polling the async task until it finishes, Risk: write, Scopes: []string{space:document:move, wiki:space:read}, AuthTypes: []string{user, bot}, // ... }前置条件使用前先阅读 skills/lark-shared/SKILL.md了解认证方式、--as user|bot身份模型、JSON 输出契约与高风险操作安全规则。何时使用四类移动场景的取舍移动文档存在四条路径选择依据是源对象类型与目标位置源对象目标位置命令Wiki 节点Wiki 空间或 Wiki 父节点wiki moveDrive 文档Wiki 空间或 Wiki 父节点wiki moveWiki 节点Drive 文件夹或「我的空间」根目录wiki move-to-driveDrive 文件 / 文件夹Drive 文件夹或根目录drive move判断口诀源对象已是 Wiki 节点、目标是 Wiki 空间/父节点 →wiki movenode 模式源对象还是 Drive 文档、目标是「迁入知识库 / 挂到某个 Wiki 页面下」→wiki movedocs_to_wiki 模式源对象是 Wiki 节点、目标是 Drive 文件夹或根目录 →wiki move-to-drive本文主题源对象已是 Drive 文件/文件夹、目标也是 Drive 文件夹 →drive move。完整的场景决策树见 skills/lark-wiki/references/lark-wiki-move.md 与 skills/lark-wiki/SKILL.md 中的「快速决策」一节其中明确要求用户要把已有 Wiki 节点移出知识库时必须使用wiki move-to-drive不要使用wiki move或drive move。关键前置--node-token必须是 Wiki 节点 token--node-token必须是 Wiki 节点 token形如wikcnXXX不是底层文档的obj_token形如doxcnXXX。无法判断时先执行解析命令确认lark-cli wiki node-get --node-token URL_OR_TOKENwiki node-get会统一解析 node_token / obj_token / 飞书 URL返回data.space_id、node_token、obj_token、obj_type等字段作为后续移动的输入依据。这一点在 skills/lark-wiki/SKILL.md 中有强约束「获取或解析 Wiki 节点统一使用wiki node-get包括只为获取space_id、node_token、obj_token或obj_type的中间步骤」。命令用法与参数详解基本命令# 移到指定 Drive 文件夹 lark-cli wiki move-to-drive \ --node-token WIKI_NODE_TOKEN \ --folder-token TARGET_FOLDER_TOKEN \ --as user # 移到当前调用身份的「我的空间」根目录 lark-cli wiki move-to-drive \ --node-token WIKI_NODE_TOKEN \ --as user # 预览提交任务和轮询任务两步请求 lark-cli wiki move-to-drive \ --node-token WIKI_NODE_TOKEN \ --folder-token TARGET_FOLDER_TOKEN \ --dry-run参数表参数必填说明--node-token是要移出知识库的 Wiki 节点 token--folder-token否目标 Drive 文件夹 token省略时移动到当前调用身份的「我的空间」根目录参数校验的源码实现从 shortcuts/wiki/wiki_move_to_drive.go 的validateWikiMoveToDriveSpec可以看到--node-token缺失直接返回--node-token is required的校验错误SubtypeInvalidArgumentnode-token 与 folder-token 都会经过validateOptionalResourceName做资源名合法性校验如拒绝../folder这类路径注入写法。对应测试 shortcuts/wiki/wiki_move_to_drive_test.go 中TestValidateWikiMoveToDriveSpec覆盖了「必须传 node-token」「拒绝不安全 folder-token」「允许省略 folder-token」三种情形。另外请求体的构造逻辑wikiMoveToDriveSpec.RequestBody是仅当--folder-token非空时才写入folder_token字段省略时请求体为空表示移动到「我的空间」根目录。TestWikiMoveToDriveRequestBodyOmitsEmptyFolder精确验证了这一行为。异步协议与轮询行为wiki move-to-drive的移动请求永远创建异步任务shortcut 按以下两步协议执行提交移动任务POST /open-apis/wiki/v2/nodes/{node_token}/move_wiki_to_docs响应中取得完整、不可拆分的task_id。若响应缺失task_idCLI 会以SubtypeInvalidResponse内部错误拒绝见TestWikiMoveToDriveExecuteRejectsMissingTaskID。轮询任务状态GET /open-apis/wiki/v2/tasks/{task_id}?task_typemove_wiki_to_docs读取data.task.move_wiki_to_docs_result。数值状态语义轮询结果的状态码是数值类型语义固定状态值含义status1处理中processingstatus0成功successstatus-1失败failure源码中以常量固化见 shortcuts/wiki/wiki_move_to_drive.gowikiMoveToDriveTaskType move_wiki_to_docs wikiMoveToDriveResult move_wiki_to_docs_result wikiMoveToDriveStatusSuccess 0 wikiMoveToDriveStatusProcessing 1 wikiMoveToDriveStatusFailure -1任务查询必须使用task_typemove_wiki_to_docs、字段move_wiki_to_docs_result和数值状态不要回退到其他 task type、result 字段或字符串状态。解析器parseWikiMoveToDriveTaskStatus对「缺字段」「status 缺失」「status 为字符串、小数或未知数值」都会直接判定为非法响应——测试TestParseWikiMoveToDriveTaskStatus用null、processing字符串、0.5、2四类反例验证了这种严格性。有限轮询窗口最多轮询 30 次每次间隔 2 秒对应wikiMoveToDrivePollAttempts 30、wikiMoveToDrivePollInterval 2 * time.Second总窗口约 60 秒轮询窗口内成功时返回readytrue并尽可能返回obj_token、obj_type和url仍在处理中时返回readyfalse、timed_outtrue、完整task_id和next_command超时不代表任务失败任务进入失败态时返回结构化错误SubtypeServerError消息形如wiki move-to-drive task %s failed: %s若任务已创建但每次状态查询都失败返回带 hint 的错误并在 hint 中给出续跑查询命令轮询期间的上下文取消如context.Canceled/DeadlineExceeded会被包装为网络层错误SubtypeNetworkTransport/SubtypeNetworkTimeout同样附上续跑 hint避免吞掉取消语义。pollWikiMoveToDriveTask的健壮性由 shortcuts/wiki/wiki_move_to_drive_test.go 中的多个用例保障TestPollWikiMoveToDriveContinuesFromProcessingToSuccessprocessing→success 连续轮询、TestPollWikiMoveToDriveRecoversFromTransientError瞬时网络错误后恢复、TestPollWikiMoveToDriveDoesNotSwallowFinalCancellation保留取消错误、TestRunWikiMoveToDriveFailureIsTypedAPIError失败态返回类型化 API 错误。task_id的处理纪律task_id是服务端签名的 opaque ID可能包含多个连字符必须原样保存不能自行切分、截断或解析。即使任务查询响应省略了task.task_idCLI 也会回退为请求时使用的完整 IDparseWikiMoveToDriveTaskStatus中的回退逻辑确保续跑不丢 ID。典型返回成功{ node_token: wikcnXXX, folder_token: fldcnXXX, task_id: OPAQUE_TASK_ID, ready: true, failed: false, status: 0, status_msg: success, obj_token: doxcnXXX, obj_type: docx, url: https://example.feishu.cn/docx/doxcnXXX }成功时readytrueobj_token/obj_type/url指向移入 Drive 后的新文档资源可直接供下游命令使用。轮询窗口超时{ node_token: wikcnXXX, folder_token: , task_id: OPAQUE_TASK_ID, ready: false, failed: false, status: 1, status_msg: processing, timed_out: true, next_command: lark-cli drive task_result --scenario wiki_move_to_drive --task-id OPAQUE_TASK_ID --as user }超时返回的next_command是带完整续跑上下文的命令直接复制执行即可见下节。超时续跑drive task_result当轮询窗口结束任务仍在处理时使用drive task_result续跑lark-cli drive task_result \ --scenario wiki_move_to_drive \ --task-id COMPLETE_TASK_ID \ --as user身份与 profile 必须保持一致续跑必须保持和初始移动相同的--profile与--as user|bot身份否则可能收到权限错误。shortcut 返回的next_command会保留两者——wikiMoveToDriveTaskResultCommand在构造续跑命令时会读取当前 runtime 的 identity--as与ProfileName--profile并拼入命令测试TestRunWikiMoveToDriveTimeoutReturnsResumeCommand验证了--profile secondary与--as bot都被正确保留。续跑场景的底层映射drive task_result通过--scenario区分不同异步任务wiki_move_to_drive场景对应查询GET /open-apis/wiki/v2/tasks/{task_id}?task_typemove_wiki_to_docs该场景的返回契约见 skills/lark-drive/references/lark-drive-task-result.md{ scenario: wiki_move_to_drive, task_id: OPAQUE_TASK_ID, ready: true, failed: false, status: 0, status_msg: success, obj_token: doxcnXXX, obj_type: docx, url: https://example.feishu.cn/docx/doxcnXXX }字段语义readymove_wiki_to_docs_result.status0时为truefailedstatus0时为truestatus1表示仍在处理status/status_msg协议返回的数值状态与可读消息不要把字符串状态当作成功值解析obj_token/obj_type/url成功后新 Drive 文档的资源信息task_id签名后的 opaque ID可能包含多个连字符服务端响应省略task.task_id时回退为请求中的完整 ID。场景分发逻辑见 shortcuts/drive/drive_task_result.gowiki_move_to_drive是--scenario支持值之一另有import、export、task_check、wiki_move、wiki_delete_space、wiki_delete_node同一 shortcut 统一了所有异步任务的续跑查询接口。--dry-run时该场景展示一步查询请求。权限要求与影响本地 scope 预检查CLI 在发起命令前会做本地 scope 预检查。wiki move-to-drive声明的权限组合为用途scope移动写操作预检查space:document:move任务轮询读操作wiki:space:readShortcut.Scopes是全量必选ALL-required的预检模型若本地 token 已记录 scopes 且缺失任一权限命令会提示重新执行lark-cli auth login --scope ...。测试TestWikiMoveToDriveDeclaredContract对 scopes 与Riskwrite做了契约级断言。实现细节移动端点的权限集合wiki:wiki/wiki:node:move/space:document:move是 OR 语义而 shortcut 的Scopes是全量预检源码注释说明因此取注册表中最高优先级的space:document:move加上任务状态端点所需的wiki:space:read。权限模型变化重要影响调用方必须能移动源 Wiki 节点并能写入目标 Drive 文件夹成功后源节点会从 Wiki 树中消失目标文档改用 Drive 目标位置的权限模型原 Wiki 层级继承权限不再保留省略--folder-token时「根目录」属于当前--as身份user 与 bot 的可见资源范围可能不同bot 只能访问应用自己的资源查用户资源会返回空成功而非报错参见 skills/lark-shared/SKILL.md 的身份准则。高风险写入警示[!CAUTION] 这是会改变文档归属和权限继承的写入操作。执行前必须确认源 Wiki 节点、目标 Drive 位置和调用身份。Risk: write意味着这不是可逆的「挪个位置」移动后文档脱离 Wiki 的层级权限体系改用 Drive 文件夹的权限模型原 Wiki 继承权限随之失效。执行前务必通过wiki node-get确认源节点、通过drive侧命令确认目标文件夹并用--dry-run预览两步请求。dry-run两步请求编排--dry-run会展示完整的底层调用链不发起真实请求参见 skills/lark-shared/SKILL.md 安全规则第 3 条「目标命令支持--dry-run时用--dry-run预览危险请求」POST /open-apis/wiki/v2/nodes/{node_token}/move_wiki_to_docsBody 含可选的folder_token——提交移动任务GET /open-apis/wiki/v2/tasks/:task_id?task_typemove_wiki_to_docs——轮询任务结果。两步编排的 dry-run 实现在buildWikiMoveToDriveDryRun测试TestBuildWikiMoveToDriveDryRun断言了 POST URL、请求体folder_token与 GET 参数task_type均正确。常见问题与排查路径现象排查方向传入的 token 报错 / 移动了错误的文档确认--node-token是 Wiki 节点 tokenwikcn*而非底层obj_tokendoxcn*先用wiki node-get解析轮询超时timed_outtrue不是失败复制输出中的next_command续跑或手动执行drive task_result --scenario wiki_move_to_drive --task-id 完整ID续跑报权限错误检查续跑命令的--profile与--as是否与初始移动完全一致移动成功后找不到文档 / 权限异常移动后文档脱离 Wiki 层级权限改属 Drive 目标文件夹权限模型确认目标文件夹与调用身份user/bot 可见范围不同本地预检提示缺 scope缺失space:document:move或wiki:space:read时按提示重新执行lark-cli auth login --scope ...关联阅读skills/lark-wiki/SKILL.md —— 知识库全部命令与快速决策skills/lark-wiki/references/lark-wiki-move.md —— Wiki 内移动与 Drive 文档迁入 Wikiwiki moveskills/lark-drive/references/lark-drive-task-result.md —— 超时后的任务续跑drive task_result全场景说明skills/lark-shared/SKILL.md —— 认证、身份与全局参数源码移动实现 shortcuts/wiki/wiki_move_to_drive.go、契约测试 shortcuts/wiki/wiki_move_to_drive_test.go、续跑场景 shortcuts/drive/drive_task_result.go【免费下载链接】cliThe official Lark/飞书 CLI tool, maintained by the larksuite team — built for humans and AI Agents. Covers core business domains including Messenger, Docs, Base, Sheets, Calendar, Mail, Tasks, Meetings, and more, with 200 commands and 20 AI Agent Skills.项目地址: https://gitcode.com/gh_mirrors/cli414/cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Mac M1 上 HBase 安装避坑与 LeetCode 865 最小子树解析
Mac M1 上 HBase 安装避坑与 LeetCode 865 最小子树解析

上周公司团建,部门挑了一家韩式烤肉店。烤盘刚冒烟,几个实习生就开始抱着电脑抢带宽,说白天有个任务“就差最后一步”。等五花肉滋滋卷边的时候,邻座那位刚换了 MacBook Pro M1 的同事拍桌:“我真的会谢,HB… · 2026/9/23 4:35:42

hammerfall面试突击: 5个高频考点+代码实战, 新手避坑指南
hammerfall面试突击: 5个高频考点+代码实战, 新手避坑指南

hammerfall面试突击: 5个高频考点+代码实战, 新手避坑指南 官方文档那几万字读下来脑子发胀,抓不住重点?别急,大厂面试问 Hammerfall… · 2026/9/23 4:35:30

3步搞定evdo-1767:大厂面试官亲授保姆级教程
3步搞定evdo-1767:大厂面试官亲授保姆级教程

3步搞定evdo-1767:大厂面试官亲授保姆级教程 复制来的代码跑不通,报错信息满屏飞,盯着屏幕发呆两小时没思路?这种“代码看着对,跑起来就崩”的折磨,90%的开发者都经历过。别慌,今天这篇 保姆级教程… · 2026/9/23 4:35:30

数据中心风水优化:科学方法降低硬件故障率
数据中心风水优化:科学方法降低硬件故障率

1. 项目背景与行业观察数据中心作为数字经济的核心基础设施,其物理环境部署一直是个被低估的专业领域。传统数据中心选址往往依赖电力成本、土地价格等经济因素,却忽视了建筑朝向、电磁场分布等环境要素对设备稳定性的影响。作为一名前软件架构师&#x… · 2026/9/23 5:20:40

华为网盘注册避坑指南:3个代码步骤搞定自动化
华为网盘注册避坑指南:3个代码步骤搞定自动化

华为网盘注册避坑指南:3个代码步骤搞定自动化 官方文档动辄几十页,翻到眼花还是抓不住重点?别急,这篇 避坑指南 直接给你干货。… · 2026/9/23 5:20:40

温室气体特性与减排技术全解析
温室气体特性与减排技术全解析

1. 温室气体的本质与特性温室气体这个术语听起来像是某种特殊化学物质,但实际上它描述的是一类具有特定物理特性的气体分子。这类气体最核心的能力在于它们能够吸收地球表面向外太空辐射的红外线(热辐射),并将部分能量重新辐射回地… · 2026/9/23 5:20:34

agent-skills实战指南:从技能包设计到团队落地
agent-skills实战指南:从技能包设计到团队落地

1. 先搞清楚agent-skills到底在解决什么问题这两年做大模型应用的人应该都有同感:Agent框架越来越成熟,但真正把Agent用好的团队少之又少。模型幻觉、工具调用不稳定、多步任务中断,这些都是表面现象,根子往往出在一个很朴素的问题… · 2026/9/23 5:20:28

27届从免费到专业:7款降重会不会影响质量工具横评
27届从免费到专业:7款降重会不会影响质量工具横评

论文写到终稿,降重这道坎谁也躲不掉。导师一句“重复率自己看着办”,查重报告满屏标红,时间又紧——这时候降重工具到底能不能用、用了会不会把论文质量搞砸,成了最现实的问题。本文从免费到专业挑了7款工具逐个实测,直… · 2026/9/23 5:20:28

工程车辆数据集与YOLOv8训练:从数据检查到模型落地全攻略
工程车辆数据集与YOLOv8训练:从数据检查到模型落地全攻略

简介:面向目标检测与计算机视觉研究的工程车辆图像数据集,包含1000张已标注图片,覆盖重型卡车、挖掘机、压路机、吊车、自卸车等多种常见工程车辆,适用于自动驾驶、智能交通监控、工地安全等场景的模型训练与算法验证。资源共1998… · 2026/9/23 5:20:28

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码