# 附录 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。每条结论标【事实】／【推断】／【待验证】。

## 一页结论

1. 【事实】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`）。
2. 【事实】固定常驻的部分与用户数无关：1 个 NAT、9 个接口型 VPC Endpoint × 2 AZ、1 个公网 ALB、Router Fargate（2 副本）、LLM Proxy Fargate（prod 4 副本）、channel-watcher（1 副本）、预热池 `spare` 个空容器。随并发会话线性增长的只有 agent 容器本身（外加每会话的 ENI、EFS 目录、日志）。
3. 【事实】按 AWS 中国官网价，**0.5 vCPU／1 GiB 的 ARM 容器每小时 ¥0.13，整月常驻 ¥93**；ndclaw 实际用的 1 vCPU／2 GiB 是 **¥0.26／小时、整月 ¥187**。这个数与 `agent-hub-docs` 里「watcher 常驻 ~¥50-100／月」的估算相符。
4. 【推断】一次「聊 5 分钟就走」的会话实际计费 **约 36 分钟**（冷启动 ~0.7 分钟 ＋ 聊天 5 分钟 ＋ 空闲等待 30 分钟 ＋ 扫描粒度 0～1 分钟），**86% 的计费时长在空转**，单次 ¥0.08～¥0.31（按规格）。而且 OpenClaw 网关每 30 s 向客户端广播 `tick` 帧，Router 对任何上游帧都刷新活跃时间，**只要浏览器标签页不关，容器永远不会被判空闲**，计费无上限。
5. 【推断】100 个月活、每人每天 3 次短对话，agent 容器的可变成本约 **¥300～¥1,400／月**（人均 ¥3～¥14），标签页常开会推到 ¥2,000 以上。**「人均 100 元／月」不是可变成本能算出来的数**。
6. 【推断】白晨口述的「运维约 1 万元／月」更可能由**固定成本 × 环境数**构成：单环境固定部分约 ¥1,900～¥2,300／月（其中接口型 Endpoint 就 ¥1,134，NAT ¥266），daemon 有 dev／test／pressure／beta／prod 五套环境。仓库里**没有任何账单、容量或月活数据**能印证或反驳这个口述。
7. 【事实】首响延迟以 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 引擎**没有单独的延迟数据**。
8. 【事实】A2A 路径（agent-hub 调专家）冷启动首次调用实测 **约 200 s**（预算 300 s），热态单轮数秒到数十秒，流式帧间隔最大 32～36 s，建议读超时 ≥ 600 s。
9. 【推断】要把这套运行时用于 C 端大量短对话，可做的改动只有三类：缩短空闲回收、扩大预热池、共享常驻容器。前两类不改变成本形状与 18 s 首轮 TTFT 的下限；第三类等于放弃「每会话一沙箱」——而这正是 daemon 的全部设计理由（EFS 按会话隔离、STS 作用域凭据、POSIX uid 隔离、单用户 OpenClaw 配置）。
10. 【推断】对陈洁最站得住的论点不是「贵」而是**「形状不匹配」**：短对话付 30 分钟空转、首响 25～60 s、前端绑死 OpenClaw 私有 WS 协议；模型延迟（Ark 首 token ~5.5 s）两条路都一样，不应算在 daemon 头上。
11. 【待验证】本文定价只有 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_task` API | ~40 ms | ~40 ms | — |
> | `RunTask` API | ~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-1` Fargate 真实单价比」「所有成本表述均标注为待验证」（`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
