跳到主要内容
知仓学习社ZHICANG

feishu-im-read

|

不碰外部(只输出文字)无严重或高危命中op7418/CodePilot

它会碰到什么

扫了多少1 个文本文件,5 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

飞书 IM 消息读取

执行前必读

  • 该 Skill 中的所有消息读取工具均以用户身份调用,只能读取用户有权限的会话
  • feishu_im_user_get_messagesopen_idchat_id 必须二选一
  • 消息中出现 thread_id 时,根据用户意图判断是否用 feishu_im_user_get_thread_messages 读取话题内回复
  • 以用户身份读取后,如果消息内容中出现资源标记时,用 feishu_im_user_fetch_resource 下载,需要 message_id + file_key + type

快速索引:意图 → 工具

| 用户意图 | 工具 | 必填参数 | 常用可选 |

|---------|------|---------|---------|

| 获取群聊/单聊历史消息 | feishu_im_user_get_messages | chat_id 或 open_id(二选一) | relative_time, start_time/end_time, page_size, sort_rule |

| 获取话题内回复消息 | feishu_im_user_get_thread_messages | thread_id(omt_xxx) | page_size, sort_rule |

| 跨会话搜索消息 | feishu_im_user_search_messages | 至少一个过滤条件 | query, sender_ids, chat_id, relative_time, start_time/end_time, page_size |

| 下载消息中的图片 | feishu_im_user_fetch_resource | message_id, file_key(img_xxx), type="image" | - |

| 下载消息中的文件/音频/视频 | feishu_im_user_fetch_resource | message_id, file_key(file_xxx), type="file" | - |


核心约束

1. 时间范围:确保消息覆盖完整

当用户没有明确指定时间范围时,根据用户意图推断合适的 relative_time,确保返回的消息能完整覆盖用户关心的内容。用户明确指定时间时直接使用用户的值。

2. 分页:根据需要翻页获取更多结果

  • page_size 范围 1-50,默认 50
  • 返回结果中 has_more=true 时,可使用 page_token 继续获取下一页
  • 根据用户需求判断是否需要翻页:需要完整结果时继续翻页,浏览概览时第一页通常够用

3. 话题回复:主动展开话题获取上下文

获取历史消息时,返回的消息中如果包含 thread_id 字段,推荐主动获取话题的最新 10 条回复(page_size: 10, sort_rule: "create_time_desc")以提供更完整的上下文。

| 场景 | 行为 |

|------|------|

| 获取历史消息并需要理解上下文(默认) | 对发现的 thread_id 调用 feishu_im_user_get_thread_messages 获取最新 10 条回复 |

| 用户要求"完整对话"、"详细讨论"、"看看回复" | 获取话题全部回复(page_size: 50, sort_rule: "create_time_asc"),需要时翻页 |

| 用户只浏览消息概览 / 用户明确说不看回复 | 跳过话题展开 |

注意:话题消息不支持时间过滤(飞书 API 限制),只能通过分页获取。

4. 跨会话消息搜索

feishu_im_user_search_messages 支持跨所有会话搜索消息:

| 参数 | 说明 |

|------|------|

| query | 搜索关键词,匹配消息内容 |

| sender_ids | 发送者 open_id 列表 |

| chat_id | 限定搜索范围的会话 ID |

| mention_ids | 被@用户的 open_id 列表 |

| message_type | 消息类型:file / image / media |

| sender_type | 发送者类型:user / bot / all(默认 user) |

| chat_type | 会话类型:group / p2p |

搜索结果每条消息额外包含 chat_idchat_type(p2p/group)、chat_name。单聊消息还有 chat_partner(对方 open_id 和名字)。

5. 图片/文件/媒体资源的提取

消息内容中可能出现以下资源标记,用 feishu_im_user_fetch_resource 下载:

| 资源类型 | 内容中的标记格式 | fetch_resource 参数 |

|---------|-----------------|-------------------|

| 图片 | ![image](img_xxx) | message_id=om_xxx, file_key=img_xxx, type="image" |

| 文件 | <file key="file_xxx" .../> | message_id=om_xxx, file_key=file_xxx, type="file" |

| 音频 | <audio key="file_xxx" .../> | message_id=om_xxx, file_key=file_xxx, type="file" |

| 视频 | <video key="file_xxx" .../> | message_id=om_xxx, file_key=file_xxx, type="file" |

从消息的 message_id 字段和内容中的 file_key 组合即可调用 fetch_resource。

注意:文件大小限制 100MB,不支持下载表情包、卡片中的资源。

6. 时间过滤

feishu_im_user_get_messagesfeishu_im_user_search_messages 支持时间过滤,话题消息不支持。

| 方式 | 参数 | 示例 |

|------|------|------|

| 相对时间 | relative_time | todayyesterdaythis_weeklast_3_dayslast_24_hours |

| 精确时间 | start_time + end_time | ISO 8601 格式:2026-02-27T00:00:00+08:00 |

  • relative_timestart_time/end_time 互斥,不能同时使用
  • 可用的 relative_time 值:todayyesterdayday_before_yesterdaythis_weeklast_weekthis_monthlast_monthlast_{N}_{unit}(unit: minutes/hours/days)

7. open_id 与 chat_id 的选择

| 参数 | 格式 | 适用场景 |

|------|------|---------|

| chat_id | oc_xxx | 已知会话 ID(群聊或单聊均可) |

| open_id | ou_xxx | 已知用户 ID,获取与该用户的单聊消息(自动解析为 chat_id) |

两者必须二选一,优先使用 chat_id


使用场景示例

场景 1: 获取群聊消息并展开话题

步骤 1:获取群聊消息

{ "chat_id": "oc_xxx" }

步骤 2:返回的消息中发现 thread_id,展开话题最新回复:

{ "thread_id": "omt_xxx", "page_size": 10, "sort_rule": "create_time_desc" }

场景 2: 跨会话搜索消息

{ "query": "项目进度", "chat_id": "oc_xxx" }

场景 3: 分页获取更多消息

第一次调用返回 has_more: truepage_token: "xxx",继续获取:

{ "chat_id": "oc_xxx", "page_token": "xxx" }

场景 4: 下载消息中的资源

{ "message_id": "om_xxx", "file_key": "img_v3_xxx", "type": "image" }

常见错误与排查

| 错误现象 | 根本原因 | 解决方案 |

|---------|---------|---------|

| 消息结果太少 | 时间范围太窄或未传时间参数 | 根据用户意图推断合适的 relative_time |

| 消息不完整 | 没有检查 has_more 并翻页 | has_more=true 时用 page_token 翻页 |

| 话题讨论内容不完整 | 没有展开 thread_id | 发现 thread_id 时获取话题回复 |

| "open_id 和 chat_id 不能同时提供" | 同时传了两个参数 | 只传其中一个 |

| "relative_time 和 start_time/end_time 不能同时使用" | 时间参数冲突 | 选择一种时间过滤方式 |

| "未找到与 open_id=xxx 的单聊会话" | 没有单聊记录 | 改用 chat_id,或确认存在单聊 |

| 话题消息返回为空 | thread_id 格式不正确 | 确认为 omt_xxx 格式 |

| 图片/文件下载失败 | file_key 或 message_id 不匹配 | 确认 file_key 来自该 message_id |

| 权限不足 | 用户未授权或无权限 | 确认已完成 OAuth 授权且是会话成员 |

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 6,461
本站分层T1
该仓技能数9
原文件路径资料/feishu-openclaw-plugin/package/skills/feishu-im-read/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 9 个技能