本轮以「深度 review + 实物验证」为主线,系统校准了 CLI 与飞书官方 API 的契约。
命令面几乎无变化(36 个命令组零增减,新增 3 个子命令),但修掉了一批静默出错的问题。
从不可用恢复为可用
| 功能 | 此前 | 现在 |
|---|---|---|
mail triage |
100% 失败(page_size 必填未发送) |
正常返回邮件列表 |
sheet write 写布尔值 |
整批失败(API 拒绝 JSON Boolean) | 正常写入并识别为布尔单元格 |
sheet protect / unprotect |
被误判「官方已废弃」而禁用 | 恢复可用(实测端点返回 code=0) |
calendar agenda 查 >40 天 |
直接报错 193103 | 自动切分,90 天窗口返回 334 个日程 |
schema / api 元数据 |
overlay 完全不生效,停在 12 服务 / 152 方法 | 15 服务 / 250 方法 |
calendar event-search --start 传毫秒 |
解析成公元 56971 年 | 13 位自动识别为毫秒 |
修复数据破坏路径(原实现 exit 0 静默发生)
doc content-update --mode replace_all:不带#的模糊标题选择器同时命中父标题与子标题时,
外层范围会吞掉未匹配的兄弟章节(实测 7 块文档替换后只剩 2 块)。现 fail-closed 要求明确选择器。drive pull --delete-local/push --delete-remote:身份静默降级 Bot 后远端视图更小、差集更大,
会误删本地文件。现拒绝降级执行。eventlast-consumer 注销:会抹掉窗口期内新 consumer 刚建立的订阅(新 consumer 已 ready 却收不到事件)。
现注销后复检并幂等补订阅。calendar agenda:午夜发生 DST 跳变的时区区间倒挂,静默返回空结果。wiki delete:确认提示未提级联范围(--include-children默认 true)。现按实际范围提示。
安全
- 取 tenant token 曾用裸
http.Post,绕过重定向/凭证策略层——app_secret可随 3xx 重放且无超时。
统一改走带 host 校验与凭证剥离的 HTTP client(共 4 处)。 wiki delete的 loopback 豁免曾用前缀匹配,127.0.0.evil.com可绕过 HTTPS 约束。改用net.ParseIP。- 分片上传
block_size守卫在 64 位平台永久失效,畸形值会导致 panic。加合理上限。
新增命令
markdown patch— 对云盘原生.md做局部补丁schema status— 查元数据来源与版本(embedded / cache / runtime)slides get— 获取演示文稿信息
向前兼容性
命令名、子命令、flag 零删除零改名;api 输出结构未变;stderr 新增的告警不污染 stdout(-o json 管道安全)。
有 4 处「以前静默通过、现在报错」,其中 3 处以前本就拿不到正确结果。唯一需要改脚本的是:
doc content-update --mode replace_all --selection-by-title "模糊词"若同时命中父子标题,现在报错。
改法:加标题级别("## 子标题")或改用--mode replace_range。
若 token.json 是旧版本(无 app_id),执行一次 feishu-cli auth token --bind-legacy-app --as user。
完整变更见 CHANGELOG.md。