Skip to content

支持 Telegram 群组 Forum Topic 模式 #321

Description

@AnotiaWang

背景

当前 Chat Channel 的 Telegram 集成只能按整个 chat 路由消息。在 Telegram supergroup 开启 Forum Topics 后,多个任务/会话仍然共享同一个群聊上下文,容易出现以下问题:

  • 多个任务的回复混在同一个群里,阅读和追踪困难
  • 用户无法自然地用不同 topic 承载不同 Codeg 会话
  • /resume、权限审批、follow-up 等操作缺少 topic 级别的上下文
  • 在群组里使用 bot 时,需要更清晰地限制消息处理范围,避免误响应无关消息

目标

为 Telegram Chat Channel 增加可选的 Forum Topic 模式,使一个 Telegram topic 可以绑定一个 Codeg 会话,并在 topic 内完成任务启动、恢复、follow-up、权限审批和输出路由。

需求

  • 在 Telegram channel 配置中增加 topic_mode 开关。
  • topic_mode 关闭时保持现有 Telegram 行为不变。
  • topic_mode 开启时:
    • 仅处理配置的 chat_id 中的 Telegram update。
    • General topic 中仅允许通过显式 /task <description> 创建任务。
    • General topic 普通文本不触发任务创建。
    • /task 可自动创建新的 Telegram forum topic,并将新会话绑定到该 topic。
    • 在手动创建的 topic 中执行 /task 时,将该 topic 绑定到新会话。
    • 在 topic 中执行 /resume <id> 时,将当前 topic 绑定到恢复的会话。
    • follow-up、ACP 输出、权限审批、取消等操作按 topic 绑定路由。
    • 会话标题更新时尽量同步 Telegram topic 标题。
  • 支持 Telegram inline keyboard callback,用于 /folder/agent 选择。
  • 不影响 Lark/Feishu、Weixin 等其他 channel 的现有行为。
  • 补充使用文档和必要测试。

验收标准

  • Telegram 非 topic 模式行为保持兼容。
  • Topic 模式下不同 topic 的会话互不串线。
  • /task/resume/sessions/cancel/approve/deny、follow-up 在 topic 中能按预期工作。
  • General topic 普通文本不会触发任务。
  • Telegram callback query 能正确处理 inline keyboard 按钮。
  • 新建 topic 会话能使用 Web UI 中配置的 agent/model/provider 设置。
  • Rust 测试、clippy、前端 lint/build 通过。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions