附录 A:ndclaw 运行时(agent-hub-daemon)成本与延迟考古
只读代码考古,对象为本机
~/AI-Hub-Project/agent-hub-daemon/(master,最后提交0c6fe66,2026-08-20)及agent-hub/、agent-hub-docs/;未修改任何文件。仓库事实一律写「相对~/AI-Hub-Project/的路径:行号」。定价来自 AWS 中国区官网,访问日期 2026-09-21。每条结论标【事实】/【推断】/【待验证】。
一页结论
- 【事实】ndclaw 运行时部署在 AWS 中国(宁夏)区
cn-northwest-1(agent-hub-daemon/cdk.json:5),每个 Web 会话一个 ECS Fargate ARM64 容器,OpenClaw 引擎默认 1 vCPU/2 GiB(cdk.json:34-35),claude-code 引擎 2 vCPU/4 GiB(cdk.json:36-37;栈内兜底值才是 0.5/1,stacks/agent_task_claude_code_stack.py:81-82)。 - 【事实】固定常驻的部分与用户数无关:1 个 NAT、9 个接口型 VPC Endpoint × 2 AZ、1 个公网 ALB、Router Fargate(2 副本)、LLM Proxy Fargate(prod 4 副本)、channel-watcher(1 副本)、预热池
spare个空容器。随并发会话线性增长的只有 agent 容器本身(外加每会话的 ENI、EFS 目录、日志)。 - 【事实】按 AWS 中国官网价,0.5 vCPU/1 GiB 的 ARM 容器每小时 ¥0.13,整月常驻 ¥93;ndclaw 实际用的 1 vCPU/2 GiB 是 ¥0.26/小时、整月 ¥187。这个数与
agent-hub-docs里「watcher 常驻 ~¥50-100/月」的估算相符。 - 【推断】一次「聊 5 分钟就走」的会话实际计费 约 36 分钟(冷启动 ~0.7 分钟 + 聊天 5 分钟 + 空闲等待 30 分钟 + 扫描粒度 0~1 分钟),86% 的计费时长在空转,单次 ¥0.08~¥0.31(按规格)。而且 OpenClaw 网关每 30 s 向客户端广播
tick帧,Router 对任何上游帧都刷新活跃时间,只要浏览器标签页不关,容器永远不会被判空闲,计费无上限。 - 【推断】100 个月活、每人每天 3 次短对话,agent 容器的可变成本约 ¥300~¥1,400/月(人均 ¥3~¥14),标签页常开会推到 ¥2,000 以上。「人均 100 元/月」不是可变成本能算出来的数。
- 【推断】白晨口述的「运维约 1 万元/月」更可能由固定成本 × 环境数构成:单环境固定部分约 ¥1,900~¥2,300/月(其中接口型 Endpoint 就 ¥1,134,NAT ¥266),daemon 有 dev/test/pressure/beta/prod 五套环境。仓库里没有任何账单、容量或月活数据能印证或反驳这个口述。
- 【事实】首响延迟以 README 实测为准:冷路径「点击 → 第一个字」约 60 s(拿到 wsUrl 42 s + 首轮 TTFT 18 s),预热池路径 约 25 s(6 s + 18 s),第二轮起 TTFT 3~7 s。18 s 的首轮 TTFT 来自 OpenClaw 进程内懒初始化,预热池帮不上;daemon 团队试过「claim 后先跑一次假对话」并已回退。claude-code 引擎没有单独的延迟数据。
- 【事实】A2A 路径(agent-hub 调专家)冷启动首次调用实测 约 200 s(预算 300 s),热态单轮数秒到数十秒,流式帧间隔最大 32~36 s,建议读超时 ≥ 600 s。
- 【推断】要把这套运行时用于 C 端大量短对话,可做的改动只有三类:缩短空闲回收、扩大预热池、共享常驻容器。前两类不改变成本形状与 18 s 首轮 TTFT 的下限;第三类等于放弃「每会话一沙箱」——而这正是 daemon 的全部设计理由(EFS 按会话隔离、STS 作用域凭据、POSIX uid 隔离、单用户 OpenClaw 配置)。
- 【推断】对陈洁最站得住的论点不是「贵」而是**「形状不匹配」**:短对话付 30 分钟空转、首响 25~60 s、前端绑死 OpenClaw 私有 WS 协议;模型延迟(Ark 首 token ~5.5 s)两条路都一样,不应算在 daemon 头上。
- 【待验证】本文定价只有 AWS 中国官网一个一手来源(中英文两版页面数值一致),第二独立来源因搜索配额耗尽未取得;预热池
spare的实际取值、各环境是否真的都在跑、是否共用 VPC 都不在仓库里,要问 daemon 运维。
逐题回答
1. 基础设施清单:一次用户会话涉及什么,哪些固定、哪些线性
区域与账号【事实】:region: cn-northwest-1(agent-hub-daemon/cdk.json:5;cdk.context.json 的可用区键也是 account=112399848821:region=cn-northwest-1)。README 开头说明中国区没有 Bedrock/AgentCore,所以运行时落在 ECS on Fargate(agent-hub-daemon/README.md:3-7)。
栈清单(agent-hub-daemon/app.py:56-291 依次组装):
| 栈 | 组件与规格 | 定义位置 | 固定/线性 |
|---|---|---|---|
| AgentdVpc | VPC 10.20.0.0/16,2 AZ,1 个 NAT 网关;接口型 Endpoint 9 个(ECR API、ECR Docker、Secrets Manager、CloudWatch Logs、Monitoring、STS、ECS、ECS Agent、ECS Telemetry),S3/DynamoDB 网关型 Endpoint(免费);VPC Flow Log 只记 REJECT |
stacks/vpc_stack.py:83-94(NAT)、:127-144(接口型)、:146-154(网关型) |
固定 |
| AgentdSecurity | KMS CMK、Secrets Manager(网关 token、每 plan 一条、每用户自存 key) | stacks/security_stack.py;README:48-50 |
固定(用户 key 条数随用户增长) |
| AgentdData | DynamoDB 单表 agentd-identity,按需计费+PITR+CMK;S3 用户文件桶(KMS、版本化、365 天过期);EFS 加密、通用模式、弹性吞吐、30 天转 IA |
stacks/data_stack.py:44-56、:59-82、:92-103 |
DDB/EFS 存储随会话数增长,基线固定 |
| AgentdEcs | ECS 集群,Container Insights 开启;Cloud Map 私有命名空间 | stacks/ecs_stack.py:33-45 |
固定 |
| AgentdBuild | ECR 仓库 ×5+CodeBuild | stacks/build_stack.py:60-100 |
固定 |
| AgentdRouter | 公网 ALB(idle 4000 s,监听 18443 TLS);Router Fargate ARM64 0.5 vCPU/1 GiB,副本数 context router_service_desired_count(cdk.json:16 为 2;部署脚本 prod 2、其他 1) |
stacks/router_service_stack.py:50-54、:82-88、:146-204;scripts/deploy-env.sh:91-95 |
固定 |
| AgentdAgentTask | 每会话一个 Fargate ARM64 任务,规格读 context agent_task_cpu/agent_task_memory_mb(栈内兜底 1024/2048;cdk.json:34-35 也是 1024/2048),临时盘 21 GiB(cdk.json:38),容器健康检查 start_period 300 s,挂 EFS 卷 |
stacks/agent_task_stack.py:60-62、:364-371、:375-377、:493、:497 |
线性 |
| AgentdAgentTaskClaudeCode | claude-code 引擎平行 TaskDef,栈内兜底 512/1024,cdk.json:36-37 覆盖为 2048/4096,start_period 90 s |
stacks/agent_task_claude_code_stack.py:81-83、:206-212、:283 |
线性 |
| AgentdLlmProxy | 私网 Fargate ARM64 0.5 vCPU/1 GiB,栈内默认 2 副本;部署脚本 prod 4、非 prod 1 | stacks/llm_proxy_stack.py:58-60、:216-222、:271;scripts/deploy-env.sh:105-110 |
固定 |
| AgentdApi | API Gateway HTTP API + 十余个 Lambda(uc_authorizer、web_api、admin_api、files_api、cs_api、mcp_api、skill_api、workspace_provisioner 等,内存 128~1024 MB) | stacks/api_stack.py:208-1274 |
按调用计费,量小 |
| AgentdPool | EventBridge 每 60 s 触发 pool-sweeper Lambda(256 MB,180 s 超时)维持预热池 |
stacks/pool_stack.py:140-154 |
固定(spare 个容器常驻) |
| AgentdCron/Watcher | EventBridge Scheduler+cron Lambda;channel-watcher Fargate 0.5/1 × 1 | stacks/cron_stack.py;stacks/watcher_stack.py:53-55、:124-129 |
固定 |
| AgentdUsageTracker/Observability | 订阅 ECS 任务状态变更的 Lambda;CloudWatch 仪表盘与告警 | stacks/usage_tracker_stack.py、stacks/observability_stack.py |
固定 |
一次会话的链路【事实】(README.md:187-256):浏览器 → API Gateway → uc_authorizer Lambda → web_api Lambda(查 DynamoDB,命中 RUNNING 任务则 reused;否则先抢预热池 claimed,再 RunTask 走 started,轮询 /ping 直到 OpenClaw 真 ready)→ 返回 wsUrl → 浏览器 WSS → ALB → Router Fargate(验 HMAC、查任务私网 IP)→ 反代到 agent 容器 :8080 → bridge 反代到容器内 OpenClaw :18789 → OpenClaw 直连 AI Gateway(经 LLM Proxy/NAT 出网)。
线性部分的细目【推断】:每个活动会话除容器 vCPU/内存秒之外,还带一个 ENI(私网 /22 子网 × 2 AZ 容量约 2,000 个 IP)、一个 EFS 子目录 /workspaces/<ns>/<sid>/.openclaw(README:273-275)、一条 CloudWatch 日志流、每 30 s 一次 DynamoDB 写(活跃时间刷新)。cdk.json:42-43 还有硬上限:每用户 1 个任务、全局 200 个任务。
2. 预热池与空闲回收
spare 语义【事实】:DynamoDB POOLCONFIG/CONFIG.spare 表示要维持的「无用户」预热任务数,按引擎各一份(openclaw 与 claude-code 独立,lambda/pool_sweeper/index.py:257-258;app.py:213-229 注释)。读取时缺省为 0,即默认关闭(shared/agentd_shared/tasks.py:894-899);管理接口限定 spare∈[0,50](README:780)。
补偿逻辑【事实】(lambda/pool_sweeper/index.py:152-184、:187-226):每轮先清死行、清卡住的 claiming,把 /pool-ready 返回 200 的 warming 提升为 ready;然后 deficit = spare − (ready + warming),为正就 RunTask 补齐,为负就先停 warming 再停最老的 ready。warming 超过 300 s 未就绪即停掉作废(:42;stacks/pool_stack.py:86)。EventBridge 固定 60 s 触发,intervalSeconds < 60 时在一次 Lambda 内连跑 60/interval 轮(:8-18)。
预热容器是否计费空转【事实+推断】:池容器是不带 USER_ID/PLANS_JSON 的 RunTask,bridge 进入 POOL 模式,不启动 OpenClaw,只监听 HTTP 等 /claim(bridge/app/server.js:119-130、:3392;README:675-677)。Fargate 按「请求的 vCPU 与内存」从拉镜像起按秒计费直到任务终止(AWS 官网定价页原文),与容器内有没有跑进程无关——所以预热容器按全价空转:每个 1 vCPU/2 GiB 的池位每月 ¥187。被认领后 sweeper 下一轮立即补一个,池位数恒为 spare。仓库里没有任何环境 spare 的实际取值(它是 DDB 里的一行,scripts/manage-pool.sh 只提供读写)【待验证】。
空闲回收判定【事实】:Router 内协程每 TASK_SWEEP_INTERVAL_SECONDS(60 s)扫一次 WEBSESS#*/TASK,now − lastActivityMs > 1800 s 就 stop_task 并删行(router/app/task_manager.py:31-32、:157-194;README:314-329)。例外是 keepalive 白名单/时间窗,仅对 openclaw 引擎,默认为空即不生效(task_manager.py:33-45、:132-146)。lastActivityMs 缺失时回退到 createdAt(:165)。
哪些帧刷新活跃时间【事实】:
- 浏览器 → 上游的任何文本/二进制帧,节流 30 s(
router/app/ws_proxy.py:180-204); - 上游 → 浏览器的任何帧,节流 30 s,注释写明是为了长任务不被中途杀掉(
ws_proxy.py:213-228); - 容器内通道(99U 等)经 bridge
POST /touch,节流 30 s(bridge/app/server.js:290-298、:1322-1340)。
由此得到的重要推断【推断,待在真实环境抓帧验证】:OpenClaw 网关维护定时器每 30 s 向所有已连接客户端广播 tick 保活事件(二手来源:dev.to 对 OpenClaw 网关源码的解读,startGatewayMaintenanceTimers 中 tick: broadcast "tick" every 30s;官方协议文档提到握手返回 policy.tickIntervalMs)。bridge 与 Router 都是原样反代,upstream_to_client 对帧不做过滤,因此只要浏览器保持 WS 连接,容器每 30 s 就被判定为活跃,1800 s 空闲计时只在 WS 断开后才真正开始。前端 ai-hub-webui 没有「空闲即断 WS」的逻辑,15 分钟 CLAW_IDLE_THRESHOLD 只是开始每 15 s 用 HTTP 探测实例是否已休眠(ai-hub-webui/src/hooks/useClawChat.ts:431-432、:1141-1173;src/config/env.ts:51,53)。
3. 冷启动与首响
README「冷启动延迟优化」节数据表原样摘录【事实】(agent-hub-daemon/README.md:548-568):
三条路径对比。
started是真冷路径;claimed走预热池;reused是同用户已有 task 还活着(~0.3 s,略去不展开)。
阶段 改动前 started(冷)claimed(池)stop_taskAPI~40 ms ~40 ms — RunTaskAPI~700 ms ~700 ms — ECS ENI attach + 调度 ~10 s ~10 s — ECR 镜像 pull(~200 MB) ~9 s ~12 s(镜像多 18 MB) — 容器启动 + bridge HTTP listen ~6 s ~6 s — OpenClaw 启动 → gateway ready ~150–180 s ~3 s ~5 s(claim 时触发) /ping语义仅 bridge listen 即 200 等 openclawReady才 200同左 waitForPort轮询间隔— ~0 s 500 ms(从 3 s 改过来,省 ~5 s) /claim全链路(web_api → bridge → ready)— — ~5–6 s 用户拿到 wsUrl(Session bootstrap)~31 s(但后台 OpenClaw 还没好) ~42 s ~6 s ⚡ 首轮 TTFT(claim/cold 都适用) 首条消息可能 hang/失败 ~18 s(见下节) ~18 s(同) 第二轮之后 TTFT 3–7 s 3–7 s 3–7 s 净收益:
- 单次点击 → 第一个字:从 ~3 分钟缩短到 ~60 秒(冷)/ ~25 秒(池)
- 不再有 hang;预热池吸收高峰时能把 Session bootstrap 压到秒级
首轮 TTFT 为什么是 18 s【事实】(README:688-716):分段日志显示 chat.send 后 run start → prompt start 静默 11.7 s,是 OpenClaw 进程内的懒初始化(acpx runtime、bedrock-mantle 探测在中国区必失败要等超时、web_search 回退、插件命令注册),再加 Ark 首 token ~5.5 s。README 明说「这段懒初始化发生在 OpenClaw 进程内,和容器生命周期正交——所以 warm pool 也帮不了」。第二轮 3~7 s 就是 Ark 那 5.5 s ± 抖动,即模型侧延迟,与运行时无关。
试过并放弃的方案【事实】(README:718-746):claim 后先发一条假 chat.send 把懒初始化跑掉——净时间不变,只是把 18 s 从「发消息后」挪到「claim 阶段」,Session bootstrap 从 6 s 涨到 25~30 s,代码已回退;「池 warming 期间就跑 lazy init」需要占位 plan 与两套 openclaw.json,有上下文泄露风险,评估后没做。
其他相关数字【事实】:web_api 等任务就绪的预算 task_warmup_max_seconds 360 s(cdk.json:17),超时返回 503(README:235);webtest 页面注明「首次启动 task ~30–60 s」(README:478)。
claude-code 引擎【事实】:仓库里没有单独的延迟数据。docs/claude-code-operations.md:79-122 只描述冷启动与预热池路径(RunTask → 注入 ANTHROPIC_* → 轮询 /ping → 返回 wsUrl;池路径 /claim 注入 serviceCode 等后 spawn claude CLI),README 的表只针对 OpenClaw。可作旁证的只有健康检查 start_period 90 s(OpenClaw 是 300 s),暗示 daemon 团队预期 claude CLI 启动更快【推断】,但首轮 TTFT 无实测。
A2A 路径首条消息延迟【事实】(agent-hub/docs/a2a/):
- 协议一致性文档:
GetTask轮询时TASK_STATE_SUBMITTED持续约 200 秒(专家实例冷启动)后转 COMPLETED(2026-08-12-a2a-protocol-conformance.md:303);抓包脚本说明「首轮因专家冷启动约需 200 秒」(:569)。 - 接入指南:「专家实例冷启动首次调用实测约 200 秒(预算上限 300 秒)。热态后单轮通常数秒到数十秒」;流式长任务帧间隔实测最大 32~36 s,中间网关 idle timeout 必须 > 40 s;HTTP 读超时建议 ≥ 600 s(
integration-guide.md:27、:280-290、:452)。 - 实现文档:「核心难点是专家冷启动要几分钟」,MCP 工具侧发消息后只等 90 s 就转异步(
2026-08-12-a2a-implementation.md:119-130)。
4. 用公开定价估算
单价【事实,AWS 中国区官网,访问 2026-09-21,宁夏区】:
| 项目 | 单价 |
|---|---|
| Fargate ARM,每 vCPU 小时 | ¥0.21263 |
| Fargate ARM,每 GiB 内存小时 | ¥0.02335 |
| Fargate 临时存储超出 20 GB 部分,每 GB 小时 | ¥0.000738 |
| Fargate 计费规则 | 从开始拉镜像到任务终止,按秒,最低 1 分钟 |
| NAT 网关 | ¥0.37/小时 + ¥0.37/GB 处理 |
| 应用负载均衡器 ALB | ¥0.156/小时 + ¥0.072/LCU 小时 |
| 接口型 VPC Endpoint | ¥0.0875/小时/每 AZ |
| 在用公网 IPv4 | ¥0.033/小时 |
| EFS 标准存储 | ¥2.145/GB 月(IA ¥0.200) |
(a) 一个 0.5 vCPU/1 GiB 容器【事实级算术】:0.5 × 0.21263 + 1 × 0.02335 = ¥0.130/小时,整月(720 h)¥93。ndclaw 实际规格:1 vCPU/2 GiB = ¥0.259/小时、¥187/月;claude-code 的 2 vCPU/4 GiB = ¥0.519/小时、¥373/月。临时盘 21 GiB 只多 1 GB,每月 ¥0.5,忽略。旁证:agent-hub-docs/topics/im-channel-wake/2026-08-06-im-channel-wake-architecture.md:330 写「watcher 常驻 ~¥50-100/月」,watcher 正是 0.5/1 规格,与 ¥93 相符。
(b) 「聊 5 分钟然后离开」的一次会话【推断】:
| 段 | 时长 | 依据 |
|---|---|---|
| 冷启动(从拉镜像计费) | ~0.7 min | README 表:ENI 10 s + pull 12 s + 启动 6 s + OpenClaw 3 s ≈ 31 s 计费段,取整 |
| 聊天 | 5 min | 题设 |
| 空闲等待 | 30 min | agent_task_idle_timeout_seconds 1800(cdk.json:39) |
| 扫描粒度 | 0~1 min | 每 60 s 扫一次 |
| 合计 | 约 36 min(0.6 h) | 有效利用率 5/36 ≈ 14% |
单次成本:0.5/1 规格 ¥0.08;1/2 规格 ¥0.16;2/4 规格 ¥0.31。走预热池时冷启动段归零,但池位本身在别处付费。若用户只是切走标签页而不关闭,按第 2 题的 tick 推断,容器持续计费:标签页开 8 小时 = ¥2.07(1/2 规格)。
(c) 预热池 spare = N 的每月空转【推断】:N × ¥187(OpenClaw,1/2)或 N × ¥373(claude-code,2/4)。spare=1 ¥187,spare=2 ¥373,spare=5 ¥933;两个引擎各自维持则相加。sweeper Lambda 每月约 43,200 次调用,费用可忽略。
(d) 100 个月活、每人每天 3 次短对话【推断,全部假设列在后文】:
| 情景 | 假设 | 容器小时/月 | 成本(1/2 规格) |
|---|---|---|---|
| 低 | 3 次落在同一个 15 分钟窗口内、月活跃 15 天 | 100 × 15 × 0.75 ≈ 1,125 | ¥292 |
| 中 | 3 次分两个时段、月活跃 20 天 | 100 × 20 × 2 × 0.6 = 2,400 | ¥622 |
| 高 | 3 次各自触发一个容器、30 天天天用 | 100 × 30 × 3 × 0.6 = 5,400 | ¥1,399 |
| 标签页常开 | 每天挂 4 小时、20 天 | 100 × 20 × 4 = 8,000 | ¥2,075 |
换成 0.5/1 规格全部减半,2/4 规格翻倍。附带项:EFS 每会话目录(100 用户 × 0.2 GB × ¥2.145 ≈ ¥43/月)、NAT 出网数据(文本对话每人每月 1 GB 量级 ≈ ¥37)、每 30 s 一次 DDB 写与日志(十元量级)。可变成本合计约 ¥300~¥1,500/月,人均 ¥3~¥15。
固定成本(单环境)【推断】:
| 项 | 计算 | 月成本 |
|---|---|---|
| 接口型 Endpoint | 9 × 2 AZ × ¥0.0875 × 720 | ¥1,134 |
| NAT 网关 | ¥0.37 × 720 | ¥266 |
| ALB | ¥0.156 × 720 + LCU 少量 | ¥115 |
| Router Fargate | 2 × ¥93(非 prod 1 副本 ¥93) | ¥187 |
| LLM Proxy Fargate | prod 4 × ¥93(非 prod ¥93) | ¥373 |
| channel-watcher | 1 × ¥93 | ¥93 |
| 公网 IPv4 | 3 × ¥0.033 × 720 | ¥71 |
| 小计 | prod 配置 / 非 prod 配置 | ¥2,239 / ¥1,865 |
| 未取价项 | CloudWatch(Container Insights 已开、日志 30 天)、DynamoDB 按需、Secrets Manager 按条月费(每用户自存 key 一条)、KMS、S3、ECR、CodeBuild、Lambda、API Gateway | 估 ¥200~¥800 |
再加预热池 N × ¥187。
与「按 token 计费的无状态服务」对比【推断】:平台的 AI 助手若作为进程内薄 harness 跑在 venture-os 自己的 FastAPI 服务里(SDP 上已付费的实例),多 100 个月活的增量基础设施约为 0~1 个副本(¥100~¥200/月量级),模型 token 费两条路完全相同(都经公司 AI Gateway),不构成差异。因此差异项就是上表:ndclaw 路线每月多付 ¥300~¥1,500 可变 +(若独立环境)¥1,900~¥2,300 固定 + 预热池;若复用 ndclaw 现有环境,则只多付可变部分,人均 ¥3~¥15。这意味着「贵」在绝对值上并不夸张,真正站得住的是成本形状:短对话为 30 分钟空转买单、1 分钟起计、标签页不关就无上限、并发峰值受 200 任务硬上限与 ENI 数约束。
5. 「月活七八十人、运维约 1 万元/月」能否印证
【事实】三个仓库里没有任何账单、Cost Explorer 导出、容量规划或月活数字。相关但不等价的线索:
- 用量接口只记录「每用户每月容器运行时长 ms 与任务数」(README:775;
lambda/task_usage_tracker/index.py:1-22由 ECS 任务状态变更事件写入),数据在 DynamoDB,不在仓库。 - 管理面有 DAU(Router 在 WS 帧上打点,
router/app/ws_proxy.py:126-140;lambda/admin_api/index.py:1685-1761),MAU 未实现,列在待办(docs/admin-api.md:317、:575)。 cdk.json:44-45有daily_token_budget: 1000000与daily_cost_budget_cny: 50,但读取daily_cost_budget_usd的stacks/token_monitoring_stack.py:39并没有被app.py实例化,这两个键目前无效。agent-hub-docs的浏览器工具评估在 2026-08-02 明确写「缺cn-northwest-1Fargate 真实单价比」「所有成本表述均标注为待验证」(topics/browser-tool-enablement/2026-08-02-browser能力替代方案评估.md:297、:382),说明 daemon 团队自己也没做过成本核算。
【推断】把第 4 题的固定成本代入:daemon 有五套环境(README:106),若每套各有 VPC、NAT、Endpoint、ALB,固定部分 4 × ¥1,865 + ¥2,239 ≈ ¥9,700/月,再加未取价项,正好落在「约 1 万」量级;若非 owner 环境作为 VPC consumer 共用 Endpoint 与 NAT(stacks/vpc_stack.py:38 有 vpc_import_id,scripts/deploy-env.sh:78-80 注释提到「非 owner 环境自动作为 VPC consumer」),固定部分降到约 ¥4,100。无论哪种,1 万元的大头都是固定成本 × 环境数,不是 80 个用户的容器时长(80 人按「高」情景也只有 ¥1,100)。所以「人均 100 元」这个除法在方向上不成立,白晨的论证应改用形状论点。这一段是推断,要拿真实账单核对【待验证】。
6. 用于 C 端大量短对话要改什么,代价是什么
| 改动 | 作用 | 代价与副作用 | 是否放弃「每会话一沙箱」 |
|---|---|---|---|
| 缩短空闲回收(1800 s → 300 s) | 空转计费从 30 min 降到 5 min,单次短对话成本降约 80% | 5 分钟后再回来要重新走 claim/冷路径,每次都付 6~42 s bootstrap + 18 s 首轮 TTFT(懒初始化按 OpenClaw 进程计,README:714-716);tick 保活不改 Router 过滤逻辑则缩短无效;EFS 目录保留,历史无损 |
否 |
过滤 tick 等保活帧 |
让空闲判定只看真实业务帧 | 要在 ws_proxy.py 解析 OpenClaw 协议帧并区分事件类型,Router 从字节透传变成协议感知;长任务只产生上游帧的场景(README 注释 ws_proxy.py:214-217)需另设保活 |
否 |
| 扩大预热池 | bootstrap 从 42 s 降到 6 s | N × ¥187/月全价空转;只消掉 36 s bootstrap,不消 18 s 首轮 TTFT;sweeper 最快 10 s 一轮,一分钟内并发超过 spare 的部分仍走冷路径;池容器数受 200 任务上限与 ENI 数约束 |
否 |
| 池内预跑懒初始化 | 首轮 TTFT 降到 ~5 s | daemon 团队评估后未做:需占位 plan 与真实 key、两套 openclaw.json、切换时防上下文泄露,「复杂度高且有安全风险」(README:741-746) | 部分(池容器带真实凭据) |
| 共享常驻容器(多用户复用一个 OpenClaw/一组进程) | 消除 bootstrap 与首轮懒初始化,成本变成按副本数 | 与现有设计逐项冲突:EFS 按 <ns>/<sid> 隔离(README:273-275)、bridge 用 STS 作用域凭据把 S3 限到本命名空间(README:298;bridge/app/server.js:805-813)、POSIX uid 隔离(workspace_isolation_mode: posix_uid,stacks/api_stack.py:177-178)、每容器一份 openclaw.json 写死单用户 provider(README:299-301);OpenClaw 网关本身是单用户设计。等于重写 bridge 并去掉 daemon 的安全模型 |
是 |
| 放宽硬上限与网络容量 | 支撑 C 端并发 | agent_task_max_total 200、每用户 1(cdk.json:42-43);每任务一个 ENI;RunTask 有 API 限速 |
否,但运维面扩大 |
【推断】结论:前四类改动保留沙箱,但成本形状(按容器时长而非按请求)与延迟下限(首轮 18 s、冷路径 60 s)不变,只是把系数调小;第五类才能得到 C 端要的「秒级首响、按请求计费」,而它恰恰放弃了 daemon 存在的理由。此外前端会绑死 OpenClaw 原生 WS 协议 {type, method, params}(README:358)与 UC MAC 鉴权链路,这一点 wiki 36 页已指出,本文不重复展开。
假设与未核实项
- 【假设】月按 720 小时;ALB LCU 按百级并发 WS 连接忽略;NAT 数据按文本对话量级;EFS 每会话 0.2 GB。
- 【假设】「短对话」= 5 分钟活动;三次对话的时段分布用低/中/高三档覆盖,真实分布未知。
- 【假设】1 vCPU/2 GiB 是当前生产规格:
cdk.json与 README 都这么写,但deploy-env.sh允许AGENT_CPU/AGENT_MEM临时覆盖,实际环境可能不同。 - 【待验证】OpenClaw
tick每 30 s 广播——来源是对源码的二手解读,未在 daemon 真实环境抓帧;官方协议文档只提到policy.tickIntervalMs,未取到具体默认值。 - 【待验证】各环境
spare取值、五套环境是否都在运行、是否共用 VPC/NAT/Endpoint、Secrets Manager 按条月费在中国区的单价。 - 【待验证】claude-code 引擎首响:无数据。
- 【边界】定价第二独立来源:Tavily 配额耗尽(2026-09-21),Firecrawl 搜索只回到同一官网页面;中英文两版官网数值一致,但属同一来源。
来源清单
仓库(本机,只读)
~/AI-Hub-Project/agent-hub-daemon/README.md(架构 9-50、会话流程 187-256、多会话 260-285、空闲回收 314-329、冷启动优化 540-759、管理接口 761-782)~/AI-Hub-Project/agent-hub-daemon/cdk.json:5-51~/AI-Hub-Project/agent-hub-daemon/app.py:56-291~/AI-Hub-Project/agent-hub-daemon/stacks/:vpc_stack.py:83-154、data_stack.py:44-103、ecs_stack.py:33-45、router_service_stack.py:50-258、agent_task_stack.py:60-497、agent_task_claude_code_stack.py:81-283、llm_proxy_stack.py:58-271、watcher_stack.py:53-129、pool_stack.py:86-165、api_stack.py:177-178,208-1274、token_monitoring_stack.py:39~/AI-Hub-Project/agent-hub-daemon/router/app/task_manager.py:31-45,132-194;router/app/ws_proxy.py:1-30,113-140,170-235~/AI-Hub-Project/agent-hub-daemon/lambda/pool_sweeper/index.py:8-42,152-293;lambda/web_api/index.py:75,145-157,640-704;lambda/admin_api/index.py:1685-1761;lambda/task_usage_tracker/index.py:1-22~/AI-Hub-Project/agent-hub-daemon/shared/agentd_shared/tasks.py:894-899~/AI-Hub-Project/agent-hub-daemon/bridge/app/server.js:119-130,290-298,540-552,805-813,1322-1340,3392;bridge-cc/server.js:7-9,136-140~/AI-Hub-Project/agent-hub-daemon/scripts/deploy-env.sh:78-110;scripts/manage-pool.sh:2-10~/AI-Hub-Project/agent-hub-daemon/docs/claude-code-operations.md:60-133;docs/admin-api.md:317,575~/AI-Hub-Project/agent-hub/docs/a2a/2026-08-12-a2a-protocol-conformance.md:303,569;docs/a2a/integration-guide.md:27,280-290,452;docs/a2a/2026-08-12-a2a-implementation.md:119-130~/AI-Hub-Project/agent-hub-docs/topics/im-channel-wake/2026-08-06-im-channel-wake-architecture.md:330,399;topics/browser-tool-enablement/2026-08-02-browser能力替代方案评估.md:297,382~/AI-Hub-Project/ai-hub-webui/src/hooks/useClawChat.ts:431-432,1141-1173;src/config/env.ts:51,53
公开定价与文档(访问日期 2026-09-21)
- Amazon Fargate 定价(中国区,英文):https://www.amazonaws.cn/en/fargate/pricing/
- Amazon Fargate 定价(中国区,中文,数值一致):https://www.amazonaws.cn/fargate/pricing/
- Amazon VPC/NAT 网关/公网 IPv4 定价(中国区):https://www.amazonaws.cn/en/vpc/pricing/
- Elastic Load Balancing 定价(中国区):https://www.amazonaws.cn/en/elasticloadbalancing/pricing/
- Amazon PrivateLink 接口型 Endpoint 定价(中国区):https://www.amazonaws.cn/en/privatelink/pricing/
- Amazon EFS 定价(中国区):https://www.amazonaws.cn/en/efs/pricing/
- OpenClaw 网关协议文档(提到握手返回
policy.tickIntervalMs,事件族):https://docs.openclaw.ai/gateway/protocol - OpenClaw 网关源码解读(
tick每 30 s 广播、dropIfSlow,二手来源):https://dev.to/agentinternals/how-openclaw-serves-http-websocket-and-70-methods-on-a-single-port-4g10