当前位置: 首页 > news >正文

larksuite-cliskill

项目概述
源码地址:https://github.com/larksuite/cli

larksuite/cli 是飞书/Lark 官方出品的命令行工具,GitHub 13.5k stars,551 次提交,活跃度极高。

核心定位:同时服务人类用户和 AI Agent。

覆盖飞书 18 个业务域:IM、文档、表格、日历、任务、审批、考勤、Wiki、邮件、OKR、视频会议等。

技术栈
层面 选型
语言 Go 1.23(占比 97.5%)
CLI 框架 spf13/cobra + spf13/pflag
飞书 SDK larksuite/oapi-sdk-go/v3
TUI 交互 charmbracelet/huh(表单)、charmbracelet/lipgloss(样式)
JSON 查询 tidwall/gjson、itchyny/gojq
系统钥匙串 zalando/go-keyring
配置格式 gopkg.in/yaml.v3
发布工具 goreleaser
分发渠道 npm(@larksuite/cli)+ 源码编译
整体架构
┌──────────────────────────────────────────────────────────────────┐
│ 用户 / AI Agent │
└────────────────────────────┬─────────────────────────────────────┘
│ CLI 调用
┌────────────────────────────▼─────────────────────────────────────┐
│ main.go │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ main / main_authsidecar / main_noauthsidecar │ │
│ │ 通过 Go build tag 切换三种构建模式 │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────┬─────────────────────────────────────┘

┌────────────────────────────▼─────────────────────────────────────┐
│ cmd 包(命令层) │
│ │
│ BootstrapInvocationContext() → 提前解析 --profile 全局标志 │
│ │
│ buildInternal() 构建三层命令树: │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Layer 1: Shortcuts(+ 前缀,18个业务域高层封装) │ │
│ │ Layer 2: API Commands(100+ 精选端点) │ │
│ │ Layer 3: Raw API(2500+ 原始端点,spec 驱动动态生成) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 内置固定命令:config / auth / profile / doctor / │
│ schema / completion / update / events │
└────────────────────────────┬─────────────────────────────────────┘

┌───────────────────┼────────────────────┐
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────────────┐
│ shortcuts 包 │ │ cmd/service │ │ internal/cmdpolicy │
│ 18 个业务域 │ │ 动态服务命令 │ │ 命令策略引擎 │
│ ~26 个子目录 │ │ (spec-driven) │ │ (allow/deny/risk) │
└───────┬────────┘ └───────┬────────┘ └────────────────────────┘
│ │
▼ ▼
┌────────────────────────────────────────────────────────────────┐
│ extension 层(可插拔扩展) │
│ credential(凭证链)/ transport(传输拦截)/ │
│ contentsafety(内容安全)/ fileio / platform │
└────────────────────────────┬───────────────────────────────────┘

┌────────────────────────────▼───────────────────────────────────┐
│ internal 核心工具包 │
│ auth(OAuth/Device Flow)/ core(config/secret/workspace)/ │
│ output(JSON envelope 输出)/ errs(类型化错误体系) │
│ keychain / transport / i18n / vfs / registry │
└────────────────────────────┬───────────────────────────────────┘

┌────────────────────────────▼───────────────────────────────────┐
│ larksuite/oapi-sdk-go(飞书官方 Go SDK) │
└────────────────────────────────────────────────────────────────┘
使用

Interactive login (TUI guides domain and permission level selection)

lark-cli auth login

Identity switching: execute commands as user or bot

lark-cli calendar +agenda --as user
lark-cli im +messages-send --as bot --chat-id “oc_xxx” --text “Hello”
命令行登录后,即可使用命令行发送消息到lark

自然语言到 CLI 调用的完整链路
上面我们人类可以使用cli命令行和lark进行交互,那如果是agent那,他如何根据用户输入的自然语言映射到对应cli命令那?

Claudecode使用CLI架构
┌─────────────────────────────────────────────────────────────────────────────┐
│ 用户自然语言输入 │
│ “帮我看下今天日历” / “给张三发消息” / “创建一个文档” │
└──────────────────────────────────┬──────────────────────────────────────────┘

┌──────────────────────────────────▼──────────────────────────────────────────┐
│ Claude Code(AI Agent) │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Skills 层(知识注入) │ │
│ │ │ │
│ │ npx skills add larksuite/cli → 安装后注入到 Claude 上下文 │ │
│ │ │ │
│ │ lark-calendar │ lark-im │ lark-docs │ lark-base │ … │ │
│ │ (日历技能) │ (消息技能)│ (文档技能) │ (多维表格)│ │ │
│ │ │ │
│ │ Skills 告诉 Claude: │ │
│ │ • 哪些场景用哪条命令 │ │
│ │ • 参数如何构造 │ │
│ │ • 返回值如何解读 │ │
│ └─────────────────────────────────────────┬───────────────────────────┘ │
│ │ Claude 推理后决定调用 │
│ ┌─────────────────────────────────────────▼───────────────────────────┐ │
│ │ 工具调用层(Bash Tool) │ │
│ │ │ │
│ │ Claude 生成并执行 Shell 命令: │ │
│ │ lark-cli calendar +agenda │ │
│ │ lark-cli im send-message --chat-id oc_xxx --text “…” │ │
│ │ lark-cli docs +create --title “xxx” │ │
│ │ lark-cli --profile bot-A base +search-records … │ │
│ └─────────────────────────────────────────┬───────────────────────────┘ │
└────────────────────────────────────────────│────────────────────────────────┘
│ subprocess 调用(stdin/stdout)
┌────────────────────────────────────────────▼────────────────────────────────┐
│ lark-cli(本地进程) │
│ │
│ ┌──────────────┐ ┌──────────────────────────────────────────────────┐ │
│ │ --profile │ │ cmd 命令解析层 │ │
│ │ 凭证路由 │ │ Layer1: Shortcuts(+前缀) Layer2: API Commands │ │
│ └──────┬───────┘ │ Layer3: Raw API(spec 驱动,2500+ 端点) │ │
│ │ └──────────────────────┬───────────────────────────┘ │
│ │ │ │
│ ┌──────▼───────────────────────────────────▼───────────────────────────┐ │
│ │ internal 核心:auth / config / keychain │ │
│ │ 读取本地凭证(config init 写入的 App Secret) │ │
│ └──────────────────────────────────────┬─────────────────────────────┘ │
└─────────────────────────────────────────│───────────────────────────────────┘
│ HTTPS + OAuth Token
┌─────────────────────────────────────────▼───────────────────────────────────┐
│ 飞书开放平台 API(open.feishu.cn) │
│ │
│ /open-apis/calendar/v4/… /open-apis/im/v1/… /open-apis/docx/… │
└──────────────────────────────────────────────────────────────────────────────┘
两个核心交互点
整个链路只有两处实质性交互:

交互点 时机 内容
Skills → Claude 安装时写入 告诉 Claude 有哪些命令、何时用、参数怎么构造
Bash Tool → lark-cli 运行时 Claude fork 子进程,读取 stdout JSON Envelope
凭证链(用户无感知)
config init 扫码 → App Secret 写入 ~/.lark-cli/config.yaml
auth login → User Token 写入系统 Keychain
每次 CLI 调用时 → 自动读取,Claude 无需感知凭证细节
Claude 只需生成命令字符串,凭证由 lark-cli 内部三段式凭证链(Env → Sidecar → Keychain)自动处理。

自然语言如何映射到cli命令(demo)
用户输入:“帮我给张三发一条消息,说今天开会推迟”

Agent 内部推理过程:

  1. 意图识别:发消息 → IM 域
  2. 查 lark自定义的skill文件:IM 域有 +send-message 命令
  3. 参数提取:
    • 接收人 = 张三(需要先查 user_id)
    • 内容 = “今天开会推迟”
  4. 参数不完整 → 先调 +search-user 查张三的 user_id
  5. 组装命令:lark-cli +send-message --user-id xxx --text “今天开会推迟”
    关键工具 --print-schema:Agent 在执行前调用它获取参数结构,验证组装的命令是否正确:

lark-cli +send-message --print-schema

返回:需要哪些参数、类型、是否必填

执行结果如何处理
执行命令


stdout:JSON Envelope {“ok”: true, “data”: {…}}
stderr:错误 / 警告


Agent 解析 ok 字段
├── true → 任务完成,告知用户
└── false → 读 error.type
├── authorization → 提示用户授权
├── validation → 修正参数后重试
└── confirmation → exit code 10,询问用户确认后加 --yes 重试
完整链路图
用户自然语言


Agent LLM 推理
│── 读 lark配套 SKILL.md → 知道有哪些命令
│── 意图匹配 → 确定目标命令
│── --print-schema → 验证参数结构
│── --dry-run(可选) → 无副作用预验证


执行 shell 命令(lark-cli +xxx --param yyy)


解析 JSON Envelope


根据结果决策下一步(完成 / 重试 / 询问用户)
本质
Agent 调用 CLI 与人调用 CLI 的区别只有一个:人靠记忆和文档,Agent 靠 SKILL.md 和结构化输出。

CLI 的所有设计(SKILL.md、–print-schema、–dry-run、JSON Envelope、类型化错误码、exit code 语义)都是为了让这个推理过程更可靠、更少 token 消耗、更少出错。

与 MCP Server 模式的对比
lark-cli 采用 Skills + Bash Tool 模式,而非 MCP Server 模式。两种模式的核心差异:

维度 MCP Server 模式 lark-cli Skills 模式
配置方式 mcp.json 中声明 npx skills add 安装
通信协议 JSON-RPC over stdio/HTTP Shell subprocess(stdout/stderr)
权限粒度 Bot 级别(公司 App) 用户级别(个人 Token,可访问私人消息、日历)
适用场景 团队/企业级自动化 个人 AI 助理
已有配置 mcp.json 中的 okone-lark-mcp-server lark-cli + Skills
两者互补而非替代:MCP Server 适合团队共享的 Bot 操作,lark-cli 适合以用户身份执行个人工作流。

http://www.gsyq.cn/news/1582462.html

相关文章:

  • InDraw怎么调整键长、键角、键间距?
  • 2026英语重启阶段,很多人卡住的不是记不住单词,而是根本读不进去
  • 【Linux】章4 归档和传输文件(RH134知识点问答题)
  • 机械键盘连击克星:精准配置与智能过滤技术指南
  • GTA5线上小助手:5分钟掌握终极游戏增强方案,解锁洛圣都无限可能
  • 终极指南:如何免费掌控你的Alienware灯光、风扇与电源设置
  • 免费终极指南:5步使用League Director打造专业级英雄联盟视频
  • 指挥中心的控制台布局有多重要
  • 如何快速掌握TegraRcmGUI:Windows上最简单的Switch注入工具完整教程
  • Agent Skills:给 AI 编程助手装上技能包
  • LangGraph终极指南:构建弹性智能代理的架构设计与实战应用
  • AI Agent搭建:从概念到实战的痛与悟
  • Anisotropic Diffusion in ITK论文精读
  • 受够了 AICoding 跨 session 失忆?这个skill 让它能“无脑续命“
  • 江楚丽 | 广东工业大学电子商务专业在读生
  • 深圳编带机实测:2026年6月亲测哪款实用
  • AISMM模型到底颠覆了什么?3大底层架构突破、5类企业级应用场景、72小时实测性能数据首次公开
  • 在Windows上实现iPhone USB网络共享的完整解决方案:Apple-Mobile-Drivers-Installer
  • 如何查看Bing投放帐户的余额
  • 计算机毕业设计之考研辅导机构信息管理系统
  • 三步快速下载微博相册高清图片:Python多线程批量下载终极指南
  • Windows上iPhone USB网络共享终极解决方案:快速安装苹果驱动指南
  • HMCL启动器:一站式解决Minecraft玩家的所有管理难题
  • 如何高效实现MATLAB到Python代码迁移:智能转换工具实战指南
  • AI 边缘推理的功耗困局:从模型裁剪到硬件休眠的全链路节能方案
  • 物流企业采购自动化工具选型指南:2026年如何精准判断产品能否适配老旧系统?
  • 衡水采耳spa按摩养生中心挑选指南:5家值得了解
  • 终极流媒体下载器:N_m3u8DL-RE让你轻松保存任何在线视频
  • 探秘光学级CVD单晶金刚石:高透光与高硬度的完美平衡
  • Wireshark 流量分析实战例题详解,网络安全零基础入门教程,抓包排错一站式教学