1. 项目概述与核心价值最近在折腾AI Agent的生态发现一个挺有意思的项目dryeab/mcp-telegram。简单来说这是一个实现了模型上下文协议的Telegram服务器。如果你对MCPModel Context Protocol这个词感到陌生别急我先用人话解释一下。你可以把MCP想象成一个“万能翻译官”或者“标准化的插件接口”。它让像Claude、Cursor这类AI助手能够安全、规范地去访问和使用外部工具、数据源和API比如读取数据库、操作文件、或者像这个项目一样收发Telegram消息。那么dryeab/mcp-telegram具体是干什么的呢它把你的Telegram账号通过一个机器人或用户客户端的能力封装成了MCP兼容的资源Resources和工具Tools。这意味着你可以在支持MCP的AI工作流中直接让AI去帮你完成一系列Telegram相关的操作。想象一下这些场景你正在用Claude Deskop分析数据突然需要把图表分享到某个Telegram群组无需切换应用直接告诉Claude“把这个图发到我们的技术讨论群”或者你搭建了一个自动化监控脚本当系统出现异常时不仅能发邮件还能通过MCP让AI助手自动编写一条清晰的通知并发送到你的Telegram私聊或频道再或者你想让AI帮你整理并备份某个频道的精华消息它可以直接通过这个MCP服务器读取历史记录。这个项目解决的核心痛点是打破了AI助手与即时通讯工具之间的壁垒将通讯能力无缝嵌入到AI智能体Agent的决策与执行循环中。它非常适合那些已经深度使用Telegram进行团队协作、社区管理或个人知识管理的开发者、运维和自动化爱好者。你不用再为AI编写复杂的、针对特定通讯工具的适配代码而是通过一个标准协议即插即用地获得通讯能力。接下来我会详细拆解这个项目的部署、配置、核心功能以及在实际使用中会遇到的各种“坑”和技巧。2. 项目架构与MCP协议解析2.1 MCP协议的核心思想在深入这个Telegram服务器之前有必要先理解MCP协议扮演的角色。AI模型本身是“孤岛”它擅长处理和生成文本但对外部世界一无所知——它不知道你的文件系统里有什么不知道数据库里的用户数据当然也不知道你的Telegram聊天记录。传统的做法是为每个AI应用如ChatGPT的插件、LangChain的Tools单独开发集成代码这导致了碎片化和重复劳动。MCP提出了一种标准化方案。它定义了一套简单的、基于JSON-RPC的协议用于在AI应用客户端和资源提供方服务器之间进行通信。服务器向客户端宣告“我这里有哪些资源比如文件、数据库表、消息列表和哪些工具比如发送消息、搜索记录可用。”客户端如Claude在需要时就可以按名称调用这些工具或者请求读取这些资源。dryeab/mcp-telegram项目就是一个MCP服务器。它的核心职责是封装Telegram API将Telegram客户端通过MTProto协议的复杂操作包装成一个个简单的、语义化的MCP工具。暴露MCP接口通过标准输stdio或HTTP等传输方式等待MCP客户端连接并处理其请求。管理会话与状态安全地处理Telegram账号的登录、会话持久化以及消息收发状态。这种架构的优势在于解耦和复用。AI客户端无需关心Telegram API的细节而这个MCP服务器一旦部署好可以被任何支持MCP的客户端使用。2.2 项目组件与工作流程该项目通常以Docker容器或直接运行Node.js脚本的方式部署。其内部工作流程可以分解为以下几个关键环节初始化与登录服务器启动后首先需要完成Telegram客户端的初始化。这需要你的API凭证api_id和api_hash从Telegram官网申请。如果是第一次登录可能会需要验证码或二次验证。项目会尝试读取已有的会话文件如session.session来恢复登录状态避免每次重启都需验证。MCP服务器启动登录成功后项目会启动一个MCP服务器实例。这个实例会加载预定义的工具列表和资源列表。例如工具可能包括send_message、get_chat_history资源可能包括chats对话列表。协议通信MCP服务器通过标准输入输出stdio与父进程通信。当与Claude Desktop等集成时Claude作为父进程启动这个MCP服务器子进程并通过stdio管道发送JSON-RPC请求和接收响应。请求处理与转发当AI客户端调用send_message工具时MCP服务器收到一个结构化的请求包含参数如chat_id或用户名、text内容等。服务器将此请求转换为对Telegram客户端库如gram.js或telegram的调用。响应与错误处理将Telegram API的调用结果成功或失败包装成MCP标准的响应格式返回给AI客户端。同时需要妥善处理网络错误、速率限制、消息格式错误等异常。注意项目的具体实现依赖于底层的Telegram客户端库。不同的库在功能完整性、稳定性和异步处理上可能有差异这直接影响了MCP服务器工具的可靠性和功能范围。在选择部署方式或自行构建时需要关注其依赖库的成熟度。3. 环境准备与部署实操3.1 前置条件与Telegram API申请无论你采用哪种部署方式第一步都是获取Telegram API的访问凭证。这不是Bot Token而是用于模拟官方客户端用户账号的api_id和api_hash。访问 my.telegram.org 使用你的Telegram账号登录。点击“API development tools”。填写应用信息。这里的“App title”和“Short name”可以随意填写用于标识你的应用例如“My MCP Server”。“Platform”通常选“Desktop”。提交后你将获得api_id和api_hash。请立即妥善保存api_hash尤其敏感需像密码一样保管。此外你需要准备一个运行环境。推荐使用Linux服务器或本地开发环境Mac/Linux/WSL2确保已安装Node.js(版本18或更高推荐LTS版本)npm或yarn或pnpm包管理器Docker和Docker Compose如果选择容器化部署3.2 部署方式一使用Docker Compose推荐对于大多数用户尤其是希望长期稳定运行或快速尝鲜的Docker部署是最清晰、隔离性最好的方式。dryeab/mcp-telegram项目通常提供了docker-compose.yml示例。步骤详解创建项目目录并编写配置文件mkdir mcp-telegram-server cd mcp-telegram-server创建docker-compose.yml文件version: 3.8 services: mcp-telegram: # 使用项目提供的镜像或从Dockerfile构建 image: ghcr.io/dryeab/mcp-telegram:latest container_name: mcp-telegram restart: unless-stopped environment: # 必填从my.telegram.org获取 - API_ID你的api_id - API_HASH你的api_hash # 可选登录手机号国际格式如8613012345678 - PHONE_NUMBER你的手机号 # 可选会话存储路径映射到宿主机以便持久化 - SESSION_PATH/app/session.session volumes: # 将容器内的会话文件持久化到宿主机避免重启后重新登录 - ./session-data:/app stdin_open: true # 保持标准输入打开用于交互式登录如果需要 tty: true # 分配一个伪终端用于输出登录二维码或验证码 # 网络模式通常不需要暴露端口因为MCP over stdio network_mode: host # 或者bridge根据需求调整创建session-data目录用于持久化会话mkdir session-data启动容器并进行首次登录docker-compose up首次运行容器会尝试登录。根据日志输出你可能需要输入验证码如果日志提示“Enter code:”你需要从Telegram官方应用收到的消息中获取验证码并在终端输入。二次密码验证如果你设置了两步验证则需要输入密码。二维码登录有些实现支持二维码登录日志会打印一个二维码的终端图形或链接你用Telegram官方App扫描即可。实操心得第一次登录过程可能在容器内进行交互不太方便。一个技巧是先用docker-compose run --rm mcp-telegram /bin/sh进入容器shell手动运行登录脚本完成首次认证并生成session.session文件然后再用docker-compose up -d后台启动。这样session.session文件会通过卷映射保存在宿主机./session-data下后续重启容器无需再次登录。验证服务运行登录成功后容器会持续运行等待MCP客户端连接。你可以查看日志确认没有报错docker-compose logs -f3.3 部署方式二从源码运行用于开发或深度定制如果你需要修改代码、添加自定义工具或进行调试从源码运行是必要的。克隆仓库与安装依赖git clone https://github.com/dryeab/mcp-telegram.git cd mcp-telegram npm install # 或 pnpm install 或 yarn配置环境变量创建.env文件内容参考API_ID你的api_id API_HASH你的api_hash PHONE_NUMBER你的手机号 SESSION_STRING_FILE./session.session # 其他可选配置如日志级别 LOG_LEVELdebug构建与运行项目通常是TypeScript编写需要先编译。npm run build然后运行编译后的JS文件或者使用ts-node直接运行npm start # 或者如果package.json中配置了start脚本指向编译后的入口同样首次运行会触发登录流程根据提示操作即可。集成测试你可以使用一个简单的MCP客户端测试脚本来验证服务器是否正常工作。例如使用modelcontextprotocol/sdk创建一个测试客户端调用list_tools看看是否返回了send_message等工具。3.4 配置Claude Desktop集成这是最关键的一步让Claude能够使用这个Telegram服务器。定位Claude配置目录macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.jsonLinux:~/.config/Claude/claude_desktop_config.json编辑配置文件如果文件不存在就创建它。配置内容如下关键是指定MCP服务器的启动命令。{ mcpServers: { telegram: { command: docker, args: [ run, -i, --rm, --networkhost, -v, /path/to/your/session-data:/app, -e, API_ID你的api_id, -e, API_HASH你的api_hash, ghcr.io/dryeab/mcp-telegram:latest ], env: { // 可以在这里覆盖环境变量 } } } }重要解释command: docker告诉Claude使用docker命令来启动服务器。args这是传递给docker run的参数。-i保持标准输入打开这对MCP通信至关重要。--rm让容器退出后自动清理。-v映射会话卷。-e设置环境变量。你也可以配置为直接调用本地Node脚本如command: node “args”: [“/path/to/mcp-telegram/dist/index.js”]。重启Claude Desktop保存配置文件后完全关闭并重新启动Claude Desktop应用。验证连接重启后在Claude的聊天界面你应该能看到一个微小的变化比如输入框上方可能出现一个服务器连接状态的提示或者当你输入“/”时工具列表中可能出现Telegram相关的工具。最直接的验证方法是问Claude“你现在可以使用哪些MCP工具”或者“你能帮我给我自己发一条测试消息吗”。如果配置成功Claude会识别出Telegram工具并尝试使用。4. 核心工具与资源详解成功部署并集成后我们来深入看看这个MCP服务器具体提供了哪些“能力”。根据MCP协议能力主要通过“工具”和“资源”来暴露。4.1 工具列表与使用范例工具是AI可以主动调用的函数。以下是dryeab/mcp-telegram可能提供的一些核心工具具体以项目最新实现为准send_message(发送消息)功能向指定的对话私聊、群组、频道发送文本消息。参数chat_id(整数或字符串): 接收者的ID。可以是数字形式的Chat ID也可以是用户名如username或username。如何获取Chat ID这是一个常见难点。你可以先使用get_dialogs工具列出最近对话其中会包含ID。或者在Telegram Web或第三方客户端中有些方式可以查看原始Chat ID。text(字符串): 要发送的消息内容。支持基本Markdown或HTML格式取决于服务器实现。reply_to_message_id(可选整数): 要回复的消息ID用于线程对话。AI调用示例当用户对Claude说“请把‘系统部署完成’这个消息发到‘运维警报群’”Claude内部会构造类似以下的请求给MCP服务器{ jsonrpc: 2.0, method: tools/call, params: { name: send_message, arguments: { chat_id: ops_alerts, text: 系统部署已完成所有服务运行正常。 } } }get_chat_history(获取聊天历史)功能获取指定对话的历史消息。参数chat_id(整数或字符串): 对话ID。limit(可选整数): 要获取的消息数量默认可能是20或50。offset_id(可选整数): 从哪条消息ID之前开始获取用于分页。使用场景AI需要了解某个群的上下文时。例如用户说“总结一下‘技术分享群’里昨天关于‘MCP协议’的讨论”Claude可以先调用此工具获取历史消息再进行总结。search_messages(搜索消息)功能在全局或特定对话中搜索包含关键词的消息。参数query(字符串): 搜索关键词。chat_id(可选): 限定在某个对话中搜索。limit: 返回结果数量。使用场景知识检索。例如“帮我找一下上次谁在群里分享了那个服务器监控的Grafana面板链接”。get_chat_info(获取聊天信息)功能获取对话的详细信息如标题、类型、成员数量等。参数chat_id。用途AI在操作前确认目标对话是否正确。send_media(发送媒体如图片、文档)功能发送图片、文件等。实现复杂度较高需要处理文件上传。参数除了chat_id还需要file_path本地路径或file_url网络URL。服务器需要能访问到该文件。注意事项在Docker环境中需要将宿主机文件路径通过卷映射到容器内AI调用时提供的路径必须是容器内的路径。4.2 资源列表与访问方式资源是AI可以读取的数据源。MCP客户端在初始化时会加载资源列表AI可以像“阅读文档”一样读取这些资源。chats(对话列表)描述当前账号加入的所有对话私聊、群组、频道的列表。内容可能包含每个对话的ID、标题、类型、最后一条消息预览等。AI使用方式当用户说“把我的群组列表给我看看”Claude可以请求读取chats资源获取后以友好的格式呈现给用户。chat://{chat_id}(特定对话资源)描述一个URI模式的资源指向特定对话的详细信息或最近消息。动态性这是一个模板资源{chat_id}会被具体值替换。AI可以通过这种模式动态访问任何已知ID的对话信息。工具与资源的区别工具是“动词”AI主动执行操作资源是“名词”AI被动读取信息。在实际交互中AI可能会先读取chats资源来寻找目标对话的ID然后调用send_message工具进行操作。5. 高级应用场景与自动化实践将Telegram集成到MCP生态后其应用场景就从简单的“发消息”扩展到了复杂的自动化与智能协作流程。5.1 场景一AI辅助的社区管理与客服假设你管理着一个活跃的Telegram技术社区。自动欢迎新成员结合一个监听“新成员加入”事件的脚本可以是另一个服务当事件触发时调用MCP服务器让AI生成个性化的欢迎词并发送。AI可以根据新成员的公开资料或首个发言调整欢迎语的内容。智能问答与内容提炼成员在群里提问。你可以一个专门的AI助手机器人背后连接着ClaudeMCP。AI可以读取该问题的上下文get_chat_history然后调用知识库或网络搜索生成回答并通过MCP发送。对于长篇的技术讨论AI可以定期或应请求对讨论内容进行总结get_chat_history- 总结 -send_message。违规内容识别与提醒可以设置一个后台进程定期抓取新消息需注意Telegram API限制交给AI进行内容安全分析。如果发现疑似违规或不符合群规的内容AI可以通过MCP向管理员发送私信提醒并附上消息链接和判断依据。5.2 场景二个人知识管理与智能提醒对于个人使用这可以成为一个强大的信息中枢。消息智能分类与归档让AI监控你加入的多个新闻频道、博客推送频道。AI可以读取新消息search_messageswith filter for new根据内容将其分类如“编程”、“科技新闻”、“个人备忘”并自动转发到不同的私有频道或保存到笔记软件如通过另一个MCP服务器连接Notion或Obsidian。会议纪要自动生成在项目讨论群中当会议结束时发送一条指令如“/summary”。一个监听此命令的AI可以获取最近一小时get_chat_historywith limit and time filter的聊天记录自动生成包含讨论要点、决策事项和待办任务的会议纪要并发送回群内或给指定成员。基于上下文的智能提醒在聊天中你提到“下周一记得把报告发给客户”。AI可以识别出这是一个待办事项并询问“需要我为你创建一个提醒吗具体时间和内容是什么”在你确认后AI可以通过MCP调用日历或待办事项工具如果配置了创建提醒并在到期时通过Telegram私信你。5.3 场景三系统监控与告警增强这是DevOps的典型场景。多级告警与智能摘要传统的监控系统如Prometheus Alertmanager可以配置Webhook将告警发送到一个自定义服务。这个服务不再只是简单转发而是通过MCP请求AI“这里有一条K8s集群CPU使用率超过90%的告警请用清晰、非技术性的语言描述这个问题并给出初步排查建议。”然后AI生成的消息再通过MCP发送到Telegram运维群。这样告警信息更易读且包含了初步的“诊断”信息。告警确认与处理跟踪在Telegram告警消息中可以包含内联键盘按钮这需要MCP服务器支持发送带按钮的消息。当值班工程师点击“已处理”按钮时可以触发一个回调通知AI或后端系统更新告警状态甚至让AI自动记录处理人、时间并询问处理结果摘要形成简单的故障报告。实现这些场景的关键在于dryeab/mcp-telegramMCP服务器只是“手”和“耳朵”它需要与一个“大脑”AI模型和可能的“中枢神经系统”一个编排逻辑的中间件如简单的Node.js脚本、Python程序或更复杂的如LangGraph、Windmill等工作流引擎配合工作。MCP协议标准化了“手”、“耳”与“大脑”之间的通信方式使得构建这样的智能体应用变得更加模块化和简单。6. 常见问题、故障排查与性能优化在实际部署和使用过程中你几乎一定会遇到一些问题。下面是我踩过的一些坑和解决方案。6.1 登录与认证问题问题现象可能原因解决方案启动后提示“API_ID_INVALID”api_id和api_hash填写错误或未设置。1. 检查环境变量或配置文件中的API_ID和API_HASH值确保与my.telegram.org申请的一致且无多余空格。2. 确保应用已创建成功有时新创建的应用需要几分钟生效。登录时收不到验证码1. 手机号格式错误。2. 账号被限制。3. 使用的SIM卡不在身边短信验证。1. 确认PHONE_NUMBER为国际格式如8613012345678。2. 尝试在官方Telegram App中检查是否有登录请求或使用App内验证码。3. 如果项目支持尝试使用SESSION_STRING会话字符串登录避免每次验证。二次验证密码错误输入的两步验证密码错误。确保输入的是你为Telegram账号设置的“两步验证”密码不是手机短信验证码。如果忘记需要通过Telegram的账号恢复流程重置。会话文件失效session.session文件损坏或过期。删除旧的session.session文件或重命名备份重新启动服务触发全新登录流程。持久化会话文件时确保容器有写入权限。6.2 连接与通信问题问题现象可能原因解决方案Claude Desktop无法识别Telegram工具1. MCP服务器未成功启动。2. Claude配置错误。3. 版本不兼容。1. 单独运行MCP服务器命令看是否有报错。例如在终端执行docker run ...命令检查输出。2. 仔细检查claude_desktop_config.json的语法特别是args数组的格式和路径映射。3. 确认Claude Desktop版本和MCP服务器版本兼容。尝试使用MCP服务器的稳定版本标签而非latest。AI调用工具后无反应或超时1. 网络问题导致Telegram API调用失败。2. MCP服务器进程卡死或崩溃。3. 参数格式错误。1. 查看MCP服务器的日志docker-compose logs通常会有详细的错误信息如“FLOOD_WAIT”表示触发速率限制。2. 检查服务器进程是否还在运行。重启服务试试。3. 确保AI传递给工具的chat_id等参数是服务器期望的格式。对于用户名尝试带和不带两种形式。发送消息成功但对方收不到1. 目标聊天ID错误消息发到了别处。2. 在频道中账号没有发送消息的权限。3. 消息内容被过滤敏感词。1. 先用get_dialogs工具确认准确的聊天ID和标题。2. 在频道中确保账号是管理员或有发送消息权限。3. 尝试发送一段纯文本测试消息。6.3 安全与隐私考量会话安全session.session文件本质上是你的Telegram账号的登录凭证。必须妥善保管。在Docker部署中确保卷映射的宿主机目录权限严格如chmod 600 session-data。不要将此文件提交到Git仓库或分享给他人。API凭证保护api_hash同样敏感应通过环境变量或安全的密钥管理服务传递而非硬编码在代码或配置文件中。权限最小化为这个MCP服务器使用的Telegram账号考虑创建一个专门的账号而不是你的主号。并仔细审查该账号加入的群组和频道避免不必要的隐私暴露。AI所能读取和操作的范围就是这个账号的权限范围。操作审计考虑为MCP服务器的调用添加日志记录记录下AI在什么时间、以什么理由用户指令、执行了什么操作发送了什么消息、读取了哪个聊天。这对于调试和审计至关重要。6.4 性能优化与稳定性建议处理速率限制Telegram API对调用频率有严格限制。如果你的AI频繁调用get_chat_history等工具很容易触发FLOOD_WAIT错误。在服务器端代码中应实现简单的请求队列和延迟重试机制。对于高频操作考虑缓存策略例如缓存对话列表定期更新。会话持久化与重连网络不稳定可能导致Telegram客户端断开连接。确保MCP服务器实现了自动重连逻辑并在重启后能可靠地从session.session文件恢复会话而不是要求重新登录。错误处理与用户反馈当工具调用失败时MCP服务器应返回结构化的错误信息。AI客户端如Claude最好能将这些错误以友好的方式转述给用户例如“消息发送失败可能是因为网络问题或对方设置了隐私权限”而不是抛出一串JSON-RPC错误码。资源清理对于send_media这类工具如果涉及上传临时文件服务器在操作完成后应及时清理临时文件避免磁盘空间被占满。7. 扩展开发与自定义工具如果你不满足于项目自带的工具或者有特殊需求那么对其进行扩展开发是必然的选择。这要求你具备一定的Node.js/TypeScript编程能力。7.1 理解项目代码结构通常这类MCP服务器的源码结构如下src/ ├── index.ts # 程序主入口初始化Telegram客户端和MCP服务器 ├── server.ts # MCP服务器核心定义工具和资源 ├── tools/ # 工具实现目录 │ ├── sendMessage.ts │ ├── getChatHistory.ts │ └── ... ├── resources/ # 资源定义目录可能 ├── telegram/ # Telegram客户端封装层 │ └── client.ts └── utils/ └── helpers.ts你的主要修改点在server.ts和tools/目录下。7.2 添加一个自定义工具pin_message置顶消息假设我们想添加一个置顶消息的工具。在tools/目录下创建新文件pinMessage.tsimport { Tool } from modelcontextprotocol/sdk/server.js; import { telegramClient } from ../telegram/client.js; // 假设有导出的客户端实例 export const pinMessageTool: Tool { name: pin_message, description: Pin a message in a chat. The chat must be a supergroup or channel., inputSchema: { type: object, properties: { chat_id: { type: [string, integer], description: Chat identifier (ID or username) where the message resides. }, message_id: { type: integer, description: Identifier of the message to pin. }, disable_notification: { type: boolean, description: Pass true to pin the message silently, without notifying chat members., default: false } }, required: [chat_id, message_id] } }; export async function handlePinMessage(args: { chat_id: string | number; message_id: number; disable_notification?: boolean; }) { try { // 调用Telegram客户端库的置顶方法 // 这里假设使用gram.js实际方法名需查阅对应库文档 const result await telegramClient.invoke({ _: pinMessage, chat_id: args.chat_id, message_id: args.message_id, disable_notification: args.disable_notification }); return { content: [ { type: text, text: Message ${args.message_id} has been pinned successfully in chat ${args.chat_id}. } ] }; } catch (error: any) { // 处理特定错误如权限不足、消息不存在等 let errorMessage Failed to pin message: ${error.message}; if (error.message.includes(CHAT_ADMIN_REQUIRED)) { errorMessage I need to be an administrator in that chat to pin messages.; } else if (error.message.includes(MESSAGE_ID_INVALID)) { errorMessage The specified message ID is invalid or the message may have been deleted.; } throw new Error(errorMessage); } }在server.ts中注册新工具import { pinMessageTool, handlePinMessage } from ./tools/pinMessage.js; // ... 在创建MCP服务器的代码部分 ... const server new Server( { name: mcp-telegram-server, version: 1.0.0, }, { capabilities: { tools: {}, // 留空在后面的handler中动态提供 }, } ); // 注册工具处理函数 server.setRequestHandler(tools/list, async () { return { tools: [ // ... 其他已存在的工具 ... pinMessageTool, // 添加新工具 ], }; }); server.setRequestHandler(tools/call, async (request) { const { name, arguments: args } request.params; if (name pin_message) { return await handlePinMessage(args as any); } // ... 其他工具的处理 ... throw new Error(Unknown tool: ${name}); });重新构建并运行修改完成后运行npm run build重新编译然后重启你的MCP服务器。在Claude中你应该就能看到并使用新的pin_message工具了。7.3 调试与测试开发自定义工具时一个高效的调试方法是使用MCP Inspector或编写一个简单的测试客户端。MCP Inspector这是一个图形化工具可以连接到任何MCP服务器列出其工具和资源并手动调用它们非常适合调试。你可以搜索modelcontextprotocol/inspector来找到和使用它。简易测试脚本写一个Node.js脚本使用modelcontextprotocol/sdk的Client类连接到你的服务器通过stdio或HTTP然后调用工具并打印结果。这能帮你快速验证工具逻辑是否正确而无需每次都通过Claude。扩展开发是挖掘MCP潜力的关键。通过自定义工具你可以将任何Telegram API支持的操作如创建投票、管理成员、编辑消息等都暴露给AI从而构建出极其强大的自动化工作流。