ai_member_xiaobian/.agents/skills/lark-drive/references/lark-drive-status.md
2026-05-15 10:57:05 +08:00

4.0 KiB
Raw Blame History

drive +status

前置条件: 先阅读 ../lark-shared/SKILL.md 了解认证、全局参数和安全规则。

按 SHA-256 内容哈希比较本地目录与飞书云空间文件夹,输出四类差异:

字段 含义
new_local 仅本地存在
new_remote 仅云端存在
modified 双端都存在但 hash 不一致
unchanged 双端都存在且 hash 一致

只读命令:流式 hash不下载落盘但双端都有的文件会从云端拉一份字节流过来在内存里算 hash大目录 / 大文件会有可观的网络流量。

命令

# 基础用法 —— 两个必填参数
lark-cli drive +status \
  --local-dir ./repo \
  --folder-token fldcnxxxxxxxxx

# 只看 hash 不一致的项(结合 --jq 过滤)
lark-cli drive +status \
  --local-dir ./repo \
  --folder-token fldcnxxxxxxxxx \
  --jq '.modified'

参数

标志 必填 类型 说明
--local-dir path 本地根目录(必须是 cwd 的相对路径;绝对路径或逃逸到 cwd 外的相对路径会被 CLI 直接拒绝)
--folder-token string Drive 文件夹 token

输出 schema

{
  "new_local":  [{"rel_path": "..."}],
  "new_remote": [{"rel_path": "...", "file_token": "..."}],
  "modified":   [{"rel_path": "...", "file_token": "..."}],
  "unchanged":  [{"rel_path": "...", "file_token": "..."}]
}

rel_path 始终用 / 作为分隔符(跨平台一致),相对于 --local-dir--folder-token 的根。仅本地存在时没有 file_token 字段。

比较范围

  • 只比对 Drive type=file 的二进制文件。在线文档(docx / sheet / bitable / mindnote / slides)和快捷方式(shortcut)都被跳过 —— 它们没有等价的本地二进制可对齐,否则会在 new_remote 里产生大量误报。
  • 子文件夹会递归遍历rel_path 形如 sub1/sub2/file.txt
  • 本地侧只比对常规文件regular file符号链接、设备文件等被忽略。

范围限制

+status 的本地侧只接受 cwd 下的相对路径。如果用户想比对的目录在 cwd 之外,不要 agent 自己 cd 绕过;让用户在合适的祖先目录重新启动 agent 后再跑。注意:把目标软链接到 cwd 内也不行——路径校验会先 EvalSymlinks 再判定是否越界,链接最终指向的真实目录如果在 cwd 之外,仍然会被 unsafe file path 拒掉。CLI 会在路径越界时直接报错,无需在 skill 这一层提前手动校验。

典型用法

把 +status 当作"先看差异、再决定怎么同步"的只读探针。常见接驳场景:

  • 想知道云端有什么本地没有的内容 → 看 new_remote,按需选择性拉取(drive +download --file-token <token>)。
  • 想把本地新增的内容推到云端 → 看 new_local,再 drive +upload --file <path> --folder-token <parent>(注意 +upload 不接受 0 字节文件)。
  • 想知道哪些文件在云端被同事改过 → 看 modified,逐个 drive +download 查内容差异。

性能注意

  • unchanged + modified 的总字节数 = 本次需从云端下载的流量。100GB 的双端共享内容意味着 100GB 网络往返。
  • 仅一侧存在的文件不会被下载。
  • Hash 计算在内存里流式做io.Copy → sha256.New不会把云端文件落到磁盘。

所需 scope

操作 scope
列出文件夹 / 子目录 drive:drive.metadata:readonly
下载并 hash 文件 drive:file:download

如果当前 token 缺这些 scope命令会直接报 missing_scope 并提示重新登录。drive:drive 在部分企业被策略禁用,所以 +status 故意只声明上面这两个细粒度 scope。

参考