核心用法
本技能通过飞书开放 API 向指定用户(ou_...)或群组(oc_...)发送富交互卡片。提供三种调用模式:
1. 简单文本 (send.js --text):适用于无特殊字符的纯文本,命令行直接传参。
2. 文件模式 (send.js --text-file):将 Markdown 内容写入临时文件后发送,避免 Shell 转义问题(如反引号被吞),推荐用于代码块、表格等复杂格式。
3. 安全封装 (send_safe.js):自动处理临时文件创建与清理,适合脚本集成。
4. 角色风格 (send_persona.js):内置 d-guide(红底警告)、green-tea(软萌粉调)、mad-dog(灰底错误日志)等预设风格,一键切换视觉主题。
关键参数
--target:接收方 ID(用户 Open ID 或群 Chat ID)--title/--color:卡片标题与主题色(蓝/红/橙/绿/紫/灰)--button-text/--button-url:底部行动按钮--image-path:上传并嵌入本地图片
显著优点
- 格式丰富:原生支持 Markdown、代码高亮、表格、图片,告别纯文本通知。
- 防转义设计:文件模式与安全封装彻底规避 Shell 特殊字符陷阱。
- 角色化模板:4 种预设 personas 快速匹配运维告警、系统日志、日常通知等场景。
- 轻量集成:依赖单一的
feishu-common模块,无额外运行时负担。
局限与风险
- 依赖前置:必须先安装并配置
feishu-common完成 tenant_access_token 获取,无法独立运行。 - 无加密传输说明:文档未提及 HTTPS 强制校验或证书 pinning,默认依赖 Node.js 环境配置。
- 临时文件残留:若
send_safe.js进程异常退出,虽声称自动清理,但极端情况下可能遗留/tmp文件(建议审计)。 - 权限盲区:未说明所需飞书机器人权限范围(如
im:chat:readonly、im:message:send),可能导致 403 报错。
适合人群
- 运维/研发团队:需将 CI/CD 结果、告警日志以高可读性卡片推送至飞书群。
- 自动化脚本开发者:构建 ChatOps 工作流,追求格式化输出而非原始 JSON。
常规风险
- Token 泄露:
feishu-common若将 token 以明文写入日志或临时文件,存在横向移动风险。 - ID 混淆:
ou_与oc_前缀易误用,导致消息发送至错误对象(隐私/合规风险)。 - Markdown 注入:若
--text内容包含用户可控输入且未转义,可能触发飞书客户端 XSS(需确认飞书卡片渲染沙箱强度)。