多 Bot 身份支持
把「用哪个目录 / User Token」和「用哪套 App 凭证」拆成两条正交解析链,新增三个全局 flag:
feishu-cli profile list --json # 先看能操作哪些 Bot
feishu-cli --profile alert msg send ... # 单次指定,不改默认指针
feishu-cli --bot-app-id cli_xxx --bot-app-secret xxx auth status -o json # 单次覆盖 App 凭证,不写盘- 目录 / User Token:
--profile>FEISHU_PROFILE>active-profile指针 > 旧布局 - App 凭证:
--bot-app-id/--bot-app-secret>FEISHU_APP_ID/SECRET> 选中目录的config.yaml
profile list / profile current 升级为 Bot 清单——即使没执行过 profile add,也会输出环境变量/旧布局正在用的那套(effective),不会让人误判「一个 Bot 都没有」。
凭证告警收窄
此前只要设置了 FEISHU_APP_ID 就对每条命令打印警告,而这正是文档推荐的单应用用法。现在只在真错配时出声:覆盖来的 app_id 与所选目录 config.yaml 不是同一个应用,或两半凭证落在不同层且无法确认同属一个应用。单应用配置完全静默。
身份字段只陈述可离线证明的事实(user_token_override / has_config_user_token / token_from_profile)。CLI 不再断言「本次实际用了哪个 token」——本项目按命令分四类 token helper,--as bot、默认 Bot 身份的写命令、只认 flag 的 vc bot meeting-join、固定读本地文件的 auth status 各有各的解析路径。
健壮性
- 单个 profile 的 config/token/cache 损坏不再让整张清单打不开,按来源分别记录原因并在输出中点名
auth status/auth logout在config.yaml损坏时降级继续(业务命令保持 fail-fast)- 表格按显示宽度对齐,正确处理 CJK 与 ZWJ 表情(👨💻)
commandOverride改用独立 mutex,不再复用保护文件写入的锁
升级说明
JSON 契约完全向后兼容:profile list --json 的 name/path/active/has_config/has_token 与 auth status -o json 的全部既有字段,取值与 v1.38.4 逐一相同,只新增字段;所有命令退出码不变。
两处行为变更:
- 人类可读输出有调整:
profile list表格列改为 ACTIVE/NAME/APP_ID/TOKEN/USER/SELECT,profile current扩展为多行,auth status新增 Profile/App ID 行。解析输出的脚本请改用--json/-o json。 active-profile指针失效且旧布局仍在时,改为优先旧布局(原为回退到字典序第一个 profile)。指针缺失时优先旧布局本就是既定行为,此改动让两种等价情况保持一致,不会把仍在用~/.feishu-cli/的用户静默切到另一套 Bot。
安装
curl -fsSL https://raw.githubusercontent.com/riba2534/feishu-cli/main/install.sh | bash