Walson Blog

积分并发扣款竞态 Bug 复盘:从 Lost Update 到三重防护

前言

最近在我们的 AI 生成平台上遇到了一个 P0 级别的并发 Bug——用户同时发起多个生成任务时,积分扣款出现了竞态条件,导致积分被永久锁住。从发现到修复经历了两轮迭代(紧急修复 → 优化重构),本文完整记录这次复盘过程。

从零构建长期记忆系统:逆向分析 ChatGPT 与 Claude 客户端实现

前言

如果曾经深入使用过ChatGPT或Claude,一定会注意他们的记忆功能:他们似乎记得你,能够在新的对话中回忆起你的偏好、背景信息,甚至几周前讨论过的话题细节。这种跨会话的记忆能力,远远超出了单次对话中的上下文窗口管理,背后是一套精心设计的长期记忆系统。

OpenClaw VPS部署方案

最新部署日期: 2026年3月3日
版本: Gateway v2026.3.2
状态: 生产就绪


架构概览

整体架构图

┌─────────────────────────────────────────────────────────────┐
│                      外部访问层                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │   Telegram   │  │  Control UI  │  │    SSH       │      │
│  │   Bot API    │  │   (HTTP)     │  │   管理       │      │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘      │
└─────────┼─────────────────┼─────────────────┼───────────────┘
          │                 │                 │
          ▼                 ▼                 ▼
┌─────────────────────────────────────────────────────────────┐
│                    AWS EC2 服务器                            │
│  实例ID: <your-ec2-instance-id>                             │
│  公网IP: <your-ec2-ip>                                      │
│  类型: t3.small (2 vCPU, 2GB RAM)                           │
│  系统: Amazon Linux 2023                                    │
│                                                             │
│  ┌───────────────────────────────────────────────────────┐  │
│  │         OpenClaw Gateway v2026.3.2                  │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐   │  │
│  │  │  Telegram   │  │  WebSocket  │  │  HTTP API   │   │  │
│  │  │   通道      │  │  服务器     │  │  接口       │   │  │
│  │  │             │  │ (端口:18789)│  │ (端口:18789)│   │  │
│  │  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘   │  │
│  │         │                │                 │          │  │
│  │         └────────────────┴─────────────────┘          │  │
│  │                          │                            │  │
│  │              ┌───────────┴───────────┐                │  │
│  │              │   Agent 处理引擎      │                │  │
│  │              │   (AI 模型: GPT-OSS) │                │  │
│  │              └───────────┬───────────┘                │  │
│  │                          │                            │  │
│  │              ┌───────────┴───────────┐                │  │
│  │              │   工具层              │                │  │
│  │              │   web_search, web_fetch, cron          │  │
│  │              └───────────┴───────────┘                │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

数据流向

  1. 用户 → Telegram Bot: 发送消息
  2. Gateway → Agent: 处理消息,决定行动
  3. Agent 执行工具: 使用 web_search、web_fetch、cron 等工具
  4. 结果 → Gateway → Telegram: 返回执行结果

组件清单

EC2 服务器 (AWS)

组件 版本/配置 状态
实例类型 t3.small ✅ 运行中
操作系统 Amazon Linux 2023 ✅ 已配置
Node.js v22.22.0 ✅ 已安装
OpenClaw Gateway v2026.3.2 ✅ 运行中
SSH 服务 OpenSSH 9.x ✅ 已加固
Swap 2GB ✅ 已配置
SSM Agent v3.3.x ✅ 已启用
IAM Role EC2-SSM-Role ✅ 已挂载

外部服务

服务 用途 状态
agentify.top AI 模型 API ✅ 已配置
Telegram Bot 消息通道 ✅ 运行中

网络拓扑

端口映射

端口 协议 服务 绑定地址 说明
22 TCP SSH 0.0.0.0 EC2 管理入口
80 TCP HTTP 0.0.0.0 预留 (未使用)
443 TCP HTTPS 0.0.0.0 预留 (未使用)
18789 TCP OpenClaw Gateway 127.0.0.1 WebSocket + HTTP API

安全组规则

# 入站规则
TCP 22   0.0.0.0/0   # SSH 访问
TCP 80   0.0.0.0/0   # HTTP (预留)
TCP 443  0.0.0.0/0   # HTTPS (预留)

注意: Gateway 绑定在 loopback (127.0.0.1:18789),不直接暴露公网。

域名迁移记录:从 walson.xyz 到 walson.de5.net

写在前面

今天把博客主域名从 walson.xyz 迁到了 walson.de5.net

这次迁移的原因很现实:walson.xyz 快到期了,续费价格不划算(要几百块)。
对个人博客来说,我更希望的是“稳定、低成本、可长期维护”,所以我决定切到一个可长期使用的二级域名。