核心用法
telegram-compose 是一个子代理技能(sub-agent),专用于将原始内容格式化为 Telegram 支持的 HTML 富文本消息并发送。主会话代理根据决策规则自动调用:对于超过 3 行或包含结构化数据(列表、统计、章节、报告)的消息,触发该技能;简短回复则直接通过 OpenClaw 工具发送。
技能接收 Chat ID、可选的 Thread ID、原始内容,完成以下处理流程:
1. 读取格式化规则(HTML 标签、转义规则、结构模式)
2. 应用视觉层次:EMOJI + 粗体大写标题、标签-值对、项目符号、可展开引用块
3. 转义特殊字符(& → &, < → <, > → >)
4. 检查消息长度(上限 4,096 字符),超长时按章节边界分片
5. 自动检测 OpenClaw 配置文件获取 Bot Token
6. 通过 curl 调用 Telegram API 发送,处理 thread/non-thread 两种场景
显著优点
- 移动优先设计:明确禁止用
<pre>标签展示统计数据,采用 emoji + 粗体 + 分隔符的流动布局,避免等宽字体在移动端的换行断裂问题 - 容错机制完善:内置完整的错误处理矩阵(HTML 解析失败→降级纯文本、消息过长→分片重试、线程不存在→降级 General 频道、频率限制→等待重试),确保消息必达
- 视觉层级清晰:定义了 faux headings、标签-值对、可展开引用块等 Telegram-native 的格式模式,使长内容在移动端可扫描
- 自动化集成:主会话零配置调用,子代理完成全流程,主会话只需回复
NO_REPLY避免双发
潜在缺点与局限性
- 配置依赖:依赖本地 OpenClaw 配置文件(
~/.openclaw/openclaw.json或clawdbot.json),若配置缺失或格式错误将导致发送失败 - 平台锁定:HTML 语法为 Telegram 特有子集(如
<tg-spoiler>、<blockquote expandable>),无法直接迁移到其他 IM 平台 - 分片复杂度:超长消息分片需保持 HTML 标签完整性,章节边界判断依赖内容结构,非结构化长文本可能产生碎片化体验
- 无交互能力:仅支持单向发送,不支持消息编辑、删除、或响应回调查询
适合人群
- 系统管理员/运维人员:需要发送格式化警报、状态报告、部署通知
- 情报/研究人员:输出结构化研究结果、数据摘要、优先级列表
- 自动化工作流开发者:构建需要 Telegram 作为输出渠道的 agentic 系统
常规风险
| 风险场景 | 说明 |
|---------|------|
| Token 泄露 | Bot Token 存储在本地 JSON 文件,需确保文件权限(建议 600) |
| HTML 注入 | 未正确转义用户输入内容中的 `<`, `>`, `&` 可能导致消息解析失败或意外渲染 |
| 敏感信息外泄 | `<tg-spoiler>` 仅隐藏内容,不加密;敏感数据不应通过 Bot 发送 |
| API 频率限制 | 大量分片消息可能触发 `Too Many Requests`,需遵守退避策略 |
| 配置漂移 | 多账号场景下自动选择 `keys[0]` 可能选错账号,需验证配置一致性 |