前置条件: 先阅读
../lark-shared/SKILL.md了解认证、全局参数和安全规则。
在飞书知识库中移动已有 Wiki 节点,或将 Drive 文档迁入 Wiki。这个 shortcut 统一封装了两类流程:
node 模式:移动已有 Wiki 节点,可同空间移动,也可跨空间移动docs_to_wiki 模式:把 Drive 文档迁入目标知识空间;必要时可提交移动申请,并在异步任务场景下自动有限轮询当 docs_to_wiki 返回 task_id 时,shortcut 会先轮询一小段时间;如果轮询窗口内仍未完成,会返回 next_command,让调用方继续执行 lark-cli drive +task_result --scenario wiki_move --task-id <TASK_ID>。
drive +move 的区别wiki +move 的目标是 知识空间或 Wiki 父节点,使用 --target-space-id / --target-parent-tokendrive +move 的目标是 Drive 文件夹,使用 --folder-tokenwiki +move,而不是 drive +movewiki +movedrive +movewiki +movedrive +movedrive +movemy_library 去查询用户个人知识库,再拿到真实 space_idlark-cli wiki spaces get --params '{"space_id":"my_library"}',取回真实知识库 space_id,再把这个 space_id 用到 wiki +movewiki +move 文档的主示例仍以显式 --target-space-id / --target-parent-token 为主;如果调用方只有自然语言目标,不要因为目标暂时不明确就改走 drive +move# 将已有 wiki 节点移动到另一个父节点下
lark-cli wiki +move \
--node-token <NODE_TOKEN> \
--target-parent-token <TARGET_PARENT_TOKEN>
# 将已有 wiki 节点移动到另一个知识空间根目录
lark-cli wiki +move \
--node-token <NODE_TOKEN> \
--target-space-id <TARGET_SPACE_ID>
# 将 Drive 文档迁入某个知识空间根目录
lark-cli wiki +move \
--obj-type docx \
--obj-token <DOC_TOKEN> \
--target-space-id <TARGET_SPACE_ID>
# 将 Drive 文档迁入某个父节点下;如果当前没有直接移动权限,则提交申请
lark-cli wiki +move \
--obj-type sheet \
--obj-token <SHEET_TOKEN> \
--target-space-id <TARGET_SPACE_ID> \
--target-parent-token <TARGET_PARENT_TOKEN> \
--apply
# 预览底层调用链
lark-cli wiki +move \
--obj-type docx \
--obj-token <DOC_TOKEN> \
--target-space-id <TARGET_SPACE_ID> \
--dry-run
| 参数 | 必填 | 说明 |
|---|---|---|
--node-token |
条件必填 | 要移动的 Wiki 节点 token。传入后命令进入 node 模式 |
--source-space-id |
否 | 源知识空间 ID,仅 node 模式可用;不传时会根据 --node-token 自动解析 |
--target-space-id |
条件必填 | 目标知识空间 ID。docs_to_wiki 模式必填;node 模式下如果不传,则必须传 --target-parent-token |
--target-parent-token |
否 | 目标父节点 token。docs_to_wiki 不传时表示迁入目标知识空间根目录 |
--obj-type |
条件必填 | Drive 文档类型,仅 docs_to_wiki 模式可用。可选值:doc、sheet、bitable、mindnote、docx、file、slides |
--obj-token |
条件必填 | Drive 文档 token,仅 docs_to_wiki 模式可用 |
--apply |
否 | 仅 docs_to_wiki 模式可用;当当前调用方不能直接移动文档时,提交一个 move request |
node 模式:只要传了 --node-token,就会按“移动已有 Wiki 节点”执行docs_to_wiki 模式:未传 --node-token 时,按“把 Drive 文档迁入 Wiki”执行node 模式下,--node-token 不能与 --obj-type、--obj-token、--apply 同时使用node 模式下,--target-parent-token 和 --target-space-id 不能同时为空docs_to_wiki 模式下,必须同时提供 --obj-type、--obj-token、--target-space-iddocs_to_wiki 模式下,--source-space-id 非法,只能用于 node 模式node 模式--source-space-id,shortcut 会先调用 GET /open-apis/wiki/v2/spaces/get_node 查询 --node-token,再读取其 space_id--target-parent-token,shortcut 会先解析该父节点所属的 space_id--target-space-id 和 --target-parent-token,shortcut 会校验两者是否属于同一个知识空间;不一致时直接返回验证错误--target-space-id,则表示移动到该知识空间根目录docs_to_wiki 模式--target-space-id 始终必填--target-parent-token 可选;不传时表示移动到目标知识空间根目录obj_type、obj_token、parent_wiki_token、applynode 模式是同步操作:请求成功后直接返回移动后的节点信息docs_to_wiki 可能是同步,也可能是异步:
wiki_token,shortcut 会立刻返回 ready=trueapplied=true,shortcut 会返回 ready=false、failed=false、applied=true 和 status_msg="move request submitted for approval"task_id,shortcut 会先进入有限轮询30 次,每次间隔 2 秒task_id、status、status_msg、ready=false、timed_out=true 和 next_commandnext_command 后,改用 lark-cli drive +task_result --scenario wiki_move --task-id <TASK_ID> 继续查ready=false 结果node 模式典型返回{
"mode": "node",
"source_space_id": "space_src",
"target_space_id": "space_dst",
"space_id": "space_dst",
"node_token": "wikcnode_xxx",
"obj_token": "doccn_xxx",
"obj_type": "docx",
"parent_node_token": "wikcparent_xxx",
"node_type": "origin",
"origin_node_token": "",
"title": "项目计划",
"has_child": false
}
docs_to_wiki 异步超时返回{
"mode": "docs_to_wiki",
"obj_type": "docx",
"obj_token": "doccn_xxx",
"target_space_id": "space_xxx",
"target_parent_token": "wikcparent_xxx",
"task_id": "7500000000000000001",
"ready": false,
"failed": false,
"status": 1,
"status_msg": "processing",
"timed_out": true,
"next_command": "lark-cli drive +task_result --scenario wiki_move --task-id 7500000000000000001"
}
输出字段说明:
mode:当前执行模式,值为 node 或 docs_to_wikiready:任务是否已经完成并可直接继续使用结果failed:任务是否已失败task_id:异步任务 ID,仅异步场景返回status / status_msg:异步任务的主状态码和可读状态wiki_token:docs-to-wiki 成功后返回的 Wiki 节点 token;同时也会镜像到 node_tokenspace_id、node_token、obj_token、obj_type、parent_node_token、title 等:成功拿到节点信息时返回,方便下游继续调用node 模式下,dry-run 会根据是否需要解析源节点 / 目标父节点,展示 1 到 3 步的调用链docs_to_wiki 模式下,dry-run 会展示两步:
POST /open-apis/wiki/v2/spaces/{target_space_id}/nodes/move_docs_to_wikiGET /open-apis/wiki/v2/tasks/{task_id}?task_type=moveCLI 会在执行前做本地 scope 预检查;当前 shortcut 声明的权限为 wiki:node:move、wiki:node:read、wiki:space:read(分别覆盖 move 写操作、节点解析读操作、以及异步任务轮询读操作)。如果本地 token 已记录 scopes 且缺失任一权限,命令会直接提示重新执行 lark-cli auth login --scope ...。
当异步任务超时后,后续 lark-cli drive +task_result --scenario wiki_move --task-id <TASK_ID> 只需要 wiki:space:read 权限。
[!CAUTION]
wiki +move是写入操作。执行前必须确认用户意图,以及目标节点 / 目标知识空间是否明确。