Plugin
Chat 插件
Chat 插件如何将 Agent 连接到聊天渠道
Chat 插件
Chat 插件将 Agent 连接到 Telegram、飞书、QQ 等聊天渠道。它处理收到的消息,将它们路由到 Agent 会话,并将回复发送回渠道。
功能
- 监听已配置渠道的消息
- 为每个对话创建或复用会话
- 将用户消息路由到 Agent
- 将 Agent 回复发送回渠道
- 在消息进入 Agent 前执行按 Agent 隔离的 Chat Access 准入
配置
Chat 与其他 Plugin 一样,通过 Agent Plugin Binding 配置行为,并通过 Plugin Resource 连接渠道。创建 Resource 时,CLI 根据 Schema 收集凭据,Resolver 再写入 name 等动态字段:
{
"plugin_name": "chat",
"config": {},
"resource_ids": ["telegram-a1b2c3", "feishu-d4e5f6"]
}city plugin resource create chat --interactive
city plugin config chat <agent_id> --resources '["telegram-a1b2c3"]'Chat Resources
完整 Resource Item 加密存储在 CLI 全局 DB 中。每个 Item 都有稳定 id、类型和展示 name;Binding 只保存 Resource ID。Resource 可以被多个 Agent 复用,运行时 Plugin 接收的是 ID 解析后的完整 Item 快照。
Chat Access
外部用户第一次发送消息时,Chat Plugin 会在当前 Agent 的 .downcity/chat/access.db 中记录 Principal,并在没有 Grant 时创建 pending Request。管理员使用 Request ID 批准或拒绝:
city plugin action chat access-snapshot <agent_id> --input '{}' --token <token>
city plugin action chat access-approve <agent_id> --input '{"request_id":"<request_id>"}' --token <token>身份由渠道、当前 Chat Resource ID 和平台用户 ID 共同确定。批准只对目标 Agent 生效,不会成为 City 全局权限,也不会传播到其他 Plugin。
支持的渠道
- Telegram
- 飞书 (Lark)
飞书依赖
@downcity/plugins 默认不再安装飞书 / Lark SDK。如果你在本地嵌入 SDK 宿主中启用飞书渠道,需要在宿主应用里安装:
npm install @larksuiteoapi/node-sdk@^1.66.0使用 Chat plugin 的独立子路径:
import { ChatPlugin, FeishuChannel } from "@downcity/plugins/chat";不启用飞书的应用不需要安装飞书 SDK。
继续阅读: