Clawdbotアーキテクチャ

Clawdbot(Moltbot)の内部への深掘り:レーンキューからセマンティックビジョンまで、現代のAIエージェントエンジニアリングのベストプラクティスを解体します。

システム: オンライン
遅延: 12ms
セキュリティ: 強制
コアアーキテクチャモジュール

コアアーキテクチャ

レーンベースのゲートウェイ

Clawdbotは基本的にTypeScript CLIアプリケーションであり、Webアプリではありません。デーモンとしてマシン上で実行され、すべての外部接続(Telegram、Slackなど)のゲートウェイとして機能します。

コアアーキテクチャは「レーンベース」のデザインパターンを使用しています:

  • チャンネルアダプタ: 異なるチャンネルからのメッセージ入力を標準化します。
  • ゲートウェイサーバー: 同時リクエストを処理するタスク調整センター。
  • レーンキュー: デフォルトは直列(シリアル)。各セッションに専用のレーンが割り当てられ、非同期/待機の競合状態の地獄を回避します。明示的に低リスクなタスクのみが並列で処理されます。
TypeScriptCLISerial Queue
core
画像ソース:レンダリング完了
// 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;
  }
}
メモリシステムモジュール

メモリシステム

ハイブリッド検索アーキテクチャ

メモリがなければ、AIは金魚の記憶に過ぎません。Clawdbotはデュアルレイヤーシステムで永続性を解決します:

  1. セッションのトランスクリプト (JSONL): コンテキストの構築のため、完全なセッション履歴を記録します。
  2. メモリファイル (Markdown): memory/*.mdに保存される長期メモリ。

ハイブリッド検索

ベクトル検索 (SQLite)キーワード検索 (FTS5)を組み合わせます。「authentication bug」を検索すると、意味的に関連する「auth issues」が見つかり、正確なフレーズとも一致します。エージェントはブラックボックスのAPIを使わず、標準のファイル書き込みツールを介して直接メモリを管理します。

JSONLMarkdownSQLiteFTS5
memory
画像ソース:レンダリング完了
// 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);
コンピュータ使用モジュール

コンピュータ使用

サンドボックス化された実行

Clawdbotはエージェントに実際のコンピュータ運用権限を与えますが、厳格なセキュリティ制限があります:

  • 実行環境: デフォルトではDockerサンドボックス。直接ホストでの操作にも設定可能。
  • 許可リスト (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"
  ]
}
セマンティックビジョンモジュール

セマンティックビジョン

ピクセル上のアクセシビリティツリー

ブラウザツールはスクリーンショットに頼るのではなく、セマンティックスナップショットを使用します。

これはページのアクセシビリティツリー (ARIA)のテキスト表現です。

画像スナップショット
サイズ 約5MB
高いトークンコスト
セマンティックスナップショット
サイズ <50KB
構造のみ

ウェブの閲覧は基本的にはセマンティックな理解のタスクであり、単なる視覚的なタスクではありません。エージェントはボタン、入力、見出しの構造化されたリストを見るのです。

PlaywrightARIALow-Token
vision
画像ソース:レンダリング完了
- button "Sign In" [ref=1]
- textbox "Email" [ref=2]
- textbox "Password" [ref=3]
- link "Forgot password?" [ref=4]
- heading "Welcome back"