# wiki +move-to-drive > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 将已有 Wiki 节点移出知识库,并放到指定 Drive 文件夹;省略目标文件夹时放到当前调用身份的“我的空间”根目录。该操作始终创建异步任务,shortcut 会自动有限轮询。 ## 何时使用 | 源对象 | 目标位置 | 命令 | |--------|----------|------| | Wiki 节点 | Wiki 空间或 Wiki 父节点 | `wiki +move` | | Drive 文档 | Wiki 空间或 Wiki 父节点 | `wiki +move` | | Wiki 节点 | Drive 文件夹或“我的空间”根目录 | `wiki +move-to-drive` | | Drive 文件 / 文件夹 | Drive 文件夹或根目录 | `drive +move` | `--node-token` 必须是 Wiki 节点 token,不是底层文档的 `obj_token`。无法判断时,先执行 `wiki +node-get --node-token `。 ## 命令 ```bash # 移到指定 Drive 文件夹 lark-cli wiki +move-to-drive \ --node-token \ --folder-token \ --as user # 移到当前调用身份的“我的空间”根目录 lark-cli wiki +move-to-drive \ --node-token \ --as user # 预览提交任务和轮询任务两步请求 lark-cli wiki +move-to-drive \ --node-token \ --folder-token \ --dry-run ``` ## 参数 | 参数 | 必填 | 说明 | |------|------|------| | `--node-token` | 是 | 要移出知识库的 Wiki 节点 token | | `--folder-token` | 否 | 目标 Drive 文件夹 token;省略时移动到当前调用身份的“我的空间”根目录 | ## 异步协议与续跑 shortcut 会按以下协议执行: 1. `POST /open-apis/wiki/v2/nodes/{node_token}/move_wiki_to_docs`,取得完整、不可拆分的 `task_id`。 2. `GET /open-apis/wiki/v2/tasks/{task_id}?task_type=move_wiki_to_docs`。 3. 读取 `data.task.move_wiki_to_docs_result`:`status=1` 表示处理中,`status=0` 表示成功,`status=-1` 表示失败。 任务查询必须使用 `task_type=move_wiki_to_docs`、`move_wiki_to_docs_result` 和数值状态;不要回退到其他 task type、result 字段或字符串状态。 - 最多轮询 30 次,每次间隔 2 秒。 - 轮询窗口内成功时返回 `ready=true`,并尽可能返回 `obj_token`、`obj_type` 和 `url`。 - 仍在处理中时返回 `ready=false`、`timed_out=true`、完整 `task_id` 和 `next_command`;超时不代表任务失败。 - 任务进入失败态时返回结构化错误。 - `task_id` 是服务端签名的 opaque ID,可能包含多个连字符;必须原样保存,不能自行切分。 - 续跑必须保持和初始移动相同的 `--profile` 与 `--as user|bot` 身份,否则可能收到权限错误;shortcut 返回的 `next_command` 会保留两者。 手动续跑命令: ```bash lark-cli drive +task_result \ --scenario wiki_move_to_drive \ --task-id \ --as user ``` ## 典型返回 成功: ```json { "node_token": "wikcnXXX", "folder_token": "fldcnXXX", "task_id": "", "ready": true, "failed": false, "status": 0, "status_msg": "success", "obj_token": "doxcnXXX", "obj_type": "docx", "url": "https://example.feishu.cn/docx/doxcnXXX" } ``` 轮询窗口超时: ```json { "node_token": "wikcnXXX", "folder_token": "", "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 --as user" } ``` ## 权限与影响 - CLI 写操作预检查使用 `space:document:move`,任务轮询使用 `wiki:space:read`。 - 调用方必须能移动源 Wiki 节点并写入目标 Drive 文件夹。 - 成功后源节点会从 Wiki 树中消失,目标文档改用 Drive 目标位置的权限模型;原 Wiki 层级继承权限不再保留。 - 省略 `--folder-token` 时,“根目录”属于当前 `--as` 身份,user 与 bot 的可见资源范围可能不同。 > [!CAUTION] > 这是会改变文档归属和权限继承的**写入操作**。执行前必须确认源 Wiki 节点、目标 Drive 位置和调用身份。 ## 参考 - [lark-wiki](../SKILL.md) -- 知识库全部命令 - [wiki +move](lark-wiki-move.md) -- Wiki 内移动与 Drive 文档迁入 Wiki - [drive +task_result](../../lark-drive/references/lark-drive-task-result.md) -- 超时后的任务续跑 - [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数