ClawdBot 架构解析:它到底是如何工作的
原文:Everyone talks about ClawdBot, but here's how it works 作者:ℏεsam (@Hesamation)
大家都在谈论 ClawdBot,但它到底是如何工作的呢?
ClawdBot 在技术上是什么?
ClawdBot 是一个 TypeScript CLI 应用程序。其核心是通过交互式 shell 暴露 Claude 的语言能力,配合一套工具让模型能够读写你的系统。
架构
Channel Adapter(通道适配器) – 接收来自 Telegram、WhatsApp、CLI 等的输入,将消息标准化为内部格式。
Gateway Server(网关服务器) – 中央路由器。使用 lanes(基于 key 的队列)来序列化每个用户/会话的命令。
Agent Runner(代理运行器) – 执行实际循环:提示词 → Claude → 工具使用 → 重复直到完成。
LLM API Call(LLM API 调用) – 网关使用系统提示词和工具调用 Claude 的 Messages API。
Agentic Loop(代理循环) – 如果响应包含 tool_use,运行器执行它,附加结果,然后循环。
Response Path(响应路径) – 完成后,最终回复通过 Gateway → Adapter → 用户返回。
ClawdBot 如何记忆
会话记录 – 每次对话都以 JSONL 格式持久化保存。允许恢复和摘要。
记忆文件 – 长期记忆以 markdown 格式存储在 ~/.clawdbot/memory/。通过混合搜索(向量 + 关键词)索引,底层使用 SQLite 的 FTS5。
ClawdBot 的计算机使用能力
这里开始变得有趣:
exec – 运行 shell 命令。可选通过 macOS Seatbelt 或 Linux 命名空间进行沙盒隔离。
文件系统 – 读/写/glob/grep。遵守白名单和黑名单模式。
浏览器 – 基于 Playwright。不使用视觉截图,而是捕获语义快照(经过裁剪的 ARIA 树)。
进程管理 – 可以启动后台任务、终止作业或查询状态。
安全性
命令在受限环境中运行,除非明确允许。你可以定义一个模式白名单。未识别的命令会提示用户批准或被阻止。
浏览器语义快照
为什么不用截图?语义快照的优势:
- 更小(KB vs MB)
- 结构化(每个元素都有类似 DOM 的引用)
- 可操作(模型可以通过引用发出点击/输入/滚动指令)
- 模型解析更快
快照是一个无障碍树:角色、名称、状态。比原始 HTML 更清晰,比像素更好。
这就是 ClawdBot 的内部原理。有问题吗?