원클릭으로
feishu-cli-attendance
// 飞书考勤数据查询(user-task / user-stats)。user-task 查打卡任务/班次; user-stats 查考勤统计(出勤/迟到/早退/请假)。 注意:仅支持 Tenant Token,SDK v3.5.3 限制不接受 User Token; 单次查询跨度上限 31 天,超出会拒绝。 当用户请求"查考勤"、"查打卡记录"、"出勤统计"、"考勤明细"时使用。
// 飞书考勤数据查询(user-task / user-stats)。user-task 查打卡任务/班次; user-stats 查考勤统计(出勤/迟到/早退/请假)。 注意:仅支持 Tenant Token,SDK v3.5.3 限制不接受 User Token; 单次查询跨度上限 31 天,超出会拒绝。 当用户请求"查考勤"、"查打卡记录"、"出勤统计"、"考勤明细"时使用。
| name | feishu-cli-attendance |
| description | 飞书考勤数据查询(user-task / user-stats)。user-task 查打卡任务/班次; user-stats 查考勤统计(出勤/迟到/早退/请假)。 注意:仅支持 Tenant Token,SDK v3.5.3 限制不接受 User Token; 单次查询跨度上限 31 天,超出会拒绝。 当用户请求"查考勤"、"查打卡记录"、"出勤统计"、"考勤明细"时使用。 |
| argument-hint | user-task query | user-stats query |
| user-invocable | true |
| allowed-tools | Bash(feishu-cli attendance:*), Bash(feishu-cli att:*), Read |
通过 feishu-cli attendance(别名 att)查询用户考勤打卡记录与统计数据,对接飞书考勤 OpenAPI。
feishu-cli:如尚未安装,请前往 riba2534/feishu-cli 获取安装方式。
tenant_access_token(应用身份),无需 feishu-cli auth login。larksuite/oapi-sdk-go v3.5.3 中 Attendance.UserTask.Query 与
Attendance.UserStatsData.Query 的 SupportedAccessTokenTypes 仅含 Tenant,
传入 User Access Token 会被 SDK 直接拒绝。attendance:task:readonly(推荐,仅查询打卡和统计数据,不可写入修改)attendance:task(含写入)FEISHU_APP_ID + FEISHU_APP_SECRET(环境变量或 ~/.feishu-cli/config.yaml)。接受 YYYY-MM-DD 或 YYYYMMDD 两种写法,CLI 内部统一转为 OpenAPI 要求的 yyyyMMdd 整数。
user-stats query 起止跨度 ≤ 31 天,超出本地直接拒绝(不发请求)。user-task query 无 31 天跨度限制(与 user-stats query 不同,本地不做日期跨度预校验),但仍受 50 用户上限约束。user-task queryfeishu-cli attendance user-task query \
--employee-type <type> --user-ids <ids> \
--start <date> --end <date> [选项]
底层走 POST /open-apis/attendance/v1/user_tasks/query。返回上下班实际打卡结果(含加班班段可选)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
--employee-type | string | - | 用户 ID 类型:employee_id (默认) / open_id / user_id / employee_no |
--user-ids | CSV | ✓ | 用户 ID 列表,逗号分隔,最多 50 个 |
--start | string | ✓ | 起始工作日(YYYY-MM-DD 或 YYYYMMDD) |
--end | string | ✓ | 结束工作日(YYYY-MM-DD 或 YYYYMMDD) |
--need-overtime | bool | - | 是否包含加班班段打卡结果(默认 false) |
--ignore-invalid-users | bool | - | 忽略无效/无权限用户(默认 true) |
--include-terminated | bool | - | 包含离职员工数据(默认 false) |
-o, --output | string | - | text(默认)/ json |
user-stats queryfeishu-cli attendance user-stats query \
--employee-type <type> --user-ids <ids> --current-user-id <id> \
--stats-type <daily|month> --start <date> --end <date> [选项]
底层走 POST /open-apis/attendance/v1/user_stats_datas/query。返回出勤/迟到/早退/请假等聚合统计字段(出勤天数、迟到次数、加班时长……)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
--employee-type | string | - | 用户 ID 类型(同上,默认 employee_id) |
--stats-type | string | - | daily(日度,默认)/ month(月度) |
--user-ids | CSV | ✓ | 查询的用户 ID 列表,最多 200 个 |
--current-user-id | string | - | 发起请求的用户 ID(新系统用户必填,对应「查询统计设置」user_id) |
--start | string | ✓ | 起始日期 |
--end | string | ✓ | 结束日期(跨度 ≤ 31 天) |
--locale | string | - | 语言:zh / en / ja |
--need-history | bool | - | 是否返回历史数据(默认 false) |
--current-group-only | bool | - | 仅展示当前考勤组(默认 false) |
-o, --output | string | - | text(默认)/ json |
# 查询本人最近一周打卡
feishu-cli attendance user-task query \
--employee-type open_id --user-ids ou_xxxxxxxx \
--start 2026-05-01 --end 2026-05-18
# 多人 + 加班 + JSON
feishu-cli attendance user-task query \
--employee-type open_id \
--user-ids ou_aaa,ou_bbb \
--start 20260501 --end 20260518 \
--need-overtime -o json
# 查本人 5 月日度统计
feishu-cli attendance user-stats query \
--employee-type open_id \
--user-ids ou_xxxxxxxx --current-user-id ou_xxxxxxxx \
--stats-type daily --start 2026-05-01 --end 2026-05-31
# 查月度统计 + JSON
feishu-cli attendance user-stats query \
--employee-type open_id --user-ids ou_xxx --current-user-id ou_xxx \
--stats-type month --start 2026-05-01 --end 2026-05-31 -o json
# 兼容 alias:att 等价 attendance
feishu-cli att user-task query --user-ids ou_xxx --start 2026-05-01 --end 2026-05-18
user-task query 文本模式共 N 条打卡任务:
[i] <姓名> (<user_id>) 日期: YYYY-MM-DD
考勤组: <group_id> 班次: <shift_id> 打卡记录 ID: <result_id>
[j] (上下班 / 加班)
上班: HH:MM 结果: <Normal/Late/Early/Lack/...> (补充说明)
下班: HH:MM 结果: <...> (补充说明)
⚠ 无效用户 ID (n): id1, id2
⚠ 无权限用户 ID (n): id3, id4
user-stats query 文本模式共 N 个用户的统计数据:
[i] <姓名> (<user_id>)
<统计字段标题> = <值>
出勤天数 = 22
迟到次数 = 1
请假时长 = 2.5h
...
⚠ 无权限用户 (n): id1, id2
JSON 模式直出归一化结构体(AttendanceQueryUserTaskResult / AttendanceQueryUserStatsResult),便于 AI Agent 与脚本消费。
下列场景不要走 feishu-cli attendance,本模块只覆盖「查询」两个接口:
| 场景 | 替代方案 |
|---|---|
| 管理面查/改排班、班次定义、考勤组 | 飞书开放平台 OpenAPI Explorer,或直接调 /open-apis/attendance/v1/shifts、/groups 等 |
| 审批假勤(请假/加班单据查询/审批) | feishu-cli approval 模块 |
| 补卡/手动打卡 | OpenAPI /open-apis/attendance/v1/user_task_remedys,本 CLI 暂未封装 |
| 「查考勤组成员」类场景 | OpenAPI /open-apis/attendance/v1/groups/{group_id} |
| 任何需要写操作(补卡审批、修改班次) | 直接调 OpenAPI(需 attendance:task 写权限) |
| 现象 | 原因 | 解决 |
|---|---|---|
unsupported access token type, only support: Tenant | 误传了 User Token | 移除 --user-access-token / FEISHU_USER_ACCESS_TOKEN;本模块只走 Tenant |
--user-ids 单次最多 50 个 / 200 个 | 超过本地预校验上限 | user-task ≤ 50,user-stats ≤ 200,超出请分批 |
--start 到 --end 跨度不能超过 31 天 | 仅 user-stats 有此本地预校验(cmd/attendance_user_stats.go:114),user-task 不限制 | user-stats 拆成多次查询,每次 ≤ 31 天;user-task 不受此限 |
日期 "xxx" 不是 YYYYMMDD 8 位数字 | 日期格式不对 | 用 YYYY-MM-DD 或纯 8 位数字 YYYYMMDD |
99991663 / attendance:task 权限错误 | 应用未开通考勤 scope | 飞书开放平台 → 应用权限管理 → 申请 attendance:task:readonly 并发布新版本 |
current_user_id is invalid(user-stats) | 新系统用户未传 --current-user-id | 补上 --current-user-id,值与 user-ids 中目标用户保持同源 |
invalid_user_ids / unauthorized_user_ids 非空 | 部分 user-id 不存在或应用对该用户无权限 | 核对 user-id 类型与应用可见范围设置 |
| 命令 | 必需 scope(tenant 级) |
|---|---|
attendance user-task query | attendance:task:readonly(推荐)或 attendance:task |
attendance user-stats query | attendance:task:readonly(推荐)或 attendance:task |
权限在飞书开放平台「应用权限管理」页面开通后应用需重新发布版本才生效;考勤数据涉及员工隐私,企业管理员通常会要求审批后才放权。
飞书审批操作(查询 + 写入)。读:definition detail / instance get / task query。 写:instance {create,cancel,cc} + task {approve,reject,transfer}。 instance get、task query、instance cancel/cc、task approve/reject/transfer 需要 User Token; instance create 使用 tenant_access_token。 当用户请求"提交审批"、"审批通过/拒绝"、"撤回审批"、"转交审批"、"抄送"、"审批查询"时使用。
飞书 OAuth 认证和 User Access Token 管理(Device Flow,RFC 8628)。 支持一键创建飞书应用、按域申请推荐权限、auth check 预检 scope、auth login 登录、Token 自动刷新。 覆盖 AI Agent 两步授权(--no-wait 拿链接 → --device-code 续轮询)、JSON 事件流解析、部分 scope 未授予(missing_scopes)的判读与补授。 当用户请求登录飞书、获取 Token、OAuth 授权、用户身份授权、device flow、权限缺失、Token 过期、create-app、99991672、99991679, 或其他飞书技能遇到 User Access Token 问题时使用。 本技能同时承载两个相关子命令:doctor 做配置/网络/代理体检(错误信息不指向 scope/token 时用), profile 管理多 App / 多账号独立配置(多租户切换)。 注意:profile 指 CLI 配置切换,与邮箱 mailbox profile(feishu-cli-mail)无关。
飞书多维表格(Bitable/Base)操作。底层使用 base/v3 新 API,支持视图完整配置写入、 记录 upsert、记录修改历史、角色 CRUD、高级权限开关、数据聚合查询等。 当用户请求"创建多维表格"、"操作数据表"、"添加记录"、"查询记录"、"管理字段"、 "多维表格"、"base"、"bitable"、"数据表"、"视图排序"、"视图过滤"、"视图分组"、 "角色"、"role"、"高级权限"、"advperm"、"数据聚合"、"data query"、 "复制多维表格"时使用。
飞书画板全能操作 · 5 种画图路径任选其一: (A) Mermaid/PlantUML 服务端渲染(思维导图/时序图/类图/饼图/流程图/甘特图,整图作为一个节点,飞书自动排版) (B) Mermaid 本地引擎 whiteboard-cli(绕开 par/参与方数等服务端限制,每个节点可点击编辑) (C) SVG 自由作图(任意视觉:飞轮/鱼骨/Dashboard/海报/插画/架构图等,每个 SVG 元素 → 1 个原生节点可单独编辑) → 使用 scripts/svg_to_board.py 把 SVG 翻译为飞书原生节点 (D) 简单 SVG 单节点装饰(图标/印章/小元素,2KB 以内 SVG) (E) 精排架构图(手写节点 JSON,绝对坐标 + 配色 + 连线 ID 引用) 当用户请求"画图/画板/whiteboard/画架构图/画流程图/画飞轮/画鱼骨/画路线图/画 Dashboard/画插画/画海报/ AI 自由作图/SVG 落画板/克隆画板/上传图片到画板/可视化/节点图/精排"时使用。 特别地,当用户反馈"右下角半截楼""z_index 错乱""节点翻倍""复杂图渲染不全""mermaid 服务端失败" 务必读 references/pitfalls.md 排障。 写类(add-board/create-notes/update/delete/clone/svg-import/upload-image/import)使用 App Token(默认 Bot 身份), 无需登录;即使用户已 auth login,写类命令仍保持 App 身份不切换。 读类(image/nodes/export-code/lint)登录后自动用 User Token,未登录回落 App Token。
飞书智能日历。calendar suggestion 找参会人共同空闲时段; calendar room-find 按容量/时段筛会议室;calendar rsvp 接受/拒绝邀请。 HTTP 直调 freebusy/suggestion + freebusy/room_find(SDK v3.5.3 未暴露), 自动 429 退避(DoWithRetry)。 当用户请求"找开会时间"、"找空闲时段"、"找会议室"、"接受/拒绝会议邀请"、 "freebusy"、"日程冲突检测"时使用。
构造美观、元素丰富的飞书 V2.0 交互式卡片(interactive card)。支持折叠面板、 多栏布局、图表、彩色标签、按钮组、人员卡、流式更新等 20+ 组件,内置 7 个场景模板 (通知 / 成功报告 / 告警 / 审批 / 数据大屏 / 文章摘要 / AI 流式)和配色布局规范。 当用户请求"发卡片"、"发通知"、"做告警"、"发报告"、"做审批"、"做 dashboard"、 "美化消息"、"interactive 卡片"、"v2 卡片"、"带图表的消息"、"带按钮的消息"、 "带折叠面板的消息"、"飞书卡片"、"Lark card"、"构造卡片"时使用。 即使用户只说"发个消息告诉 XX",只要内容有结构(多字段 / 多链接 / 图表 / 状态), 都应优先用本技能构造卡片而非纯文本。 构造出的 JSON 写入 /tmp/<name>-card.json,随后交给 feishu-cli-msg 用 --msg-type interactive 发送(msg 使用 App Token,无需 auth login)。