长消息自动拆分 skill。当回复内容超过渠道限制时,自动将消息拆分为多条有序发送,避免截断或丢消息。Auto-split long messages into smaller chunks before sending, with sequence markers.
许多消息渠道(飞书、Telegram 等)都有单条消息的字符数限制(飞书约4000字符)。当回复内容超出此限制时,消息要么被截断,要么静默失败,用户无法获得任何反馈。
在发送任何消息前,先检查其长度,必要时进行拆分。
python
def sendlongmessage(text, channel={active_channel}):
发送消息,若超出长度限制则拆分为多个片段。
参数:
text: 待发送的消息文本
channel: 目标渠道(feishu/telegram/discord/whatsapp/signal/imessage/openclaw-weixin)
返回:
发送的片段数量
MAX_LEN = 3600 # 飞书限制,预留余量
CHUNK_HEADER = [{i}/{total}]\n
if len(text) <= MAX_LEN:
message(action=send, channel=channel, message=text)
return 1
chunks = splittext(text, MAXLEN)
total = len(chunks)
for i, chunk in enumerate(chunks, 1):
header = f[{i}/{total}]\n if total > 1 else
message(action=send, channel=channel, message=header + chunk)
return total
def splittext(text, maxlen):
将文本拆分为最多 max_len 字符的片段。
优先在句子边界或换行处拆分,以保持可读性。
import re
# 首先尝试在句末标点处拆分
sentence_split = re.split(r(?<=[。!?.!?])\s+, text)
chunks = []
current =
for sentence in sentence_split:
if len(current) + len(sentence) + 1 <= max_len:
current += ( + sentence if current else sentence)
else:
if current:
chunks.append(current)
# 如果单个句子超出限制,则按词/字符拆分
if len(sentence) > max_len:
for i in range(0, len(sentence), max_len - 100):
chunks.append(sentence[i:i + max_len - 100])
current =
else:
current = sentence
if current:
chunks.append(current)
return chunks
| 渠道 | 最大字符数(约) | 备注 |
|---|---|---|
| 飞书 | 4000 | 硬性限制 |
| Telegram |
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 message-split-1776027040 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 message-split-1776027040 技能
skillhub install message-split-1776027040
文件大小: 2.05 KB | 发布时间: 2026-4-13 11:01