Plugin

Chat 插件

Chat 插件如何将 Agent 连接到聊天渠道

Chat 插件

Chat 插件将 Agent 连接到 Telegram、飞书、QQ 等聊天渠道。它处理收到的消息,将它们路由到 Agent 会话,并将回复发送回渠道。

功能

  • 监听已配置渠道的消息
  • 为每个对话创建或复用会话
  • 将用户消息路由到 Agent
  • 将 Agent 回复发送回渠道
  • 在消息进入 Agent 前执行按 Agent 隔离的 Chat Access 准入

配置

渠道在 Agent 配置的 plugins.chat.channels 下配置。CLI 管理的项目会把这段配置保存在全局 DB 中:

{
  "plugins": {
    "chat": {
      "channels": {
        "telegram": {
          "enabled": true,
          "channelAccountId": "telegram-main"
        },
        "feishu": {
          "enabled": true,
          "channelAccountId": "feishu-work"
        }
      }
    }
  }
}

渠道账号

实际的机器人凭证存储在 CLI 全局 DB 中(由 City 管理)。Agent 配置只通过 channelAccountId 引用它们。

Chat Access

外部用户第一次发送消息时,Chat Plugin 会在当前 Agent 的 .downcity/chat/access.db 中记录 Principal,并在没有 Grant 时创建 pending Request。管理员使用 Request ID 批准或拒绝:

downcity chat access requests --agent <agentId> --status pending
downcity chat access approve <requestId> --agent <agentId>

身份由渠道、当前 Chat 账号和平台用户 ID 共同确定。批准只对目标 Agent 生效,不会成为 City 全局权限,也不会传播到其他 Plugin。

支持的渠道

  • Telegram
  • 飞书 (Lark)
  • QQ

飞书依赖

@downcity/plugins 默认不再安装飞书 / Lark SDK。如果你在本地嵌入 SDK 宿主中启用飞书渠道,需要在宿主应用里安装:

npm install @larksuiteoapi/node-sdk@^1.66.0

现有 SDK import 可以保持不变:

import { ChatPlugin, FeishuChannel } from "@downcity/plugins";

不启用飞书的应用不需要安装飞书 SDK。

继续阅读: