
2026/09/27 0:56
Drawgent:ライブ Excalidraw キャンバス上でのコーディングエージェント
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Drawgent は、ローカル AI エージェント(Claude Code、Codex、または opencode)をライブ描画キャンバスに接続するための単一の Rust バイナリとして機能することで、ソフトウェア開発を革新します。これは Anthropic Computer Protocol (ACP) を介して実現されます。視覚的なコード生成を効率化するため、ユーザーは「AGENT:」といった直接の命令を発行したり、Excalidraw インターフェース内でのレーザーゾーンを利用して特定のエディットを行うことができます。本システムは、シーンデータの取得やスクリーンショットの取得、要素または Mermaid ダイアグラムの操作、および excalidraw.com のパブリック暗号化ルームとの相互作用など、包括的な機能をサポートしています。セットアップには Node.js 18 以上と TOML ファイルによる設定が必要で、カスタムクローン URL を持つセルフホストインスタンスから、Chromium サーバーとは別途エージェントを実行する Docker セットアップまで、柔軟なデプロイオプションを支援します。また、Drawgent はヘルスチェックやシーン管理のために REST API および WebSocket API を公開しており、外部接続を必要とせず、高度な AI 補助を直接ビジュアルワークフローに統合するチーム向けに堅牢で効率的なツールとなっています。
本文
drawgent: ライブ Excalidraw キャンバス上のコーディングエージェント
drawgent は、ユーザー自身の Claude Code、Codex、または opencode を Excalidraw ホワイトボードに接続するツールです。チャットパネルでダイアグラム作成を依頼するか、変更したい図の部分に指示を入れることで、エージェントがキャンバスを確認し、ライブで編集して結果をチェックします。
1. フィードの構成
フィードに含めたいアクティビティの種類を選択してください:
- イシュー (Issues)
- プルリクエスト (Pull Requests)
- コミット (Commits)
- タグ (Tags)
2. リポジトリのクローン
パーマリンクを使用してリポジトリをクローンします。
クローン URL
- HTTPS:
https://tangled.org/yanndegat.tngl.sh/drawgent https://tangled.org/did:plc:3zklierfkckthy6sodbm4af3 - SSH:
git@tangled.org:yanndegat.tngl.sh/drawgent git@tangled.org:did:plc:3zklierfkckthy6sodbm4af3
注意: 自己ホストされた Knots の場合、クローン URL は環境設定に応じて異なる場合があります。
ダウンロードオプション
アーカイブをダウンロードtar.gz
アーカイブをダウンロード.zip
3. コミットと機能説明
Excalidraw エディタは、レーザージェスチャー(
onPointerUpdate)を記録し、それを customData.drawgentZone というタグが付けられたロックされた赤いフリードローなトレースとして保持します。
- チャットパネル: カバーされた要素をリストしたチップと共にフォーカスが付き、次のメッセージにゾーンが含まれて送信されます。
- サーバー処理: ゾーン範囲とカバーされた要素(最もカバーされているものが多い順)をプロンプトに追加します。
- トレースの削除: ターン終了時(管理セッションの場合)またはライブ接続セッションがアイドル状態になったときに削除されます。
- get_scene: テーブルタイプ "zone" として報告します。
コマンドラインツール
単一の Rust バイナリで、シーンを保持しながらユーザー自身のエージェントに接続します:
: インストールされた CLI とログインを確認し、ACP ブリッジを準備し、ヘッドレス Chrome を検索/インストールし、設定ファイルを作成します。setup <agent>
: 現在のワークスペースで新しいエージェントセッションを開始します。up
: 実行中のセッション(ACP 経由の Claude フォーク、ライブ opencode、up --attach [id]
)をリストします。codex queue
主な機能:
- チャットパネル、AGENTS キャンバスノート、ビジョン機能を備えた MCP キャンバスツール。
- Excalidraw.com ルームクライアント(AES-GCM, socket.io, Firestore)。
- Musl 静的ビルド付きの Makefile、Nix デブシェル、サーバー専用 Docker イメージ。
4. README.md: クイックスタート
前提条件:
、claude
、またはcodex
のいずれかがインストールされ、ログイン済みである必要があります。opencode- Claude および Codex のブリッジには Node.js ≥ 18 (npm) も必要です。
基本コマンド
以下のコマンドを実行してください:
# エージェントごとに一度実行:claude | codex | opencode drawgent setup claude cd ~/my-repo # 新しいエージェントセッション + ブラウザ上のキャンバスを開始 drawgent up # または: 実行中のセッションのいずれかを選択して接続 drawgent up --attach
セットアップ (drawgent setup
)
drawgent setup一度にすべてを確認し、欠落している場合その場で修正方法を提示します。以下を構築・確認します:
- エージェント CLI: PATH 上の
/claude
/codex
。opencode - ログイン:
,claude auth status
, またはcodex login status
で確認可能。opencode auth list - ACP ブリッジ:
: 自身で ACP を使用(opencode
)。opencode acp- Claude Code および Codex: 公式の ACP アダプターを使用(約 60MB のアダプターを
にインストール)。~/.cache/drawgent/adapters
- レンダラー用のヘッドレス Chrome:
- Chrome/Chromium を持っている場合はそれを使用します。
- 持っていない場合は提案された方法でダウンロード(テスト用 Chrome, 約 120 MB)またはパッケージマネージャー (
,apt
など) を使用してインストールします。brew
非対話モードでの Chrome 指定:
--chrome download | system | /path/to/chrome
注意:
は、そのエージェントのセットアップが成功するか、記録された情報が消滅しない限り起動しません。drawgent up
セッション接続 (drawgent up
)
drawgent up現在のディレクトリ(ワークスペース)で動作します:
- エディターと API を
に起動(使用中の次の自由なポートを使用)。127.0.0.1:7300 - ワークスペース内で ACP 経由のエージェントの新しいセッションを開始。
- ブラウザを開きます(ヘッドレスボックスの場合、代わりに
コマンドを出力します)。ssh -L
シーンデータは
.drawgent/scene.json に保持され、git で自動的に無視されます。
セッション接続 (drawgent up --attach [id]
)
drawgent up --attach [id]既に実行中のセッションにキャンバスを接続します。ID を指定しない場合は、見つかったセッション(現在のディレクトリから最初)をリストし、選択できます:
| エージェント | 発見と接続の詳細 |
|---|---|
| Claude Code | 。: ACP を通じて drawgent でドライブされる、完全な会話を保持する新しいセッション。端末セッションは変更されません。 |
| opencode | ローカルでリスニングするサーバー()。: メッセージは実行中のセッションに送信されます。drawgent はそのサーバーにランタイムで MCP ツールを追加。TUI で入力した返信やツール呼び出しがチャットパネルに反映されます。 |
| Codex | 内のセッション。: 。返信はセッションのロールアウトファイルから反映されます。セッションは drawgent MCP の登録が必要です。 |
5. キャンバスの使用法
チャットパネル(右側)
- リクエストを送信し、返信とツール呼び出しがストリーミングされるのを確認します。
- 許可プロンプトを承認し、Stop を押してターンをキャンセルできます。
キャンバス上での操作
- 指示入力:
で始まるテキストを書き込みます。AGENT: next - 図形描画: 図形に記述するか、ノートから図形へ矢印を描画します。
- 発火処理: 入力停止後約 2.5 秒後に位置、指す対象、および近くの要素と共に発火し、エージェントはそれを緑色の
ノートに解決します。DONE: …
レーザーゾーン (Laser Zone)
- Excalidraw のレーザー(
)を選択し、図の一部を円形か描画で選択します。K - 処理:
- キャンバス上に赤い輪郭が残ります。
- チャットパネルが開き、ゾーン下の要素がリストされます。
- 次のメッセージにはゾーン情報が含まれてエージェントへ送信されます。
- エージェントが完了するとトレースが消えます。
- ルール: 4 秒以内のストロークは一つのゾーンを形成します(× を押して破棄)。
excalidraw.com ルーム
共有キャンバスでの協働が可能です:
drawgent up --room 'https://excalidraw.com/#room=<id>,<key>'- drawgent は「🤖 Agent」としてルームに参加し、カーソルは編集に従って移動します。
- 人間は excalidraw.com 上で作業できます(
ノートがエージェントに届き、編集もライブで表示されます)。AGENT: - セキュリティ: トラフィックはルームキーでエンドツーエンド暗号化されています。
6. その他のコマンドと機能
drawgent mcp
drawgent mcp- キャンバスツールの stdio MCP サーバーです。
- エージェントはそれを起動し、自動的に実行中の
を発見します。drawgent up
drawgent serve
drawgent serve- 明示的なエージェント(セットアップ済みまたは任意の ACP エージェント)を備えた低レベルサーバーです。
- スクリプトおよびコンテナ用として使用します。
オプションパラメータ (up
/ serve
)
upserve- ネットワーク:
,--port--room - 認証:
(API ベアラー + ?token= in the URL)--token - 権限:
(デフォルト--permissions canvas|ask|all
: デrawing ツールは自動承認)canvas - データ管理:
,--data--settle-ms
Docker での実行
エージェントは決してバインドされず、常に独自のセットアップで動作します:
docker compose up --build
キャンバスサーバー(drawgent + Chromium)を実行し、共有キャンバスやサーバー上のルームブリッジをホストするために使用できます。
7. ビルドとテスト
ソースからのビルド
npm ci && npm run build # エディターおよびレンダラーページ -> dist/ cargo install --path . # または: cargo build --release
テスト
(分数指数、ルーム暗号/フレーミング)cargo test
(チャットターン + AGENT: ノートに対する実行中の drawgent)node scripts/smoke.mjs [url]
(実ブラウザでのテスト)node scripts/e2e-browser.mjs [url]
(ルーム間の双方向通信)node scripts/room-e2e.mjs
(レーザーゾーン機能のテスト)node scripts/laser-e2e.mjs
8. API エンドポイント
主な REST API と WebSocket です:
GET /api/healthGET /api/sceneGET /api/screenshot?ids=&padding=&max=POST|PATCH|DELETE /api/elementsPOST /api/mermaidPOST /api/clearGET /api/instructionsPOST /api/instructions/{id}/resolvePOST /api/statusPOST /api/chat {agent?, text}- WS
: ブラウザ同期 + チャットイベント/ws
9. レイアウト構造
src/ (Rust) の主要モジュール:
: CLI エントリーポイント。main.rs
,setup.rs
,config.rs
: セットアップ処理、設定、レンダラーインストール。chrome.rs
: セッション発見と選択ロジック。attach.rs
+agents.rs
: ACP ドライバー(新規/フォークセッション)。acp.rs
: ライブ opencode / Codex ドライバー。live.rs
: ルーティング、ノート、チャットログ管理。hub.rs
: ストアと編集操作処理。scene.rs
: CDP (Chrome DevTools Protocol) 経由の Chrome コントロール。renderer.rs
: MCP サーバー実装。mcp.rs
: Excalidraw.com クライアント接続。room.rs
,fractional.rs
,geometry.rs
: 幾何学計算などのヘルパー。el.rs
web/: エディター(
main.jsx, chat.jsx, laser.js)およびレンダラーページ(render.jsx)。
10. リミットと注意
- レンダラー依存: Chrome の必要があり、ネイティブレンダラーは計画済みですが未実装です。
- Claude attach: フォーク方式のため、公開方法としての実行中の端末セッション注入は現時点でサポートされていません。
- Codex: ライブ接続の実装はありますが、ログイン済みの Codex に対するテストはまだ行われていません。
- 同期制限: ワークスペースにつき一つのシーンのみ。画像やファイルの同期は行われません。