lark-cli 源码解读:阅读地图

这一组笔记不再按“功能介绍”线性展开,而是按源码的责任边界阅读 larksuite/cli:先看入口,再看三层命令,再看 Agent Skills、身份、输出、安全和工程化质量门禁。

两级分类

一级二级读什么
lark-cli 源码解读01 阅读地图README、CHANGELOG、目录结构、安装与仓库导航
lark-cli 源码解读02 命令系统root command、Shortcuts、生成式 API Commands、Raw API 与 schema
lark-cli 源码解读03 Agent 与身份Skills、lark-shared、auth、profile、--as、strict mode
lark-cli 源码解读04 输出与安全输出 envelope、错误契约、dry-run、--yes、内容安全
lark-cli 源码解读05 工程化event、plugin、quality gate、测试与贡献路径

这个分法和源码目录基本对齐:cmd/ 是命令入口,shortcuts/ 是高层任务,cmd/service + internal/registry + internal/apicatalog 是平台 API 命令生成链路,skills/ 是 Agent 手册,errs/internal/output 是机器可解析契约。

核心结论

lark-cli 的关键不是“把飞书 API 包成命令行”,而是把同一套开放平台能力拆成三种粒度:

  1. Shortcuts:面向人和 Agent 的高频任务,例如 lark-cli calendar +agenda
  2. API Commands:从 OAPI 元数据生成的类型化命令,例如 lark-cli calendar calendars list
  3. Raw API:直接按 HTTP method + path 调用任意端点,例如 lark-cli api GET /open-apis/calendar/v4/calendars

三层之外,源码还做了两件很“Agent-Native”的事:一是把参数、scope、风险等级和输出 schema 暴露给模型;二是把错误、权限缺失、确认门禁、内容安全警告都做成稳定 JSON 契约,而不是只给人看的 stderr 文案。

建议阅读顺序

flowchart TD
  A[README / CHANGELOG] --> B[cmd/build.go]
  B --> C[cmd/root.go]
  C --> D[shortcuts/*]
  C --> E[cmd/service + internal/registry]
  C --> F[cmd/api]
  E --> G[cmd/schema + internal/schema]
  D --> H[skills/lark-*]
  E --> I[internal/output + errs]
  I --> J[security / qualitygate / events]

如果只想快速理解设计,读完前 6 篇就够;如果要贡献代码,后 6 篇更重要。

下一篇:安装与仓库地图