Skip to content

feat(drive): document copy workflow guidance - #2184

Open
SongHantian wants to merge 3 commits into
larksuite:mainfrom
SongHantian:auto-research-sync/01KYVM5CMVBXCSZWETFR6Y4VAQ/mr-1358-5fb17c0d
Open

feat(drive): document copy workflow guidance#2184
SongHantian wants to merge 3 commits into
larksuite:mainfrom
SongHantian:auto-research-sync/01KYVM5CMVBXCSZWETFR6Y4VAQ/mr-1358-5fb17c0d

Conversation

@SongHantian

@SongHantian SongHantian commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

Document the Drive file copy workflow so agents use the native copy API with stable parameters and avoid unnecessary schema, inspect, or metadata calls.

Changes

  • Added a dedicated Drive copy reference covering source selection, fixed drive files copy parameters, wiki/folder URL handling, post-copy editing boundaries, and error recovery.
  • Updated the Drive skill routing guidance for copy operations, title search uniqueness, authentication diagnostics, and the files.copy API exception.

Test Plan

  • git diff --check

Related Issues

Auto research task: 01KYVM5CMVBXCSZWETFR6Y4VAQ

Summary by CodeRabbit

  • New Features

    • Added guidance for copying Lark Drive files and online documents, including Wiki pages and folders.
    • Added step-by-step instructions for selecting source files, validating copy requests, editing copied content, and recovering from errors.
    • Improved search guidance for title and keyword matching, folder enumeration, and duplicate result handling.
  • Bug Fixes

    • Refined authentication checks to run only when needed or when authorization issues occur.
    • Clarified copy workflows for more reliable results.

@CLAassistant

CLAassistant commented Aug 4, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3283e846-ff26-426c-960b-10e218d51cf3

📥 Commits

Reviewing files that changed from the base of the PR and between 12742be and 8b0422f.

📒 Files selected for processing (1)
  • skills/lark-drive/SKILL.md

📝 Walkthrough

Walkthrough

This PR updates the Lark Drive skill documentation. It changes authentication diagnostics, defines title search rules, routes copying through a fixed contract, adds a schema exception for drive files copy, and documents copy source selection, token handling, editing, and error recovery.

Changes

Lark Drive Skill Documentation

Layer / File(s) Summary
Auth diagnostic and search rule updates
skills/lark-drive/SKILL.md
Authentication guidance is now read only for explicit identity checks or structured authentication-related errors. Search guidance uses drive +search for title and keyword queries, restricts files list to folder-child enumeration, stops on strict duplicate titles, and forbids positional parameters.
Copy workflow contract and reference document
skills/lark-drive/SKILL.md, skills/lark-drive/references/lark-drive-copy.md
Copy operations use the fixed contract in the new reference before execution. Schema lookup occurs only after structured parameter errors. The reference defines source selection, token and type handling, URL handling, post-copy edits, and error recovery. Export-then-import copying is prohibited.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • larksuite/cli#2159: Covers the same Lark Drive authentication, copy, search, and schema guidance changes.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description check ✅ Passed The description includes all required sections and clearly documents the scope, changes, verification command, and related task.
Title check ✅ Passed The title clearly and concisely identifies the main change: documenting the Drive copy workflow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added domain/ccm PR touches the ccm domain size/M Single-domain feat or fix with limited business impact labels Aug 4, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
skills/lark-drive/references/lark-drive-copy.md (1)

17-22: 🗄️ Data Integrity & Integration | 🔵 Trivial | 🏗️ Heavy lift

Add executable coverage for the fixed copy contract.

Lines 17-22 define the exact drive files copy request, but tests/cli_e2e/drive/coverage.md reports no workflow test for this command. Add a contract test that verifies --file-token, data.folder_token, data.name, and data.type, including rejection of a missing folder_token. Otherwise, a CLI change can silently invalidate this reference and the routing in skills/lark-drive/SKILL.md.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/lark-drive/references/lark-drive-copy.md` around lines 17 - 22, Add
executable contract coverage for the `drive files copy` request documented in
`lark-drive-copy.md`, covering `--file-token`, `data.folder_token`, `data.name`,
and `data.type`. Include a negative case that rejects a missing `folder_token`,
and register the workflow in `tests/cli_e2e/drive/coverage.md` so changes to the
CLI contract or `skills/lark-drive/SKILL.md` routing are detected.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/lark-drive/references/lark-drive-copy.md`:
- Around line 46-50: 在“错误恢复”部分补充 drive files copy 的未知结果处理:对超时、连接重置、5xx
等可能已到达服务端的传输失败不得自动重试;优先使用可用的幂等机制或结果核对,无法核对时先征得用户确认再重试,并保留现有确定性错误的停止规则。

---

Nitpick comments:
In `@skills/lark-drive/references/lark-drive-copy.md`:
- Around line 17-22: Add executable contract coverage for the `drive files copy`
request documented in `lark-drive-copy.md`, covering `--file-token`,
`data.folder_token`, `data.name`, and `data.type`. Include a negative case that
rejects a missing `folder_token`, and register the workflow in
`tests/cli_e2e/drive/coverage.md` so changes to the CLI contract or
`skills/lark-drive/SKILL.md` routing are detected.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 91003c75-5e28-485a-be69-926189f4f313

📥 Commits

Reviewing files that changed from the base of the PR and between 811d37e and 9188319.

📒 Files selected for processing (2)
  • skills/lark-drive/SKILL.md
  • skills/lark-drive/references/lark-drive-copy.md

Comment thread skills/lark-drive/references/lark-drive-copy.md
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

🚀 PR Preview Install Guide

🧰 CLI update

npm i -g https://pkg.pr.new/larksuite/cli/@larksuite/cli@8b0422ffab0b4117636275fce00f9d6f451920f1

🧩 Skill update

npx skills add SongHantian/cli#auto-research-sync/01KYVM5CMVBXCSZWETFR6Y4VAQ/mr-1358-5fb17c0d -y -g

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/lark-drive/SKILL.md`:
- Line 13: 更新认证与确认路由规则,将未结构化但明确表示登录态失败的 Drive/API 错误(包括 `1061005 auth failed`
等资源引用中的错误)纳入读取 `../lark-shared/SKILL.md` 的认证诊断路径;保留 `invalid token`、`not
found`、`unsupported type` 及租户安全策略等确定性业务错误不触发诊断。
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bd261e7f-b4d8-41a7-9b0f-905020f8231e

📥 Commits

Reviewing files that changed from the base of the PR and between 9188319 and 12742be.

📒 Files selected for processing (2)
  • skills/lark-drive/SKILL.md
  • skills/lark-drive/references/lark-drive-copy.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • skills/lark-drive/references/lark-drive-copy.md

Comment thread skills/lark-drive/SKILL.md Outdated

- 用户要把**已有 Wiki 节点移出知识库,放到 Drive 文件夹或“我的空间”根目录**:切到 `lark-wiki`,使用 `lark-cli wiki +move-to-drive`;不要把 Wiki token 直接交给 `drive +move`。这是会改变文档归属和权限继承的写操作,执行前确认源节点与目标位置。
- 用户要**复制文档 / 创建副本 / 另存为副本**时,使用 `lark-cli drive files copy`。先用 `lark-cli schema drive.files.copy --format json` 确认参数;如果来源是 wiki URL/token,先用 `lark-cli drive +inspect` 获取底层 `token` 和 `type`,不要把 wiki token 直接当 `file_token`。`params.file_token` 传源文档 token,`data.folder_token` 传目标文件夹 token,`data.name` 传副本名称,`data.type` 传源文件类型(如 `docx` / `sheet` / `bitable` / `slides`)。示例:`lark-cli drive files copy --params '{"file_token":"<DOC_TOKEN>"}' --data '{"folder_token":"<FOLDER_TOKEN>","name":"<COPY_NAME>","type":"docx"}'`。如返回 `confirmation_required`,按 `lark-shared` 高风险审批协议向用户确认后,在原命令末尾追加 `--yes` 重试
- 用户要**复制文档 / 创建副本 / 另存为副本**时,执行前先读取 [`references/lark-drive-copy.md`](references/lark-drive-copy.md),并直接使用其中固定的 `lark-cli drive files copy` 参数契约;首次调用不预查 `--help` 或 schema,仅在返回明确的结构化参数错误后查询 schema

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个 张超 那边现在在封装成drive +copy

- 用户要**整理云盘 / 文件夹 / 文档库 / 知识库 / 个人文档库**,或要“盘点目录结构、找出未归档/临时/重复/空目录、生成整理方案”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`knowledge_organize`](references/lark-drive-workflow-knowledge-organize.md) workflow。默认只生成方案;创建目录、移动资源、申请权限都必须单独确认。
- 按主题跨范围查找并集中归档,进入 `topic_move_collector`;对已知文件夹、文档库或知识库做目录盘点和结构重组,进入 `knowledge_organize`;只移动一个已明确资源时仍使用原子移动命令。
- 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,优先使用 `lark-cli drive +search`。自然语言里"最近我编辑过的"、"我创建的"(→ `--created-by-me`,原始创建者语义)、"我负责/owner 的"(→ `--mine`,owner 语义)、"最近一周我打开过的 xxx"、"某人 owner 的 docx" 等直接映射到扁平 flag,避免手写嵌套 JSON。
- 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,包括按标题判断资源是否存在、是否唯一或是否重复时,优先使用 `lark-cli drive +search --query "<标题或关键词>"`;`drive files list` 只用于用户明确要求枚举文件夹直接子项,不能替代标题搜索。存在多个完整标题严格相等的候选时停止,不要选择第一项或执行写操作。`+search` 不接受位置参数。自然语言里"最近我编辑过的"、"我创建的"(→ `--created-by-me`,原始创建者语义)、"我负责/owner 的"(→ `--mine`,owner 语义)、"最近一周我打开过的 xxx"、"某人 owner 的 docx" 等直接映射到扁平 flag,避免手写嵌套 JSON。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不加这个的话,agent的表现是什么,是否能放到search或者files list的ref skill中,感觉把一个很边界场景放到这里有点不合适


```bash
lark-cli schema drive.<resource>.<method> # 调用 API 前必须先查看参数结构
lark-cli schema drive.<resource>.<method> # 原生 API 调用前查看参数结构;普通 files.copy 例外

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

为什么例外。。

```

> **重要**:使用原生 API 时,必须先运行 `schema` 查看 `--data` / `--params` 参数结构,不要猜测字段格式。
> **重要**:使用原生 API 时,必须先运行 `schema` 查看 `--data` / `--params` 参数结构,不要猜测字段格式。普通 `drive files copy` 是例外:执行前读取 [`references/lark-drive-copy.md`](references/lark-drive-copy.md),直接使用其中的固定参数契约;仅在命令返回结构化参数错误后再查 schema。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里也是,尽量不要在这种通用描述下,针对单个特殊case做特化说明,这样后面每优化一个场景,就在后面追加一条,很不优雅


- 用户要把**已有 Wiki 节点移出知识库,放到 Drive 文件夹或“我的空间”根目录**:切到 `lark-wiki`,使用 `lark-cli wiki +move-to-drive`;不要把 Wiki token 直接交给 `drive +move`。这是会改变文档归属和权限继承的写操作,执行前确认源节点与目标位置。
- 用户要**复制文档 / 创建副本 / 另存为副本**时,使用 `lark-cli drive files copy`。先用 `lark-cli schema drive.files.copy --format json` 确认参数;如果来源是 wiki URL/token,先用 `lark-cli drive +inspect` 获取底层 `token` 和 `type`,不要把 wiki token 直接当 `file_token`。`params.file_token` 传源文档 token,`data.folder_token` 传目标文件夹 token,`data.name` 传副本名称,`data.type` 传源文件类型(如 `docx` / `sheet` / `bitable` / `slides`)。示例:`lark-cli drive files copy --params '{"file_token":"<DOC_TOKEN>"}' --data '{"folder_token":"<FOLDER_TOKEN>","name":"<COPY_NAME>","type":"docx"}'`。如返回 `confirmation_required`,按 `lark-shared` 高风险审批协议向用户确认后,在原命令末尾追加 `--yes` 重试
- 用户要**复制文档 / 创建副本 / 另存为副本**时,执行前先读取 [`references/lark-drive-copy.md`](references/lark-drive-copy.md),并直接使用其中固定的 `lark-cli drive files copy` 参数契约;首次调用不预查 `--help` 或 schema,仅在返回明确的结构化参数错误后查询 schema

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不要引导“首次调用不预查 --help 或 schema,仅在返回明确的结构化参数错误后查询 schema。”这种,可能会放大错误率

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

成功率优先

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain/ccm PR touches the ccm domain size/M Single-domain feat or fix with limited business impact

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants