「小龙虾」部署手记:阿里云 ECS + 百炼 Key + QQ 机器人
「小龙虾」部署手记:阿里云 ECS + 百炼 Key + QQ 机器人
「小龙虾」在这里指一套群聊 / 私聊 QQ 机器人的示例工程名:用户在 QQ 里发消息,机器人把文本交给阿里云百炼(通义大模型等)生成回复,再把结果发回 QQ。本文记录如何把这类服务稳定跑在阿里云 ECS 上,并正确、安全地使用 百炼 API Key,与 QQ 机器人协议端配合工作。
说明:QQ 机器人生态有多种实现(协议端、框架各不相同),下文以通用架构为主,你只需把「业务服务」换成自己仓库里的进程即可;合规使用请遵守平台协议与当地法规。
1. 架构怎么拆(先想清楚再部署)
典型分层如下:
flowchart LR
subgraph qq[QQ]
U[用户消息]
end
subgraph ecs[阿里云 ECS]
P[协议端 / 机器人进程]
S[业务服务:调用百炼 API]
end
subgraph cloud[阿里云]
B[百炼 DashScope / OpenAI 兼容接口]
end
U --> P --> S --> B
B --> S --> P --> U
| 组件 | 职责 |
|---|---|
| 协议端 | 与 QQ 服务器交互(登录、收消息、发消息)。常见有基于 OneBot 的各类实现,选型依社区与维护情况而定。 |
| 业务服务(小龙虾核心) | 解析消息、拼 Prompt、调用 百炼 HTTP API,再把模型输出交给协议端发送。 |
| 百炼 | 提供大模型推理;通过 API Key 鉴权。 |
部署到 ECS 时,通常是 同一台机器上跑 1~2 个进程(协议端 + 业务服务),或 Docker Compose 编排。
2. 阿里云 ECS:准备运行环境
选购与系统
- 选与软件栈匹配的镜像(如 Alibaba Cloud Linux 3、Ubuntu 22.04)。
- 规格按并发与模型调用量估算;纯文字机器人可先小规格验证。
安全组(必做)
- SSH 22:仅对你家宽 / 固定 IP 或跳板机开放,避免全网
0.0.0.0/0。 - 若业务服务提供 HTTP 回调 给协议端:只开放必要端口,并尽量配合 内网 / 127.0.0.1(协议端与业务同机则不必对公网暴露业务端口)。
- SSH 22:仅对你家宽 / 固定 IP 或跳板机开放,避免全网
基础加固
- 创建非 root 用户、
ssh-key登录;fail2ban等按需。 - 系统时间与 NTP 正常,避免鉴权、日志时间错乱。
- 创建非 root 用户、
3. 阿里云百炼:Key 的创建与使用方式
开通与控制台
- 在阿里云控制台进入 大模型服务平台百炼(产品名可能随控制台调整,认准 DashScope / 百炼)。
- 创建 API-KEY,复制后只保存在服务器环境变量或密钥管理中。
调用形态(概念)
- 百炼提供 DashScope 原生 API 与 OpenAI 兼容模式 等;你的业务代码需与所选接口一致(路径、请求体字段名不同)。
- 官方文档会给出 Base URL、模型名(如通义系列)、限流与计费说明,以当时文档为准。
环境变量(推荐)
在 ECS 上不要把 Key 写进 Git;用 systemd / Docker 注入,例如:
# /etc/xiaolongxia.env(权限 600,仅 root 可读)
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxx
业务进程启动前 source 该文件,或在 systemd 里用 EnvironmentFile= 引用。
- 轮换与泄露处理
- Key 泄露:立即在控制台作废并新建。
- 日志里禁止打印完整 Key;错误信息脱敏。
4. QQ 机器人:与「小龙虾」业务如何对接
协议端负责「传话」
- 用户消息到达后,协议端通过 HTTP / WebSocket / 反向 WebSocket 等机制(取决于你选的软件)把事件推给业务服务。
- 业务服务返回的文本(或 CQ 码)再由协议端发到 QQ。
业务服务负责「大脑」
- 收到纯文本 → 组装 Prompt(可加群号、用户昵称等上下文,注意隐私与合规)→ 调用百炼 → 截取/清洗模型输出 → 返回给协议端。
- 流式输出若协议端不支持,可在服务端攒够一句再发。
常见坑
- 超时:模型耗时长,协议端可能有 ACK 超时,需异步或心跳设计。
- 长度:QQ 单条消息有上限,需在业务层截断或分条。
- 频率:百炼与 QQ 侧都有频控,需做简单队列或丢弃策略。
5. 在 ECS 上落地部署(简要步骤)
以下是一种常见顺序,可按实际技术栈替换命令。
- 安装运行时(示例:Node / Python / Docker 其一)。
- 拉取你的「小龙虾」代码,在服务器上
pnpm install/pip install -r requirements.txt等。 - 配置
- 写入
.env(加入.gitignore)或仅用/etc/xiaolongxia.env。 - 填入:
DASHSCOPE_API_KEY、模型名、协议端回调地址(若分进程)。
- 写入
- 进程守护
- systemd:两个单元
xiaolongxia-protocol.service、xiaolongxia-bot.service,Restart=always。 - 或 pm2 / Docker Compose 一键起。
- systemd:两个单元
- 验证
- 本机
curl百炼接口(用环境变量里的 Key)确认 200。 - 再在 QQ 发测试消息看全链路。
- 本机
6. 可选:Nginx 与 HTTPS
若协议端或回调要求 HTTPS,可在 ECS 上 Nginx 反代 + Let’s Encrypt,证书自动续期。仅内网通信则不必对公网暴露业务端口。
7. 清单小结
| 项目 | 建议 |
|---|---|
| ECS | 安全组最小放行;SSH 加固;时间与日志可靠。 |
| 百炼 | API Key 仅存环境变量;接口与模型名以官方文档为准;注意配额与费用。 |
| QQ 机器人 | 协议端与业务解耦;注意超时、消息长度与合规。 |
| 运维 | systemd 守护;日志轮转;Key 轮换流程。 |
按上述方式,你可以把名为「小龙虾」的 QQ 机器人稳定落在阿里云上,用百炼提供对话能力;具体协议端与仓库命令以你所选开源项目文档为准,本文只固定云资源与密钥的用法边界。
