AI Agent的"触手":深度解析Clawdbot节点架构
AI Agent的"触手":深度解析Clawdbot节点架构
开篇故事
想象一下,你的AI助理"Clawd"正在WhatsApp上陪你聊天。突然,你说:"帮我看看窗外现在的天气怎么样。"
在传统的AI助理里,这句话会遇到一堵无形的墙——AI被困在云端服务器里,只能通过API间接地触摸世界。但在Clawdbot的世界里,奇迹发生了:
你的手机摄像头咔嚓一声,拍下了窗外的场景;几秒钟后,Clawd回复道:"看起来是多云天气,温度大约15度左右,街上有行人打着伞。"
这不是魔法。这是Clawdbot节点架构的力量——它让AI Agent第一次真正拥有了"手脚"和"感官",能够直接感知和操作物理世界。
引言:为什么AI Agent需要"手脚"?
在云计算的黄金时代,我们把一切都搬到了云端。数据、计算、智能——统统集中在远程服务器。对于纯信息处理的任务,这确实很高效。但当我们开始构建AI Agent——能够自主决策、执行任务的智能体——云架构暴露出了根本性的局限性。
传统云架构的痛点
1. 延迟问题
用户 → 云端AI → 第三方API → 云端AI → 用户
↑_______________↑
这个来回可能要数秒当你需要"现在就拍张照"或"立刻锁屏"时,云端往返的延迟是致命的。
2. 隐私边界
你的照片、位置、屏幕内容——这些数据是敏感的。把它们上传到云端处理,即使加密,也让你心里不安。更别提某些企业政策根本不允许数据出境。
3. 能力真空
云端AI能调用什么API?
- 天气API?只能查到城市的天气,看不到你窗外的真实场景
- 摄像头API?不存在这种东西
- 屏幕录制API?云端哪来的屏幕
AI Agent被困在云端,被剥夺了感知和操作物理世界的能力。
边缘计算的崛起
这就是边缘计算的意义所在——把计算能力下沉到数据产生的地方。
- 自动驾驶汽车:不能等云端决策刹车,必须在本地毫秒级响应
- 智能家居:灯泡开关不应该绕地球一圈
- AI Agent:需要直接访问你的摄像头、屏幕、文件系统
Clawdbot节点架构,正是这一思想在AI Agent领域的先驱实践。
Clawdbot节点架构设计
核心概念:Gateway与Node
Clawdbot采用了一个简洁而强大的二元架构:
┌─────────────────────────────────────────────┐
│ Gateway(大脑) │
│ - 运行在服务器/VPS/家庭主机 │
│ - 管理所有消息通道(WhatsApp/Telegram等) │
│ - 运行AI模型和决策逻辑 │
│ - WebSocket服务器(端口18789) │
└──────────────┬───────────────────────────────┘
│ WebSocket + JSON
│
┌──────────┴──────────┐
│ 设备发现与配对 │
│ (Bonjour/Tailnet) │
└──────────┬──────────┘
│
┌──────────┴──────────┐
│ │
┌───▼────┐ ┌────▼────┐
│ Node 1 │ │ Node 2 │
│ iPhone │ │ MacBook │
│(触手) │ │(触手) │
└────────┘ └─────────┘Gateway(网关) = AI Agent的"大脑"
- 长期运行的后台服务
- 维护所有会话和状态
- 暴露WebSocket API供客户端连接
- 不直接访问硬件——那是节点的活
Node(节点) = AI Agent的"触手"和"感官"
- 运行在你的个人设备上(iPhone、Android、Mac、Linux)
- 通过WebSocket连接到Gateway
- 声明自己的能力(caps)和可用命令
- 执行具体的硬件操作(拍照、录音、执行命令等)
为什么这样设计?
这是一个典型的关注点分离设计:
| Gateway (云端/服务器) | Node (边缘设备) |
|---|---|
| 计算密集型(LLM推理) | IO密集型(硬件访问) |
| 持久化状态(会话、记忆) | 瞬态操作(拍照、录屏) |
| 统一的消息路由 | 分布的能力暴露 |
| 高安全边界 | 本地隐私保护 |
核心洞察:Gateway只需要知道"我能做什么"(通过node.list查询),而不需要知道"怎么做"(具体硬件实现)。这实现了极好的解耦。
核心能力展示
节点的真正威力在于它暴露的各种能力。让我们逐一探索。
1. Camera:AI的"眼睛"
# 拍摄照片(前后摄像头都拍)
clawdbot nodes camera snap --node my-iphone
# 录制10秒视频
clawdbot nodes camera clip --node my-iphone --duration 10s场景:
- "帮我看看冰箱里还有什么食材" → 拍照 → AI识别 → 建议菜谱
- "拍下这个商品的条形码" → 识别 → 比价
- "录一段我打乒乓球的手势" → 动作分析
技术细节:
- 响应payload包含base64编码的图片/视频
- 自动压缩确保payload < 5MB(WebSocket消息限制)
- 支持前后摄像头切换、质量控制、延迟拍照
- 权限门控:用户可以在设备设置中禁用摄像头
2. Screen:AI的"视野"
# 录制屏幕(15秒,10fps)
clawdbot nodes screen record --node my-mac --duration 15s --fps 10场景:
- "帮我看看这个软件怎么设置" → 屏幕录制 → AI分析 → 生成教程
- "录一下我玩游戏的高光操作" → 自动剪辑 → 分享
- "监控我的开发环境,报错时通知我" → 屏幕分析 → 错误检测
技术细节:
- macOS需要Screen Recording权限(TCC)
- iOS/Android需要系统录屏权限
- 时长限制60秒(防止payload过大)
- 支持多显示器选择(--screen参数)
3. Canvas:AI的"画布"
# 在节点上显示网页
clawdbot nodes canvas present --node my-ipad --target https://example.com
# 执行JavaScript
clawdbot nodes canvas eval --node my-ipad --js "document.title"
# A2UI渲染(Agent-to-UI)
clawdbot nodes canvas a2ui push --node my-ipad --jsonl ./payload.jsonl场景:
- "在这个网页上填表并提交" → 自动化浏览器操作
- "帮我看一下这个长网页的摘要" → Canvas快照 → AI分析
- "生成一个仪表板显示我的数据" → A2UI渲染 → 实时更新
技术细节:
- Canvas是一个WebView,可以加载任意URL或本地HTML
- A2UI是一种Agent-to-UI协议,让AI直接生成UI界面
- 支持定位(x, y, width, height)和窗口控制
4. Location:AI的"位置感知"
# 获取位置
clawdbot nodes location get --node my-iphone --accuracy precise场景:
- "我现在在哪里,最近的咖啡店在哪?" → 位置 → 地图API → 导航
- "提醒我:到家时告诉AI" → 地理围栏 → 自动触发
- "记录我的运动轨迹" → 后台位置 → 数据分析
技术细节:
- 默认关闭(隐私优先)
- 三种模式:Off / While Using / Always
- 精度控制:coarse / balanced / precise
- 响应包含:lat/lon、精度、海拔、速度、航向等
5. Audio & Talk:AI的"耳朵和嘴巴"
# 启用Talk模式(连续语音对话)
# macOS菜单栏切换,或命令行控制场景:
- 完全hands-free的语音交互
- 开车时:"Clawd,回复这条消息说我晚点到"
- 做饭时:"帮我定个15分钟计时器"
技术细节:
- 使用ElevenLabs TTS进行流式语音合成
- 支持中断检测(interruptOnSpeech)
- 语音指令可以控制TTS参数(音色、语速、稳定性)
- macOS/iOS/Android全平台支持
6. System.run:AI的"远程手脚"
# 在节点上执行命令
clawdbot nodes run --node build-node -- make test
# 发送系统通知
clawdbot nodes notify --node my-mac --title "构建完成" --body "所有测试通过"场景:
- 远程构建/部署:Gateway在云端,Node是构建机
- 家庭自动化:触发HomeKit命令、运行AppleScript
- 开发助手:在远程机器上运行git、docker等命令
技术细节:
- 安全门控:exec-approvals机制(ask/allowlist/full三种模式)
- 支持超时控制、环境变量、工作目录设置
- 返回stdout/stderr/exit code
- 多节点绑定:可以有多个build node,负载均衡
技术实现原理
现在让我们深入到技术实现层面,看看这个架构是如何工作的。
通信协议:WebSocket + JSON
Clawdbot采用了一个简单但强大的协议设计:
┌─────────────────────────────────────────────────┐
│ 握手阶段(必须的第一帧) │
├─────────────────────────────────────────────────┤
│ Client → Gateway: │
│ { │
│ type: "req", │
│ method: "connect", │
│ params: { │
│ minProtocol: 3, │
│ maxProtocol: 3, │
│ client: { id, version, platform, mode }, │
│ role: "node", ← 关键:声明为节点 │
│ caps: ["camera", "canvas", "screen"], │
│ commands: ["camera.snap", ...], │
│ permissions: { "camera.capture": true }, │
│ auth: { token: "..." } │
│ } │
│ } │
├─────────────────────────────────────────────────┤
│ Gateway → Client: │
│ { │
│ type: "res", │
│ ok: true, │
│ payload: { │
│ type: "hello-ok", │
│ protocol: 3, │
│ auth: { deviceToken: "..." } │
│ } │
│ } │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ 正常通信阶段 │
├─────────────────────────────────────────────────┤
│ 请求(Request): │
│ { type: "req", id, method: "node.invoke", │
│ params: { nodeId, command, params } } │
│ │
│ 响应(Response): │
│ { type: "res", id, ok, payload | error } │
│ │
│ 事件(Event): │
│ { type: "event", event: "node.pair.requested",│
│ payload, seq, stateVersion } │
└─────────────────────────────────────────────────┘设计亮点:
- 强制握手:第一帧必须是connect,否则直接关闭连接。这防止了协议混淆攻击。
- 角色声明:通过
role: "node"明确标识节点类型。Gateway会据此进行不同的权限管理。 - 能力声明:节点在握手时就声明自己的caps(高级能力)和commands(具体命令)。这是"声明式设计"——节点说"我能做什么",Gateway验证并记录。
- 幂等性:所有副作用操作(如send、agent)都需要idempotency key,防止网络重试导致重复执行。
- 事件流:Gateway主动推送事件(presence、tick、shutdown等),客户端只需监听。这实现了真正的双向通信。
设备发现与配对流程
节点的发现和配对是一个精心设计的安全流程:
┌──────────────────┐
│ 1. 发现阶段 │
├──────────────────┤
│ - Bonjour/mDNS │ ← 同一局域网
│ - Tailnet DNS │ ← 跨网络(Tailscale)
│ - 手动配置 │ ← SSH隧道兜底
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 2. 连接握手 │
├──────────────────┤
│ Node → Gateway: │
│ "我是设备X,这是 │
│ 我的公钥和签名" │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 3. 配对请求 │
├──────────────────┤
│ Gateway: │
│ "新设备X请求配对" │
│ → 推送到所有UI │
│ → 5分钟超时 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 4. 人工审批 │
├──────────────────┤
│ 用户通过CLI或UI │
│ 批准或拒绝 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 5. Token颁发 │
├──────────────────┤
│ Gateway: │
│ "这是你的device │
│ token,妥善保管" │
│ → 持久化到本地 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 6. 重连认证 │
├──────────────────┤
│ Node使用token │
│ 直接连接,无需 │
│ 重新审批 │
└──────────────────┘安全特性:
- 设备身份:每个节点有唯一的device fingerprint(基于公钥)
- 本地自动批准:loopback或同一tailnet内的连接可自动批准(便利性)
- 远程签名挑战:非本地连接必须签名Gateway的nonce(防止中间人攻击)
- Token轮换:重新配对会生成新token,旧token失效
- 权限最小化:节点声明permissions map,Gateway做二次验证
存储位置(以Gateway为例):
~/.clawdbot/
├── nodes/
│ ├── paired.json # 已配对节点及token
│ └── pending.json # 待审批请求
├── credentials/
│ └── *-allowFrom.json # DM配对允许列表会话管理:多节点隔离
当有多个节点连接时,Gateway如何管理会话?
关键设计:Presence系统
// Presence Entry(伪代码)
{
instanceId: "iphone-15-pro-123", // 稳定ID(推荐)
host: "Johns-iPhone",
ip: "192.168.1.42",
version: "1.2.3",
platform: "ios",
mode: "node", // or "ui", "cli", "webchat"
caps: ["camera", "canvas", "screen"],
connected: true,
paired: true,
lastInputSeconds: 15,
ts: 1737264000000
}合并与去重规则:
- 按instanceId合并:同一设备的多个连接(如node + ui)会合并显示
- TTL清理:5分钟未更新的entry自动删除
- 上限保护:最多200个entry,超出则删除最旧的
- Loopback保护:SSH隧道连接时忽略127.0.0.1,保留真实IP
Agent调用节点时:
// 场景1:指定节点
await nodes.action({
node: "johns-iphone",
action: "camera_snap"
})
// 场景2:按能力匹配
await nodes.action({
selector: { caps: "camera" },
action: "camera_snap"
})
// 场景3:多节点并行
await Promise.all([
nodes.action({ node: "iphone", action: "camera_snap" }),
nodes.action({ node: "macbook", action: "screen_record" })
])安全模型:深度防御
Clawdbot的安全设计是分层的:
┌─────────────────────────────────────────┐
│ 第0层:网络安全 │
│ - Gateway默认bind: loopback │
│ - 远程访问通过Tailnet/SSH隧道 │
│ - TLS + fingerprint pinning │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 第1层:认证 │
│ - gateway.auth.token/password │
│ - device token(配对后颁发) │
│ - nonce签名验证(远程连接) │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 第2层:授权 │
│ - DM policy:pairing/allowlist/open │
│ - Group policy:requireMention │
│ - Node permissions map │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 第3层:审批 │
│ - Exec approvals:ask/allowlist/full │
│ - 工具allowlist/denylist │
│ - Sandboxing:Docker隔离 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 第4层:审计 │
│ - Session transcripts(会话日志) │
│ - Gateway logs │
│ - security audit命令 │
└─────────────────────────────────────────┘Exec审批机制详解:
// ~/.clawdbot/exec-approvals.json
{
"mode": "ask", // ask | allowlist | full
"allowlist": [
"/usr/bin/uname",
"/usr/bin/sw_vers"
],
"history": [
{
"command": "/usr/bin/git status",
"timestamp": 1737264000000,
"approved": true,
"approvedBy": "user"
}
]
}- ask模式:每次执行需要人工批准(适合学习/调试)
- allowlist模式:只有白名单里的命令可以直接执行(推荐)
- full模式:所有命令直接执行(危险!仅用于完全信任的环境)
设计哲学:边缘计算 + 分布式AI
Clawdbot节点架构背后有一套清晰的设计哲学。
1. 隐私优先
核心原则:敏感数据留在本地,只在必要时发送摘要。
❌ 传统方式:
用户 → 云端API → 第三方服务 → 云端AI
↑________↑
照片、位置全上传
✅ Clawdbot方式:
用户 → 本地Node → 处理 → 仅发送结果 → 云端AI
↑_____________↑
数据不出设备实践案例:
- 照片识别:在本地用CoreML提取embedding,只发送向量到云端
- 语音转文字:本地Whisper CLI转录,只发送文本
- 屏幕分析:本地OCR,只发送识别出的文字
2. 延迟最小化
对于实时交互,延迟是用户体验的关键。
| 操作 | 云端往返 | 本地Node |
|---|---|---|
| 拍照并分析 | 3-8秒 | <1秒 |
| 语音唤醒 | 2-5秒 | <500ms |
| 屏幕录制并分享 | 5-15秒 | <2秒 |
为什么差距这么大?
- 云端:网络往返(RTT)+ 排队 + 处理
- Node:本地硬件直接调用
3. 容错性
分布式系统的必然要求:部分故障不应导致整体瘫痪。
Gateway故障 → Node缓存 → 重连
↓ ↓
AI无法决策 本地能力仍可用
↓ ↓
但历史会话保留 可继续拍照/录音
Node故障 → Gateway检测 → 标记offline
↓ ↓
失去该能力 其他Node继续工作
↓ ↓
但Gateway不受影响 系统降级运行实际场景:
- 你的iPhone没电了 → Mac和iPad节点继续工作
- 家庭网络断开 → 节点缓存命令,网络恢复后执行
- Gateway重启 → 节点自动重连,状态从快照恢复
4. 可扩展性
设计支持多Gateway + 多Node的复杂拓扑:
┌───────────┐
│ Tailscale│
│ VPN │
└─────┬─────┘
┌──────────────┼──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Gateway │ │ Gateway │ │ Gateway │
│ (主) │ │ (备份) │ │ (开发) │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Node *5 │ │ Node *3 │ │ Node *2 │
└─────────┘ └─────────┘ └─────────┘
用途:
- 主Gateway:日常使用
- 备份Gateway:灾难恢复(rescue-bot pattern)
- 开发Gateway:新功能测试5. 渐进式复杂度
Clawdbot的设计允许从简单到复杂逐步演进:
Level 1(单机):
只有Gateway,没有Node
→ 基础聊天AI
Level 2(单Node):
Gateway + 1个Mac节点
→ 本地命令执行
Level 3(多Node):
Gateway + 多个设备
→ 分布式能力
Level 4(多Gateway):
多个Gateway + 多Node集群
→ 高可用、多环境实际应用场景
理论讲完了,让我们看看实际应用。
场景1:智能家庭助理
设备:
-客厅iPad(Node):显示Canvas,控制面板
- iPhone(Node):摄像头、位置、语音
- Mac mini(Gateway + Node):主控中心
- HomeKit设备:通过Node脚本控制
工作流:
1. 用户:"Clawd,我到家了"
2. iPhone节点发送位置 → Gateway检测到地理围栏触发
3. Gateway调用Mac mini节点 → 执行HomeKit脚本
4. 开灯、开空调、播放音乐
5. iPad节点显示Canvas → "欢迎回家,今天有3条消息"
隐私优势:
- 位置数据在本地处理,只发送"到家"事件
- 摄像头画面只在本地分析(检测人数)
- 没有数据上传到云端场景2:远程开发助手
设备:
- 云端VPS(Gateway):运行AI模型
- 家里MacBook Pro(Node):代码构建
- 公司Mac mini(Node):测试环境
工作流:
1. 用户(在手机):"部署到测试环境"
2. Gateway接收消息 → 调用公司Mac mini节点
3. Node执行:git pull → docker build → kubectl apply
4. 实时输出流式返回给用户
5. 完成后Node发送通知 → Gateway推送消息
安全优势:
- 公司防火墙内,Node通过SSH出站连接Gateway
- Exec allowlist限制只能执行特定命令
- 所有命令审计日志记录在本地场景3:摄影助手
设备:
- iPhone(Node):摄像头、相册
- iPad(Node):Canvas显示编辑界面
- Mac(Gateway):AI图像处理
工作流:
1. 用户:"帮我选今天拍的最好的5张照片"
2. Gateway调用iPhone节点 → 获取所有照片的缩略图
3. 在Gateway上用多模态模型分析构图、光线、表情
4. 挑选Top 5 → 调用iPad节点Canvas展示
5. 用户确认 → iPhone节点创建相册
技术亮点:
- 缩略图base64传输(小)
- 分析在云端(强算力)
- 原图留在本地(隐私)未来展望
Clawdbot节点架构还在快速发展中。以下是一些可能的方向:
1. Matter智能家居协议
Apple、Google、Amazon联合推出的Matter协议正在统一智能家居标准。
可能性:
- Node成为Matter Controller
- AI直接控制所有Matter设备
- 无需HomeKit/Google Home中转
示例:
"把客厅灯光调成电影模式"
→ Gateway识别意图
→ 节点通过Matter协议调暗灯光、关闭窗帘
→ 确认完成2. WebGPU与本地AI
随着WebGPU的普及,浏览器里也能运行高性能AI模型。
可能性:
- Canvas里直接运行本地模型(如Whisper、YOLO)
- 完全离线的语音识别、物体检测
- 零云端依赖的隐私模式
架构变化:
┌─────────────┐
│ Gateway │ ← 只做决策,不运行模型
└──────┬──────┘
│
┌──────▼──────┐
│ Node Canvas│ ← WebGPU运行本地AI
│ + WebGPU │
└─────────────┘3. 边缘协作
多个Node之间直接协作,不经过Gateway。
场景:
iPhone节点:"我检测到用户进入厨房"
→ 直接通知
iPad节点(在厨房):"显示食谱卡片"技术挑战:
- P2P通信协议
- 节点发现与认证
- 分布式共识
4. 社区节点商店
用户可以分享/下载Node扩展插件。
可能性:
- "我写了一个Node,可以监控我的3D打印机"
- "下载Node插件,支持新的智能家居品牌"
- "节点App Store"
安全挑战:
- 代码签名与验证
- 沙箱隔离
- 权限审计
对比分析:Clawdbot vs 其他方案
vs 纯云端AI(ChatGPT、Claude等)
| 维度 | 纯云端AI | Clawdbot节点 |
|---|---|---|
| 硬件访问 | ❌ | ✅ 完整 |
| 延迟 | 高(网络往返) | 低(本地) |
| 隐私 | 数据上传 | 数据本地 |
| 离线能力 | ❌ | ✅ 部分支持 |
| 部署难度 | 低(只需要账号) | 中(需要运行Gateway) |
vs 传统自动化(Home Assistant、OpenHAB)
| 维度 | 智能家居Hub | Clawdbot节点 |
|---|---|---|
| AI能力 | 规则引擎 | LLM自主决策 |
| 自然语言 | ❌ | ✅ 原生支持 |
| 多模态 | ❌ | ✅ 图片/语音 |
| 通用性 | 仅家居 | 全场景 |
vs iOS快捷指令/Android任务
| 维度 | 快捷指令 | Clawdbot节点 |
|---|---|---|
| 跨平台 | ❌ | ✅ |
| 智能程度 | 固定逻辑 | AI推理 |
| 复杂工作流 | 简单 | 任意复杂度 |
| 集成度 | 深度集成 | 中等 |
总结与思考
Clawdbot节点架构展示了一种新的AI Agent范式:
核心观点
- AI需要"身体":纯云端AI是被困在服务器里的"缸中之脑"。节点是它的"感官"和"四肢",让AI真正能触摸世界。
- 隐私不是阻碍,是设计前提:通过边缘计算,我们实现了"数据不动算法动"——在本地处理敏感数据,只发送摘要给云端。
- 分布式是未来:单一中心化的Gateway无法满足所有场景。多节点、多Gateway的弹性架构才是正途。
- 简单设计最美:WebSocket + JSON + 声明式能力,这些简单技术组合起来,却产生了强大的表达能力。
架构启示
如果你在设计自己的AI Agent系统,可以从Clawdbot学到:
✅ 关注点分离:大脑(Gateway)和肢体(Node)各司其职
✅ 声明式设计:节点声明能力,Gateway统一调度
✅ 安全分层:网络、认证、授权、审批、审计
✅ 渐进增强:从单机到分布式的平滑演进
✅ 边缘优先:能本地做的,绝不绕到云端
最终思考
我们正在经历AI Agent的"寒武纪大爆发"。从ChatGPT的纯对话,到能使用工具的Assistant,再到拥有"身体"的Agent——这个演进才刚刚开始。
Clawdbot节点架构,是这个演进过程中的一个重要里程碑。它证明了:AI Agent不应该只在云端"思考",也需要在边缘"行动"。
未来,当我们回望AI Agent的发展史,可能会这样划分时代:
- 前节点时代:AI被困在服务器
- 节点时代(现在):AI拥有第一代"身体"
- 泛在时代:AI嵌入一切设备,无处不在
Clawdbot的节点架构,正是通向那个泛在AI时代的一座桥梁。
参考资源
作者注:本文基于Clawdbot v1.x版本编写,架构细节可能随版本演进而变化。欢迎在 somingbai.com 上讨论交流。
标签:#分布式系统 #AI Agent #架构设计 #边缘计算 #Clawdbot