Clawdbot Architecture

深入解析 Clawdbot (Moltbot) 的内部构造:从泳道队列到语义视觉,解构现代 AI Agent 的工程实践。

SYSTEM: ONLINE
LATENCY: 12ms
SECURITY: ENFORCED
CORE_ARCHITECTURE MODULE

CORE_ARCHITECTURE

The Lane-based Gateway

Clawdbot 本质上是一个 TypeScript CLI 应用程序,而非 Web App。它作为守护进程运行在你的机器上,充当所有外部连接(Telegram, Slack 等)的网关。

核心架构采用了 "泳道" (Lane-based) 设计模式:

  • Channel Adapter: 标准化不同渠道的消息输入。
  • Gateway Server: 任务协调中心,处理并发请求。
  • Lane Queue: 默认串行执行 (Default to Serial)。每个会话分配一个独立泳道,避免了 async/await 带来的竞争条件地狱。只有明确的低风险任务才会并行处理。
TypeScriptCLISerial Queue
core
IMG_SRC:RENDER_OK
// Gateway Coordinator
class Gateway {
  // Map session ID to dedicated Serial Lane
  private lanes = new Map<string, SerialLane>();

  async handleRequest(req: Request) {
    const lane = this.lanes.get(req.sessionId) 
      || new SerialLane();
      
    // High-risk/Stateful -> Serial Lane (Queue)
    if (req.isStateful) {
      await lane.add(new Task(req)); 
    } 
    // Low-risk/Read-only -> Parallel execution
    else {
      await runParallel(new Task(req));
    }
  }
}

// Serial Lane: Prevents race conditions
class SerialLane {
  private queue: Task[] = [];
  private isRunning = false;

  async add(task: Task) {
    this.queue.push(task);
    if (!this.isRunning) this.process();
  }

  private async process() {
    this.isRunning = true;
    while (this.queue.length > 0) {
      // Execute one by one
      await this.queue.shift()?.execute();
    }
    this.isRunning = false;
  }
}
MEMORY_SYSTEM MODULE

MEMORY_SYSTEM

Hybrid Retrieval Architecture

如果没有记忆,AI 只是金鱼。Clawdbot 通过双层系统解决持久化问题:

  1. Session Transcripts (JSONL): 记录完整的会话历史,用于上下文构建。
  2. Memory Files (Markdown): 长期记忆存储在 memory/*.md 中。

混合搜索 (Hybrid Search)

结合了 Vector Search (SQLite)Keyword Search (FTS5)。搜索 "authentication bug" 既能找到语义相关的 "auth issues",也能匹配精确短语。Agent 通过标准的文件写入工具直接管理记忆,没有黑盒 API。

JSONLMarkdownSQLiteFTS5
memory
IMG_SRC:RENDER_OK
// Memory Structure
memory/
  ├── user_profile.md
  ├── project_claudia.md
  └── tech_stack_notes.md

// Search Query
SELECT * FROM memory 
WHERE vec_search(embedding, query) 
OR text_match(content, query);
COMPUTER_USE MODULE

COMPUTER_USE

Sandboxed Execution

Clawdbot 赋予 Agent 真实的计算机操作权限,但在安全上做了严格限制:

  • 执行环境: 默认为 Docker Sandbox,也可配置为直接宿主机操作。
  • Allowlist (白名单): 用户显式批准的命令(如 npm, git)。
  • Blocklist (黑名单): 默认拦截危险操作(如 rm -rf /,命令替换,重定向到系统文件)。
DockerSandboxAllowlist
// ~/.clawdbot/exec-approvals.json
{
  "allowlist": [
    { "pattern": "/usr/bin/npm", "lastUsed": 1706644800 },
    { "pattern": "/opt/homebrew/bin/git", "lastUsed": 1706644900 }
  ],
  "blocked": [
    "rm -rf /",
    "cat file > /etc/hosts"
  ]
}
SEMANTIC_VISION MODULE

SEMANTIC_VISION

Accessibility Tree over Pixels

浏览器工具并不依赖截图(Screenshot),而是使用 语义快照 (Semantic Snapshots)

它是页面 Accessibility Tree (ARIA) 的文本化表示。

IMAGE SNAPSHOT
~5MB Size
High Token Cost
SEMANTIC SNAPSHOT
<50KB Size
Structure Only

浏览网页本质上是语义理解任务,而非单纯的视觉任务。Agent 看到的是按钮、输入框、标题的结构化列表。

PlaywrightARIALow-Token
vision
IMG_SRC:RENDER_OK
- button "Sign In" [ref=1]
- textbox "Email" [ref=2]
- textbox "Password" [ref=3]
- link "Forgot password?" [ref=4]
- heading "Welcome back"