【免费下载链接】openab
A lightweight, secure, cloud-native ACP harness that bridges Discord and any ACP-compatible coding CLI.
OpenAB 是一个轻量、安全、云原生的 ACP harness,负责把 Discord、Telegram、Slack、LINE 等聊天平台桥接到任意 ACP 兼容的编程 CLI(Kiro CLI、Claude Code、Codex、Gemini、OpenCode 等)。本文带你用官方 CLI 工具 oabctl,一步步把 OpenAB 机器人部署到 AWS ECS Fargate:一条命令完成集群、IAM、S3 等 Bootstrap 基建,再两条命令完成机器人创建与上线,并自动搭建 API Gateway → VPC Link → Cloud Map 的 Telegram Webhook Ingress 链路,连 setWebhook 注册都替你完成——全程无需手工拼装 7 个以上的 AWS 资源。
为什么选 AWS ECS Fargate 承载 OpenAB
OpenAB 本身是“薄 broker”架构:每个会话线程对应一个 CLI 进程,配合自动管理的会话池。Fargate 与它天生契合:
- 全托管——无需 EC2、无需打补丁、无需容量规划;
- 企业级隔离——每个 Fargate 任务运行在独立的 Firecracker 微虚拟机中;
- 省钱——
FARGATE_SPOT容量提供器最高比按需节省 70%,0.25 vCPU 任务约 $2.7/月; - 原生 Secrets 与 IAM——bot token 存 AWS Secrets Manager、运行时注入,任务各自独立 task role;
- Spot 中断自动恢复——认证状态通过生命周期 hooks 持久化到 S3,任务重启后机器人自动重连。
💡 Discord 是出站 WebSocket 平台,机器人不需要任何 ingress;而 Telegram / LINE 是入站 Webhook,必须暴露 HTTPS 端点——这正是清单里
spec.ingress块解决的问题。
oabctl 快速安装步骤
oabctl 随每个 openab 版本一起发布为 release 资产(另有跟随main的 pre-beta 滚动构建),下载即用:
# 下载对应平台的 oabctl 包后 tar xzf oabctl-<version>-<platform>.tar.gz sudo mv oabctl /usr/local/bin/也可以从源码编译(需要 Rust 工具链):
git clone https://gitcode.com/gh_mirrors/op/openab cd openab/operator && cargo build --release cp target/release/oabctl /usr/local/bin/其余前置条件只有一个:具备创建 ECS / IAM / S3 资源的 AWS 凭证。如果清单里使用了spec.ingress,apply 的调用方还需要 Cloud Map、API Gateway 以及ec2:DescribeSubnets、ec2:AuthorizeSecurityGroupIngress等权限,完整清单见 docs/oabctl.md。
一条命令完成集群 Bootstrap
oabctl bootstrap命令会先展示资源计划,确认(Y/n)后一次性创建:
| 资源 | 名称 | 用途 |
|---|---|---|
| ECS 集群 | oab | FARGATE + FARGATE_SPOT 容量 |
| IAM 角色 | oab-task-execution | 拉取 ECR 镜像、注入 Secrets |
| IAM 角色 | oab-task-role | ECS Exec、S3 产物、Secrets Manager 读取 |
| S3 桶 | oab-control-plane-{account} | 基建状态、清单、agent 配置 |
| 安全组 | oab-agents | 仅出站 |
| 日志组 | /oab/agents | CloudWatch 日志 |
Bootstrap 同时会写入~/.oabctl/config.toml(namespace、集群名、桶名),之后所有命令直接可用。常用变体:
oabctl bootstrap --status # 查看当前 Bootstrap 状态 oabctl bootstrap --delete # 拆除托管资源 oabctl bootstrap --cluster my-cluster ... # 导入已有集群/VPC/角色实现代码在 operator/src/bootstrap.rs。已有 VPC、子网、安全组或自定义 task role 时,可通过参数导入,被导入的资源只跟踪、不会在--delete时被删除。
两条命令创建并部署 OpenAB Agent
# 1. 交互式向导:选后端、选发布渠道、输入 token(存入 Secrets Manager)、 # 选容量提供方、VPC、子网与安全组 oabctl create my-bot # 2. 上传配置到 S3 并部署,等待任务就绪 oabctl apply -f my-bot/manifest.yaml --wait向导在本地生成两个文件:
my-bot/ ├── config.toml ← OpenAB 运行时配置(token 走 secrets 引用,不落明文) └── manifest.yaml ← oab.dev/v2 部署清单(镜像、资源、网络、ingress)想跳过审查可以一步到位:oabctl create my-bot --auto-apply。部署完成后的日常运维:
oabctl get oabservice # 列出所有 agent 及状态 oabctl exec my-bot -- bash # 进入容器 shell oabctl cp data.bin my-bot:/tmp/ # 上传文件 oabctl scale my-bot 0 # 缩容到 0 停机清单 schema 支持单 agent 的OABService和多 agent 的OABFleet(模板继承 + 按 agent 覆盖资源/镜像/ingress,全量校验通过后才 apply),编辑器里可用 operator/schema/oabservice-v2.json 开启 JSON Schema 校验。
Telegram Webhook Ingress 自动搭建:API Gateway + VPC Link + Cloud Map
Telegram 是入站平台:它把事件 POST 给你的机器人,因此任务需要一个公网 HTTPS 端点。手动搭建要串起 7 步左右:Cloud Map 私有命名空间与 SRV 记录、ECS 服务注册、VPC Link、API Gateway HTTP API、VPC Link 集成、路由与 stage、安全组入站规则。oabctl 只需在清单里加一个ingress块,apply幂等地全部搞定:
spec: image: ghcr.io/openabdev/openab:stable-kiro resources: { cpu: "256", memory: "512" } configFrom: s3://<your-bucket>/config.toml secrets: TELEGRAM_BOT_TOKEN: "aws-sm://oab/telegram/my-bot#TELEGRAM_BOT_TOKEN" runtime: type: ecs networking: { subnets: [subnet-aaa, subnet-bbb], securityGroups: [sg-xxx] } ingress: paths: - /webhook/telegramapply 时 oabctl 依次调谐六类资源,并打印稳定不变的 Webhook 地址:
🔗 Webhook URL(s) for my-bot: https://{api-id}.execute-api.{region}.amazonaws.com/prod/webhook/telegram更贴心的是:只要spec.secrets里有TELEGRAM_BOT_TOKEN,apply会直接替调 Telegram 的setWebhook完成注册,无需手动 curl;若再配上TELEGRAM_SECRET_TOKEN,它会随 setWebhook 一并传给 Telegram,之后每个 webhook 请求都带X-Telegram-Bot-Api-Secret-Token头,OpenAB 同时校验该头与来源 IP 是否属于 Telegram 官方子网,防止伪造事件。
整条链路实现于 operator/src/ingress.rs。两个值得知道的坑:
- us-east-1e 可用区不支持 API Gateway VPC Link,子网请避开该 AZ;
- 同一 VPC 内所有 ingress bot 共享同一个 VPC Link 与 Cloud Map 命名空间(按 VPC ID 命名),第一个 bot 的
networking.subnets/securityGroups会成为全 VPC 的共享模板,规划时先想清楚。
对应的config.toml需要有[telegram]段(webhook_path = "/webhook/telegram"、bot_token = "${TELEGRAM_BOT_TOKEN}"),字段速查见 Telegram 配置文档。
成本估算与日常运维速查
| 场景 | 关键资源 | 预估月费 |
|---|---|---|
| 仅 Discord(出站) | Fargate Spot 0.25 vCPU + 512MB、Secrets Manager | ~$3.1 |
| Telegram Webhook Ingress | 上述 + API Gateway(近乎 $0)+ VPC Link(~$7) | ~$12–17 |
成本细节参考 docs/refarch/aws-ecs-fargate-spot.md 与 docs/refarch/running-telegram-line-on-aws.md。
不用的时段还可以用 EventBridge Scheduler 做定时缩容(无需 Lambda,自动创建调度组与带防混淆 deputy 保护的最小权限调度角色):
# 每天台北时间 21 点缩到 0,8 点恢复到 1 oabctl schedule create my-bot 0 --expr 'cron(0 21 * * ? *)' --timezone 'Asia/Taipei' oabctl schedule create my-bot 1 --expr 'cron(0 8 * * ? *)' --timezone 'Asia/Taipei'小结
用 oabctl 部署 OpenAB 到 AWS ECS Fargate,从“零基建”到“Telegram 机器人上线”真正只需三步:bootstrap建集群、create生成配置、apply部署并自动完成 Webhook Ingress 与 setWebhook 注册。清单 schema、secrets 两种格式、IAM 权限表与调度命令的完整说明,都在 docs/oabctl.md 与 operator/README.md,欢迎动手部署你的第一个云上编码 Agent 🪼
【免费下载链接】openab
A lightweight, secure, cloud-native ACP harness that bridges Discord and any ACP-compatible coding CLI.
相关推荐
使用 CloudFormation 在 AWS ECS 上部署容器:Fargate 与 EC2 集群四种网络架构实战指南
使用 CloudFormation 在 AWS ECS 上部署容器:Fargate 与 EC2 集群四种网络架构实战指南 本指南基于 aws cloudform
mlx-community/Qwopus3.6-27B-Coder-6bit:革命性6bit量化大模型,解锁Apple Silicon高效多模态编程
mlx community/Qwopus3.6 27B Coder 6bit:革命性6bit量化大模型,解锁Apple Silicon高效多模态编程 在人工智能
Triplex架构深度解析:理解可视化React Three Fiber编辑器原理
Triplex架构深度解析:理解可视化React Three Fiber编辑器原理 Triplex是一个革命性的开源可视化工作空间,专门为React Three
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考