从玩具到生产:Moltbot 还差几步

从玩具到生产:Moltbot 还差几步

Discord 上有人问:"Moltbot 能用在公司吗?"

回复清一色:"别。"

不是说它不好用。是说它还不够"生产级"。

什么是"生产级"

生产级软件的标准:

  1. 可靠性:99.9% 的时间正常工作
  2. 可观测性:出问题能快速定位
  3. 可恢复性:出问题能快速恢复
  4. 可审计性:谁做了什么有记录
  5. 可扩展性:能支持更多用户/负载

Moltbot 现在处于什么水平?

差距 1:错误处理

现状

$ moltbot gateway start

[INFO] Starting gateway...
[INFO] Connecting to Claude API...
[ERROR] Connection failed
[ERROR] Retrying...
[ERROR] Retrying...
[ERROR] Max retries exceeded
[FATAL] Gateway crashed

崩了。没有自动恢复,没有告警,没有优雅降级。

生产级应该是

[INFO] Starting gateway...
[INFO] Connecting to Claude API...
[WARN] Connection failed, switching to fallback provider (OpenAI)
[INFO] Connected to OpenAI API
[ALERT] Primary provider unavailable - sent notification to admin
[INFO] Gateway running in degraded mode

主提供商挂了,自动切换备用。管理员收到通知。服务继续运行,只是功能可能降级。

需要什么

{
  "resilience": {
    "providers": {
      "primary": "anthropic",
      "fallback": ["openai", "local"],
      "healthCheck": {
        "interval": 60,
        "timeout": 5
      }
    },
    "circuitBreaker": {
      "failureThreshold": 3,
      "resetTimeout": 300
    },
    "alerts": {
      "channel": "slack",
      "webhook": "https://..."
    }
  }
}

Moltbot 目前没有内置这些。得自己在外面包一层。

差距 2:配置管理

现状

配置文件是 JSON,直接编辑:

vim ~/.moltbot/config.json

改完重启生效。

问题:

  • 没有版本控制
  • 没有配置校验
  • 敏感信息明文存储
  • 多环境(开发/生产)切换麻烦

生产级应该是

# config.prod.yaml
providers:
  anthropic:
    apiKey: ${ANTHROPIC_API_KEY}  # 从环境变量读
    
security:
  encryptSecrets: true
  masterKeyPath: /run/secrets/master.key
  
logging:
  level: ${LOG_LEVEL:-info}
  destination: ${LOG_DEST:-stdout}

敏感信息从 Secret Manager 读,配置可以用环境变量覆盖,支持多环境。

需要什么

至少要支持:

  • 环境变量替换
  • Secret 加密存储(或集成 1Password/Vault)
  • 配置热重载(不重启就能改配置)
  • 配置校验(改错了立即报警)
# 理想状态
moltbot config validate config.prod.yaml
moltbot config diff config.dev.yaml config.prod.yaml
moltbot config reload --hot

现在都没有。

差距 3:可观测性

现状

日志是这样的:

[2026-01-21 10:00:00] Processing message...
[2026-01-21 10:00:05] Done.

能看出来干了什么,但:

  • 没有请求 ID(无法追踪一个请求的完整链路)
  • 没有耗时统计
  • 没有 metrics 输出
  • 没有分布式追踪

生产级应该是

{
  "timestamp": "2026-01-21T10:00:00.123Z",
  "requestId": "req_abc123",
  "traceId": "trace_def456",
  "level": "info",
  "message": "Processing message",
  "context": {
    "userId": "user_789",
    "provider": "anthropic",
    "model": "claude-3.5-sonnet",
    "inputTokens": 1234,
    "source": "telegram"
  }
}

结构化日志,可以被 ELK/Datadog/Grafana 采集。

Metrics 端点:

curl http://localhost:18789/metrics

# 输出 Prometheus 格式
moltbot_requests_total{provider="anthropic",status="success"} 1234
moltbot_requests_total{provider="anthropic",status="error"} 12
moltbot_request_duration_seconds{provider="anthropic",quantile="0.99"} 2.5
moltbot_tokens_used_total{provider="anthropic",type="input"} 1234567

能做监控仪表盘,能设告警。

需要什么

{
  "observability": {
    "logging": {
      "format": "json",
      "level": "info",
      "destination": "stdout"
    },
    "metrics": {
      "enabled": true,
      "endpoint": "/metrics",
      "port": 9090
    },
    "tracing": {
      "enabled": true,
      "exporter": "otlp",
      "endpoint": "http://jaeger:4317"
    }
  }
}

Moltbot 有基础日志,但没有 metrics 和 tracing。

差距 4:多用户支持

现状

Moltbot 是单用户设计:

~/.moltbot/
  config.json    # 一份配置
  data.db        # 一个数据库
  MEMORY.md      # 一份记忆

生产级应该是

/var/moltbot/
  users/
    user_001/
      config.json
      data.db
      MEMORY.md
    user_002/
      ...
  shared/
    skills/
    models/

每个用户独立的配置、数据、记忆。共享的资源(技能、模型缓存)统一管理。

还需要:

  • 用户认证(谁能访问)
  • 权限管理(能做什么)
  • 资源隔离(一个用户不能访问另一个的数据)
  • 配额管理(每个用户能用多少 token)
users:
  - id: user_001
    auth: 
      type: oauth
      provider: google
    quotas:
      dailyTokens: 100000
      monthlyBudget: 50.00
    permissions:
      - read_email
      - send_email_with_approval

现在完全没有。想多人用,得自己部署多个实例。

差距 5:部署运维

现状

# 安装
npm install -g @moltbot/cli

# 启动
moltbot gateway start

# 后台运行?
nohup moltbot gateway start &
# 或者
screen -S moltbot
moltbot gateway start

手工启动,手工管理。

生产级应该是

# docker-compose.yml
version: '3.8'
services:
  moltbot:
    image: moltbot/moltbot:2026.1.20
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:18789/health"]
      interval: 30s
      timeout: 10s
      retries: 3
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 512M
    volumes:
      - moltbot-data:/data
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}

容器化,健康检查,自动重启,资源限制。

或者 Kubernetes:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: moltbot
spec:
  replicas: 2
  template:
    spec:
      containers:
      - name: moltbot
        image: moltbot/moltbot:2026.1.20
        livenessProbe:
          httpGet:
            path: /health
            port: 18789
        readinessProbe:
          httpGet:
            path: /ready
            port: 18789

高可用,滚动更新,自动扩缩容。

Moltbot 有 Docker 镜像,但没有官方的 Helm Chart 或 Kubernetes manifests。

差距 6:备份恢复

现状

# 备份?
cp -r ~/.moltbot ~/.moltbot.backup

# 恢复?
rm -rf ~/.moltbot
cp -r ~/.moltbot.backup ~/.moltbot

手工。

生产级应该是

# 自动定时备份
moltbot backup schedule --interval=daily --destination=s3://bucket/backups

# 查看备份
moltbot backup list
# 2026-01-21 00:00:00  size: 45MB  s3://bucket/backups/2026-01-21.tar.gz
# 2026-01-20 00:00:00  size: 43MB  s3://bucket/backups/2026-01-20.tar.gz

# 恢复
moltbot backup restore --from=s3://bucket/backups/2026-01-21.tar.gz

# 时间点恢复
moltbot backup restore --point-in-time="2026-01-21 14:30:00"

自动备份,远程存储,支持时间点恢复。

现在什么都没有。

如果你非要用在生产

自己补齐这些能力。

最小可行方案

#!/bin/bash
# moltbot-prod.sh

# 1. 健康检查 + 自动重启
while true; do
  if ! curl -sf http://localhost:18789/health > /dev/null; then
    echo "[$(date)] Health check failed, restarting..."
    pkill -f "moltbot gateway"
    sleep 2
    moltbot gateway start &
    
    # 发告警
    curl -X POST "$SLACK_WEBHOOK" \
      -d '{"text":"Moltbot restarted due to health check failure"}'
  fi
  sleep 30
done

# 2. 日志收集(在另一个终端)
# tail -f ~/.moltbot/logs/*.log | jq '.' >> /var/log/moltbot/structured.log

# 3. 备份(cron job)
# 0 0 * * * tar -czf /backup/moltbot-$(date +%Y%m%d).tar.gz ~/.moltbot

勉强能用,但很脆弱。

稍微正经的方案

用 systemd 管理:

# /etc/systemd/system/moltbot.service
[Unit]
Description=Moltbot Gateway
After=network.target

[Service]
Type=simple
User=moltbot
ExecStart=/usr/local/bin/moltbot gateway start
Restart=always
RestartSec=5
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
sudo systemctl enable moltbot
sudo systemctl start moltbot

加上 Prometheus + Grafana 做监控,加上 Loki 做日志,加上 cron 做备份。

能用,但得自己搭一套基础设施。

官方在做什么

GitHub 上有几个相关的 issue:

  • #1892: "Add Prometheus metrics endpoint"(Open)
  • #2034: "Support multi-user deployment"(Open)
  • #2156: "Kubernetes deployment guide"(Open)
  • #2301: "Encrypted secrets storage"(Open)

都在 roadmap 上,但没有明确时间。

维护者的回复:

"We're a small team focused on core features. Production-grade ops tooling is on our radar but not prioritized. PRs welcome."

翻译:我们人少,生产级功能暂时没空做,欢迎贡献代码。

现实的选择

选择 1:等

等官方把这些功能做好。可能要 6-12 个月。

选择 2:自己做

自己搭一套运维基础设施。工作量不小,但可控。

选择 3:用替代品

如果你需要生产级的 AI Agent:

  • Langchain Serve:有部署工具,但功能不如 Moltbot 丰富
  • AutoGPT Deploy:有企业版,但要付费
  • 自研:完全控制,但成本最高

选择 4:重新定义"生产"

如果"生产"只是"给自己用":

  • 单用户
  • 偶尔挂了能接受
  • 数据丢了能接受(有备份)

那 Moltbot 现在就能用。

很多人就是这么用的。


Moltbot 是个好工具,功能强大,社区活跃。

但"功能强大"和"生产可用"是两回事。

如果你在评估要不要在公司用,答案是:现在不行,以后可能行

如果你在评估要不要自己玩,答案是:可以,但做好心理准备


参考资料

  • Moltbot GitHub Issues: #1892, #2034, #2156, #2301
  • 12-Factor App 原则
  • Google SRE Book
  • Kubernetes 文档
← 返回博客列表