示例会把可能含消息正文和身份标识的无限事件流明文写入本地文件
原文依据:4 处Skill 展示了两个无事件上限、无超时的后台 IM 消费者,并直接重定向到 receive.ndjson 和 reaction.ndjson。接收消息事件的 content 可包含可读消息正文,sender_id 和 chat_id 可标识发送者和会话。
只要进程持续运行,聊天内容、反应和标识符就会不断积累在工作目录文件中;其他本地用户、备份、同步工具或后续处理程序可能读取这些数据,磁盘占用也会持续增长。
该风险有依据,但相关命令位于示例中,只有代理照例执行时才会发生。示例把两个后台事件流重定向到明文 NDJSON 文件,且未设置事件数或时限;默认值意味着持续运行。消息事件可包含可读正文以及发送者、会话标识,因此文件会随事件累积敏感通信数据。用户可要求限定 `--max-events`/`--timeout`,只采集必要字段,并事先确认保存位置、访问权限、保留期和删除方式。
# Consume multiple EventKeys concurrently (one shape per process, no dispatcher)lark-cli event consume im.message.receive_v1 --as bot > receive.ndjson &lark-cli event consume im.message.reaction.created_v1 --as bot > reaction.ndjson &wait查看另外 3 个位置
| `--jq <expr>` | jq expression to filter / transform each event; empty output skips the event || `--max-events N` | Exit after N events. Default 0 = unlimited || `--timeout D` | Exit after duration D (e.g. `30s`, `2m`). Default 0 = no timeout. Whichever of `--max-events` / `--timeout` fires first wins || `--output-dir <dir>` | Write each event as a file (relative paths only; prevents traversal) || `--quiet` | Suppress ready/exit markers and per-event stderr diagnostics, including drop warnings. This can hide event loss. **AI should not use this** — it removes readiness and integrity signals || `--as user\|bot\|auto` | Identity for the session (see lark-shared) |**sender_id is open_id only**: the event payload carries no display name. Call the contact API separately if you need the sender's name.**`.content` shape depends on `message_type`** (this key uses a flat Custom schema; see [`events/im/message_receive.go`](../../../events/im/message_receive.go)):| message_type | `.content` shape | How to read ||---|---|---|| `text` / `post` / `image` / `file` / `audio` / `sticker` / `share_chat` / `share_user` / `media` / `system` | Human-readable text (convertlib-processed; `@mentions` resolved to display names) | Use `.content` directly || `interactive` (card) | Raw card JSON string (structured actions can't be losslessly flattened) | `.content \| fromjson` to get the card object |# group onlylark-cli event consume im.message.receive_v1 --as bot \ --jq 'select(.chat_type=="group") | {chat: .chat_id, from: .sender_id, msg: .content}'```