消息订阅
消息订阅把 Telegram、RSS/Atom 等来源统一成提供方无关的消息流。系统先采集消息并入库,再把过滤任务放入队列,由 AI 判断忽略、观察或触发投研会议。
处理链路
支持来源
| 来源 | 用途 | 限制 |
|---|---|---|
| Telegram MTProto | 读取频道或群组消息 | 需要 app id、app hash、登录 session 和访问权限 |
| Telegram Bot | 通知和部分 bot 场景 | 需要 bot token |
| RSS/Atom | 采集公开 feed | 必须是公开 http 或 https,v1 不支持认证 |
创建订阅
创建订阅时确认:
- 提供方类型正确。
- 来源地址或频道引用可访问。
- 轮询间隔符合来源更新频率。
- 已选择消息过滤器。
- 启用状态下至少绑定一个研究团队。
- 提供方凭据已在对应配置区域保存。
启用状态的订阅没有团队绑定时,应视为配置错误。禁用订阅可以暂时保留空团队,便于后续补充。
过滤器设计
过滤器应描述清楚三类结果:
ignore:噪声、重复、广告、无关消息。observe:值得保留但不需要立即开会的消息。meeting:需要触发投研会议的消息。
建议每个过滤器聚焦一种信息源,不要把宏观新闻、公司公告、技术指标和闲聊消息全部塞进同一个过滤器规则。
Telegram 操作
MTProto 登录通常分两步:
bash
go run ./cmd/tradingcopilot message-subscription-login-start -app-id "<app_id>" -app-hash "<app_hash>" -phone "<phone>"
go run ./cmd/tradingcopilot message-subscription-login-verify -code "<telegram_code>"启用两步验证的账号需要在 verify 阶段提供二次验证密码。登录后先测试一个公开频道,再接入私有频道。
RSS/Atom 操作
RSS/Atom 适合新闻、公告和博客类来源。添加前先在服务器上验证 feed 地址可访问。不要使用带账号密码的 URL。
RSS 失败常见原因:
- Feed 返回 HTML 登录页而不是 XML。
- 站点屏蔽服务器出口 IP。
- 证书或代理异常。
- 内容字段不符合解析器预期。
验证方式
- 订阅列表显示上次采集时间和下次采集时间。
- 摄取消息列表出现新消息。
- 过滤状态从
unfiltered进入最终状态。 meeting决策创建会议。- 日志中没有持续采集错误或 AI 过滤错误。
排障
| 症状 | 检查 |
|---|---|
| 没有采集 | 订阅是否启用、轮询间隔、来源地址、listener 是否运行 |
| 采集报错 | 凭据、网络、频道权限、feed 格式 |
| 不过滤 | Redis、worker、AI 提供商、过滤器绑定 |
| 不触发会议 | 决策是否为 meeting、团队绑定、会议队列 |
| 重复消息 | sourceMessageId 是否稳定、来源是否重复推送 |