⚙️ 实战案例完整拆解

从需求分析到上线运行,完整还原真实场景下的配置决策过程、踩坑记录与优化思路,不只告诉你"怎么做",更讲清楚"为什么这么做"。

01

Telegram 开发者答疑 Bot

为 500 人技术群打造 24 小时 AI 答疑助手,支持代码审查、错误诊断、文档查询

Telegram Claude Sonnet MCP

📋 需求分析

一个 500 人的 Python 开发者 Telegram 群,每天有大量重复性技术问题(环境配置、报错解析、库的用法),群主希望用 AI 减轻答疑负担,同时提升群的活跃度。

核心需求:能理解代码片段、能查文档、能解释报错、响应速度快、不能乱说(准确性优先)。

🤔 关键决策

为什么选 Claude Sonnet?

代码理解和错误诊断需要强推理能力。Sonnet 在代码任务上表现优秀,且比 Opus 便宜 5 倍,适合高频调用场景。

为什么接入 MCP GitHub?

开发者经常问"这个库怎么用",接入 GitHub MCP Server 后 Agent 可以直接查仓库 README 和 Issues,比靠训练数据更准确。

为什么关闭 terminal 工具?

群组场景下不需要执行命令,关闭 terminal 工具可以减少 Agent 误操作风险,也能降低每次调用的 token 消耗(工具定义也占 token)。

为什么设置白名单?

群组 Bot 如果不设白名单,任何人都能调用,会导致 API 额度被滥用。只允许群成员(通过 Telegram Group ID)使用。

⚙️ 完整配置

yaml
# ~/.hermes/config.yaml
model: anthropic/claude-sonnet-4.5

tools:
  terminal: {enabled: false}      # 关闭,群组场景不需要
  web_search: {enabled: true}
  web_fetch: {enabled: true}

mcp_servers:
  github:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"

gateways:
  telegram:
    enabled: true
    token: "${TELEGRAM_BOT_TOKEN}"
    whitelist_groups: [-1001234567890]  # 群组 ID(负数)
    reply_to_mentions_only: true        # 只响应 @Bot 的消息
💡 reply_to_mentions_only:在群组中建议开启此选项,否则 Bot 会响应群内所有消息,既消耗 API 额度,又会打扰正常讨论。用户需要 @Bot 才能触发回复。

🚧 踩坑记录

坑 1:Bot 在群组中收不到消息
原因:Telegram Bot 默认开启隐私模式,只能收到 @它 的消息和命令,无法收到普通群消息。
解决:通过 @BotFather 发送 /setprivacy,选择 Bot,选择 DISABLE 关闭隐私模式。
坑 2:代码块格式丢失
原因:Telegram 默认消息格式为纯文本,Markdown 代码块不会渲染。
解决:在 Gateway 配置中开启 parse_mode: MarkdownV2,并确保 Agent 的系统提示要求它使用 Markdown 格式回复。
✅ 上线效果:群内重复问题减少约 65%,Bot 日均响应 80+ 条消息,API 月均费用约 $12(Claude Sonnet 价格)。群主反馈"终于不用一直盯着群了"。
02

运维自动化助手(SSH 沙箱模式)

通过 Slack 远程操控生产服务器,执行运维任务,全程 SSH 隔离保障安全

Slack GPT-4o MCP

📋 需求分析

一个 5 人的小型运维团队,需要在 Slack 中通过自然语言执行服务器运维任务(查看日志、重启服务、检查磁盘、部署更新),避免每次都要 SSH 登录服务器。

核心需求:能执行终端命令、安全隔离(不能影响本地机器)、操作可追溯、支持多人使用。

🤔 关键决策

为什么用 SSH 沙箱而不是 Docker?

运维任务需要直接操作生产服务器,Docker 容器无法访问真实服务器环境。SSH 模式让 Agent 的 terminal 工具直接在远程服务器上执行,完美契合需求。

为什么选 GPT-4o?

运维任务涉及大量命令输出解析,GPT-4o 的工具调用稳定性和指令遵循能力在这类结构化任务上表现优秀,且支持 128K 上下文处理长日志。

为什么用 Slack 而不是 Telegram?

团队已在使用 Slack 协作,集成到 Slack 可以让运维操作和团队沟通在同一个地方,操作记录自然留存在频道历史中,便于追溯。

为什么接入 MCP Kubernetes?

团队使用 K8s 管理容器,MCP K8s Server 提供了结构化的集群操作接口,比直接执行 kubectl 命令更安全(有权限控制)。

⚙️ 完整配置

yaml
# ~/.hermes/config.yaml
model: openai/gpt-4o

terminal:
  backend: ssh
  ssh_host: "ops@prod-server.example.com"
  ssh_key: "~/.ssh/ops_rsa"
  ssh_timeout: 30

mcp_servers:
  kubernetes:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-kubernetes"]

gateways:
  slack:
    enabled: true
    bot_token: "${SLACK_BOT_TOKEN}"
    app_token: "${SLACK_APP_TOKEN}"   # Socket Mode
    allowed_channels: ["ops-bot"]       # 只在指定频道响应
    allowed_users: ["U123", "U456"]    # 只允许特定成员
⚠️ 安全建议:SSH 密钥应使用专用的运维账号,并通过 authorized_keys 限制该账号只能执行特定命令。不要使用 root 账号或个人账号的 SSH 密钥。

🚧 踩坑记录

坑:长时间命令导致 Slack 超时
Slack 要求 Bot 在 3 秒内响应,但某些运维命令(如 apt upgrade)需要几分钟。
解决:配置 Gateway 先发送"正在执行..."的即时响应,命令完成后再发送结果。在 config 中设置 ack_immediately: true
✅ 上线效果:团队日均通过 Slack 执行 30+ 次运维操作,SSH 登录次数减少 80%。所有操作记录自动保存在 Slack 频道,方便复盘。
03

Cron 定时报告推送系统

每日自动抓取数据、生成分析报告,定时推送到 Telegram 频道,全程无人值守

Telegram DeepSeek Cron

📋 需求分析

一个财经资讯 Telegram 频道,需要每天早 7 点推送当日市场概况、重要财经日历和前一日复盘,内容需要从多个数据源聚合,人工整理耗时 1 小时以上。

🤔 关键决策

为什么选 DeepSeek?

报告生成是批量任务,对延迟不敏感,但对成本敏感(每天都要跑)。DeepSeek-V3 的中文写作能力强,价格是 Claude 的 1/10,非常适合这类定时批处理场景。

为什么用 Cron 而不是外部调度器?

Hermes 内置 Cron 调度器,无需额外部署 crontab 或 Airflow,配置简单,且 Cron 任务可以直接使用 Agent 的所有工具(网络抓取、数据处理)。

⚙️ 完整配置

yaml
# ~/.hermes/config.yaml
model: deepseek/deepseek-chat

cron_tasks:
  - name: morning-briefing
    schedule: "0 7 * * 1-5"   # 工作日早 7 点
    gateway: telegram
    target: "@my_finance_channel"
    prompt: |
      请完成今日财经早报:
      1. 用 web_search 搜索"今日A股开盘前重要消息"
      2. 搜索"今日财经日历 重要数据发布"
      3. 整理成简洁的早报格式,包含:市场情绪、重要事件、需关注的风险点
      4. 用 Markdown 格式输出,控制在 500 字以内

  - name: evening-recap
    schedule: "30 15 * * 1-5"  # 工作日收盘后 15:30
    gateway: telegram
    target: "@my_finance_channel"
    prompt: |
      请生成今日收盘复盘:搜索今日A股收盘数据、涨跌幅榜、主要板块表现,
      分析今日市场主线,用简洁的语言总结给普通投资者。
🔍 Prompt 工程技巧:Cron 任务的 prompt 要比普通对话更具体、更结构化。明确告诉 Agent 要调用哪些工具、数据来源是什么、输出格式要求,可以大幅提升报告质量的稳定性。

🚧 踩坑记录

坑:Cron 任务偶发失败但无通知
网络问题或 API 限流导致任务失败时,默认情况下没有任何通知。
解决:配置 on_failure_notify,失败时向另一个 Telegram 账号发送告警消息。
坑:报告内容重复或质量不稳定
每次搜索结果不同,导致报告结构不一致。
解决:在 prompt 中提供严格的输出模板,用 --- 分隔各部分,并要求 Agent 严格按模板填充。
✅ 上线效果:频道每日准时推送,内容质量稳定。原本需要 1 小时人工整理的工作,现在完全自动化,每日 API 成本约 ¥0.3(DeepSeek 价格)。
04

本地隐私优先 Agent(Ollama 方案)

完全本地运行,数据不出境,适合处理敏感文档和私人信息的场景

Telegram Ollama 本地模型

📋 需求分析

一位律师希望用 AI 辅助处理合同文件,但合同内容高度敏感,不能上传到任何云端 API。需要完全本地运行的方案,同时希望通过 Telegram 方便地在手机上使用。

🤔 关键决策

为什么选 Ollama?

Ollama 是目前最简单的本地模型运行方案,一行命令即可下载并运行模型,且完全离线,数据绝对不出本机。

为什么选 Qwen2.5-7B?

中文法律文档处理需要强中文能力。Qwen2.5-7B 在中文理解上表现优秀,7B 参数在 16GB 内存的 Mac 上可流畅运行,且支持 Function Calling。

⚙️ 完整配置

bash
# 第一步:安装并启动 Ollama
# 访问 https://ollama.com 下载安装
ollama pull qwen2.5:7b-instruct
ollama serve   # 启动本地服务(默认 localhost:11434)

# 第二步:配置 Hermes 使用本地 Ollama
hermes config set model ollama/qwen2.5:7b-instruct
hermes config set OLLAMA_BASE_URL http://localhost:11434
yaml
# ~/.hermes/config.yaml
model: ollama/qwen2.5:7b-instruct

model_options:
  ctx_size: 65536    # 必须手动设置,Hermes 要求最低 64K
  temperature: 0.3   # 法律文档处理需要低温度,减少幻觉

tools:
  web_search: {enabled: false}   # 关闭网络工具,保证完全离线
  web_fetch: {enabled: false}
  terminal: {enabled: false}
  read_file: {enabled: true}     # 只开放文件读取

gateways:
  telegram:
    enabled: true
    token: "${TELEGRAM_BOT_TOKEN}"
    whitelist: [your_telegram_id]  # 只允许自己使用
⚠️ 本地模型的局限性:7B 模型的推理能力和上下文理解远不如 Claude/GPT-4,对于复杂的法律条款分析可能出现错误。建议将其定位为"辅助工具"而非"权威判断",重要结论仍需人工复核。
💡 性能优化:如果你有 Apple Silicon Mac(M1/M2/M3),Ollama 会自动使用 Metal GPU 加速,7B 模型的推理速度可达 30-50 tokens/s,体验接近云端 API。
🔍 Telegram + 本地模型的组合价值:Telegram Bot Token 是云端的,但消息内容只在你的本地机器上处理,不会发送到任何 AI 云服务。这个架构实现了"便捷接入"和"数据本地化"的完美平衡。
✅ 上线效果:完全离线运行,合同文件处理全程不出本机。通过 Telegram 在手机上随时可用,响应速度约 3-5 秒/条(M2 MacBook Pro)。