OpenClaw("龙虾")是2026年增长最快的开源AI Agent项目,100天GitHub星标28.5万。腾讯已经推出了基于OpenClaw的"龙虾特种部队"产品套件并接入微信生态。
但对于企业开发者来说,直接在本地跑OpenClaw存在明显短板:单点故障、安全薄弱、无法多人协作。本文基于腾讯云基础设施,给出一套生产可用的部署方案——用CVM跑Agent Runtime,TDSQL-C存储记忆数据,COS存放Skill资产,企业微信Bot作为交互入口,最终实现一套安全、高可用、可观测的企业级AI Agent系统。
本文适用对象: 有腾讯云使用经验的后端/运维工程师,需要为团队部署一套内部AI Agent平台。
企业微信用户
│
▼
┌──────────────────────────────────────────────────────┐
│ 企业微信Bot回调 │
│ (HTTPS + 消息加解密) │
└─────────────────────────┬────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────┐
│ CLB (负载均衡) │
│ 四层TCP转发 / 健康检查 │
└───────────┬─────────────┬────────────────────────────┘
│ │
▼ ▼
┌────────────┐ ┌────────────┐
│ CVM实例1 │ │ CVM实例2 │ Agent Runtime
│ (主节点) │ │ (备节点) │ Node.js 20
└──────┬─────┘ └──────┬─────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────────┐
│ 基础设施层 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────┐ ┌────────┐ │
│ │ TDSQL-C │ │ Redis │ │ COS │ │ CLS │ │
│ │(PostgreSQL│ │ (会话缓存│ │(Skill │ │(日志采集│ │
│ │ +pgvector)│ │ +队列) │ │ 资产) │ │ +告警) │ │
│ └──────────┘ └──────────┘ └───────┘ └────────┘ │
└──────────────────────────────────────────────────────┘模块 | 腾讯云产品 | 选型理由 |
|---|---|---|
计算 | CVM S6(2核4G起步) | 稳定、弹性,可按需升配 |
数据库 | TDSQL-C PostgreSQL版 | Serverless弹性计费,原生支持pgvector扩展 |
缓存/队列 | 云数据库Redis 7.0 | 会话缓存 + BullMQ消息队列复用 |
对象存储 | COS | 存储Skill包、配图、导出文件 |
负载均衡 | CLB | 双节点高可用,自动健康检查 |
日志 | CLS(日志服务) | 结构化日志采集 + 告警 |
密钥管理 | SSM(凭据管家) | 存储API Key,不落盘 |
通道 | 企业微信Bot API | 腾讯生态原生集成 |
通过腾讯云控制台或CLI创建两台CVM:
# 使用腾讯云CLI创建实例(也可在控制台操作)
# 机型:SA3.MEDIUM4(2核4G),系统盘50G SSD
tccli cvm RunInstances \
--InstanceType SA3.MEDIUM4 \
--ImageId img-ubuntu2204 \
--SystemDisk '{"DiskType":"CLOUD_BSSD","DiskSize":50}' \
--InstanceCount 2 \
--InstanceName "openclaw-agent" \
--SecurityGroupIds '["sg-xxxxxx"]' \
--VpcId vpc-xxxxxx \
--SubnetId subnet-xxxxxx安全组规则(最小化开放):
方向 | 协议 | 端口 | 来源 | 说明 |
|---|---|---|---|---|
入站 | TCP | 18789 | CLB内网IP | Agent服务端口 |
入站 | TCP | 22 | 运维堡垒机IP | SSH管理 |
出站 | TCP | 443 | 0.0.0.0/0 | 调用模型API |
出站 | TCP | 5432 | TDSQL-C安全组 | 数据库连接 |
出站 | TCP | 6379 | Redis安全组 | Redis连接 |
不要开放18789端口到公网。 所有外部流量通过CLB进来。
# 控制台操作更方便,这里列出关键配置
# 产品:TDSQL-C PostgreSQL版 Serverless
# 版本:PostgreSQL 16
# 计费:Serverless按量(自动暂停,不用不收钱)
# 网络:与CVM同VPC同子网创建完成后,登录实例开启pgvector扩展:
-- 连接TDSQL-C
psql -h <tdsql-c-host> -U root -d openclaw
-- 启用pgvector扩展
CREATE EXTENSION IF NOT EXISTS vector;
-- 创建记忆表
CREATE TABLE short_term_memory (
id BIGSERIAL PRIMARY KEY,
conversation_id VARCHAR(64) NOT NULL,
role VARCHAR(16) NOT NULL,
content TEXT NOT NULL,
tool_calls JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_stm_conv ON short_term_memory(conversation_id, created_at DESC);
CREATE TABLE mid_term_memory (
id BIGSERIAL PRIMARY KEY,
conversation_id VARCHAR(64) NOT NULL,
user_id VARCHAR(64) NOT NULL,
summary TEXT NOT NULL,
key_facts JSONB,
created_at TIMESTAMPTZ DEFAULT NOW(),
expires_at TIMESTAMPTZ
);
CREATE INDEX idx_mtm_user ON mid_term_memory(user_id, created_at DESC);
CREATE TABLE long_term_memory (
id BIGSERIAL PRIMARY KEY,
user_id VARCHAR(64) NOT NULL,
content TEXT NOT NULL,
category VARCHAR(32),
embedding vector(1536) NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_ltm_vec ON long_term_memory
USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
-- 记忆自动过期清理(中期记忆)
CREATE OR REPLACE FUNCTION cleanup_expired_memory()
RETURNS void AS $$
BEGIN
DELETE FROM mid_term_memory WHERE expires_at < NOW();
DELETE FROM short_term_memory
WHERE created_at < NOW() - INTERVAL '7 days';
END;
$$ LANGUAGE plpgsql;TDSQL-C Serverless的优势:空闲时自动暂停计费,对于内部Agent这种非7×24高并发的场景,成本比固定规格实例低60-70%。
# 产品:云数据库Redis 7.0 标准版
# 规格:1G内存(初期够用,可在线扩容)
# 网络:与CVM同VPCRedis承担两个角色:
SSH登录两台CVM,执行以下初始化:
# 安装Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# 安装编译依赖(pgvector的hnswlib需要)
sudo apt-get install -y cmake build-essential
# 安装OpenClaw
npm install -g openclaw
# 创建工作目录
mkdir -p /opt/openclaw && cd /opt/openclaw
openclaw init核心改造在配置文件。与本地部署最大的区别是:存储指向云服务、密钥从SSM拉取、监听地址绑定内网。
# /opt/openclaw/config.yaml
gateway:
port: 18789
host: "0.0.0.0" # 绑定所有网卡(安全组已限制来源)
models:
default: "claude"
timeout: 30000
retry: 2
providers:
claude:
# API Key从腾讯云凭据管家拉取,不写明文
api_key: "${SSM:openclaw/claude-api-key}"
model: "claude-sonnet-4-6"
# 备用模型:混元(腾讯自研,内网调用延迟低)
hunyuan:
api_key: "${SSM:openclaw/hunyuan-api-key}"
model: "hunyuan-pro"
endpoint: "https://hunyuan.tencentcloudapi.com"
# 记忆系统指向TDSQL-C
memory:
storage: "postgresql"
postgresql:
host: "${SSM:openclaw/tdsql-host}"
port: 5432
database: "openclaw"
user: "root"
password: "${SSM:openclaw/tdsql-password}"
ssl: true
# 会话和队列指向Redis
session:
storage: "redis"
redis:
host: "${SSM:openclaw/redis-host}"
port: 6379
password: "${SSM:openclaw/redis-password}"
queue:
type: "bullmq"
redis:
host: "${SSM:openclaw/redis-host}"
port: 6379
password: "${SSM:openclaw/redis-password}"
concurrency: 3
limiter:
max: 20
duration: 60000
# 企业微信通道
channels:
wecom:
enabled: true
corp_id: "${SSM:openclaw/wecom-corp-id}"
agent_id: "${SSM:openclaw/wecom-agent-id}"
secret: "${SSM:openclaw/wecom-secret}"
token: "${SSM:openclaw/wecom-token}"
encoding_aes_key: "${SSM:openclaw/wecom-aes-key}"
# Skill资产存储到COS
skills:
storage: "cos"
cos:
bucket: "openclaw-skills-xxxxxxx"
region: "ap-guangzhou"
secret_id: "${SSM:openclaw/cos-secret-id}"
secret_key: "${SSM:openclaw/cos-secret-key}"
# 安全配置
security:
allowed_commands: ["ls", "cat", "grep", "python3", "node"]
blocked_commands: ["rm -rf", "sudo", "chmod 777", "curl", "wget"]
allowed_paths: ["/opt/openclaw/workspace", "/tmp/openclaw"]
blocked_paths: ["/etc", "/root", "/home"]
require_approval: ["file_write", "shell_exec", "http_request"]# 使用腾讯云CLI写入密钥(只需执行一次)
tccli ssm CreateSecret --SecretName "openclaw/claude-api-key" \
--SecretString "sk-ant-api03-xxxxxx"
tccli ssm CreateSecret --SecretName "openclaw/tdsql-host" \
--SecretString "tdsqlc-xxxxxx.sql.tencentcdb.com"
tccli ssm CreateSecret --SecretName "openclaw/tdsql-password" \
--SecretString "your-db-password"
tccli ssm CreateSecret --SecretName "openclaw/redis-host" \
--SecretString "redis-xxxxxx.redis.tencentcdb.com"
# ... 其他密钥同理这样config.yaml里没有任何明文密钥,可以安全地纳入版本管理。
# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw AI Agent
After=network.target
[Service]
Type=simple
User=openclaw
WorkingDirectory=/opt/openclaw
ExecStart=/usr/bin/node /usr/lib/node_modules/openclaw/bin/openclaw start --config /opt/openclaw/config.yaml
Restart=always
RestartSec=5
Environment=NODE_ENV=production
# 资源限制
LimitNOFILE=65536
MemoryMax=1G
CPUQuota=150%
# 日志输出到CLS采集路径
StandardOutput=append:/var/log/openclaw/agent.log
StandardError=append:/var/log/openclaw/agent-error.log
[Install]
WantedBy=multi-user.target# 创建运行用户
sudo useradd -r -s /sbin/nologin openclaw
sudo chown -R openclaw:openclaw /opt/openclaw
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
# 检查状态
sudo systemctl status openclaw
curl http://localhost:18789/health两台CVM都执行以上操作。
https://your-domain.com/webhook/wecom# 创建CLB实例(内网型,仅VPC内可访问)
# 如果需要接收企业微信回调,需要公网CLB + HTTPS证书
# 监听器配置
# 前端:HTTPS:443(绑定SSL证书)
# 后端:TCP:18789(两台CVM)
# 健康检查:HTTP GET /health,间隔10秒,阈值3次CLB的健康检查会自动摘除故障节点。如果CVM-1挂了,流量自动切到CVM-2,实现基本的高可用。
将CLB的公网IP绑定域名(如 agent.yourcompany.com),在企业微信后台填入回调URL:
https://agent.yourcompany.com/webhook/wecom点击验证,通过后在企业微信里给应用发消息测试。
# 安装腾讯云日志采集Agent(LogListener)
wget https://mirrors.tencent.com/install/cls/loglistener-linux-x64.tar.gz
tar -zxvf loglistener-linux-x64.tar.gz
cd loglistener && sudo ./install.sh
# 配置采集路径
# 在CLS控制台创建日志主题,配置采集规则:
# 采集路径:/var/log/openclaw/*.log
# 解析模式:JSON(OpenClaw日志默认JSON格式)在CLS控制台创建以下告警:
告警名称 | 触发条件 | 通知方式 |
|---|---|---|
Agent进程异常 | level:ERROR 5分钟内 > 10条 | 企业微信群机器人 |
模型API超时 | event:model_timeout 5分钟内 > 5条 | 企业微信 + 短信 |
内存超限 | memory_usage > 900MB | 企业微信 |
队列堆积 | queue_depth > 50 | 企业微信 |
建议在Grafana(或云监控Dashboard)中配置以下面板:
系统指标:
├── CVM CPU/内存/磁盘使用率
├── TDSQL-C 连接数/QPS/慢查询
├── Redis 内存使用/命中率/连接数
└── CLB 活跃连接数/健康后端数
业务指标(从CLS日志聚合):
├── 日消息处理量
├── 模型调用延迟(P50/P99)
├── 工具调用成功率
├── 记忆检索命中率
└── 月度Token消耗及成本以广州地域为例,按中等使用强度(日均处理200-500条消息)估算:
资源 | 规格 | 月费用 |
|---|---|---|
CVM × 2 | SA3.MEDIUM4(2核4G)包月 | ¥280 |
TDSQL-C | Serverless PostgreSQL | ¥50-150(按量) |
Redis | 1G标准版 | ¥138 |
CLB | 公网实例 + 带宽 | ¥100 |
COS | 5GB存储 + 流量 | ¥5 |
CLS | 日志存储1GB/月 | ¥10 |
SSL证书 | 免费DV证书 | ¥0 |
腾讯云合计 | ¥600-700/月 | |
模型API(Claude) | 日均300条 | ¥400-800/月 |
总计 | ¥1,000-1,500/月 |
对比:一个处理同等工作量的外包人员月成本约¥8,000-12,000。
如果使用腾讯混元大模型替代Claude作为主力,模型API成本可以进一步降低50-70%(内网调用,无出境流量费),且数据不出腾讯云网络,合规性更好。
部署前过一遍这个清单:
# | 检查项 | 状态 |
|---|---|---|
1 | CVM安全组仅开放必要端口 | ☐ |
2 | 数据库密码/API Key全部通过SSM管理 | ☐ |
3 | TDSQL-C开启自动备份 | ☐ |
4 | CLB健康检查已配置并验证 | ☐ |
5 | 企业微信回调URL使用HTTPS | ☐ |
6 | CLS日志采集和告警已配置 | ☐ |
7 | systemd配置了自动重启和资源限制 | ☐ |
8 | OpenClaw security配置已加固 | ☐ |
9 | 敏感操作(文件写入/命令执行)需要人工审批 | ☐ |
10 | 记忆表过期清理定时任务已配置 | ☐ |
本文介绍了基于腾讯云的OpenClaw企业级部署方案,核心改造点是:
整套方案月成本约1000-1500元,2人天可完成部署,适合中小团队快速搭建内部AI Agent能力。
如果对方案有疑问或者有更好的实践经验,欢迎在评论区交流。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。