Ikeraq

pascalorg/editor

AIにシーンのJSONを書かせず、部屋やドアという単位で間取りを組ませる

MIT · 商用可 TypeScript ★ 24,967 (今日 +30) 今日 更新
GitHub で見る pascalorg/editor
GitHub の説明(原文)
Open-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.

どういうものか

Pascal Editor は、ブラウザで動く建築向けの3Dエディタ。React Three Fiber と WebGPU で描画し、手元で完結する(ローカルファースト)。ブラウザでも CLI でも動き、MCP サーバ経由で AI を繋げる。目を引くのは、その AI の入口の作り方だ。生のシーンデータを渡して好きに組み替えさせるのではなく、エディタの画面が使うのと同じ変更操作を、そのまま MCP の道具として開けている(壁を作る、什器を置く、開口を空ける、取り消す、など)。

同梱スキルは冒頭で「Pascal をシーンの正とみなす。手書きのシーン JSON や見た目の当て推量より、Pascal の道具と検証結果を優先する」と指示している。作るときに使うのは create_room、add_door、place_item のような名前の付いた操作で、位置は引数として渡す(部屋なら多角形、什器なら座標、ドアなら壁のどのあたりか)。単位はメートルで、床の平面が X と Z、高さが Y。一方、ノードを直に書き換える apply_patch については、同梱スキルが「名前の付いた道具でその編集を表せず、かつ対象のスキーマか同じ種類の既存ノードを先に見たときだけ」と後ろに回している。ID も当てずっぽうに指さず、find_nodes などで対象を特定してから渡す決まりだ。編集のあとは validate_scene と verify_scene を通し、保存して、Pascal が返した URL を渡すところまで手順に含まれている。配置が重なっていないかは check_collisions という別の照会で確かめる。スキル側は「HTTP が成功しても、エラーなしの応答が返っても、それだけでは頼んだ結果ができた証拠にはならない」と念を押している。

その下のデータは、見かけ上「敷地 → 建物 → 階 → 壁・床・天井・ゾーンなど」の階層だが、実体は入れ子の木ではなく平らな辞書になっている。各ノードは wall_abc123 のように種類が分かる ID を持ち、つながりは parentId と children で表す。描画は、変わったところだけ作り直す方式。ストアが書き換わるとそのノードに印が付き、壁・床・什器といった種類ごとの処理が毎フレーム、印の付いたノードだけ形を作り直す。什器は壁・天井・床(床の高さを見て)に取り付く。状態は3つのストアに分かれ(シーンの中身、見え方、道具の状態)、取り消しとやり直しも入っている。シーンは IndexedDB に保存され、CLI で動かした場合はプロジェクトが手元の ~/.pascal/data/pascal.db に置かれる。

JSONを直に書かせない。名前の付いた操作で頼む AIが呼ぶ道具 (名前の付いた操作) create_room add_door place_item ※ 位置は引数で渡す(メートル) Pascal 側の道具 (呼ぶのは AI) ノードを組み立てる 検証してから保存する 重なりは check_collisions で調べる ※ 成功応答は結果の証拠にならない 返ってくるもの (編集できるシーン) wall_abc123 など 変わったノードのID editorUrl ノードを直に書くのは、名前の付いた操作で表せないときだけ
AIが渡すのは「部屋」「ドア」という単位のほう。生のノードを組み替えるのは、それで表せないときの逃げ道として後ろに置かれている。

どんなときに使うか

頼んだ間取りが、本当にその形になったのか確かめたいとき

編集して、検証を通して、保存して、返ってきた記録を渡す。ここまでが手順として決まっている。スキル自身が「応答が成功しただけでは、頼んだ結果ができた証拠にならない」と書いているので、できたと言われたものを、保存の記録で確かめる流れに乗せられる。必要なら、重なりを調べる照会も別にかけられる。

図面を外に上げずに、AIと一緒に触りたいとき

繋ぎ先は手元とホスト版の2つ。手元のコネクタは、README によればアカウントも APIキーも要らず、プロジェクトが自動でアップロードされることもない(ホスト版は Pascal のアカウントに置いたプロジェクトを触る入口で、キーを空にすれば手元だけで動く)。顧客の物件のように外部サービスに置きたくない図面を扱う場合に、選択肢になる。

注意点

MCP 経由だけでは、形が作られない部分がある。 壁の取り合い、床の三角形分割、開口の抜き、屋根や階段の生成といった処理はエディタ側(React の描画ループ)で動くため、ブラウザを持たない MCP サーバ単体では作り直されない。MCP パッケージの README は「ノードのデータはすべて操作できる」としつつ、描画された形が必要なら閲覧用パッケージをブラウザで動かすよう案内している。GLB の書き出しも、この理由で未実装のまま返る。

単体の HTTP ランタイムは、同時に繋いだ相手とシーンを共有する。 README は、手元の CLI サービスに繋ぐエージェントは1つにするよう求めていて、独立した作業を並行させるなら PASCAL_HOME とプロセスを分けるよう書いている。

リポジトリにある機能が、入れた版にあるとは限らない。 スキルは使う前に MCP の道具の定義を確かめてから動く設計で、README も「このリポジトリにある機能が、古い導入版やホスト版には無いことがある」と断っている。手元の版で何が使えるかは、繋いでから確かめることになる。

動かす前に環境を確かめたほうがいい。 README が挙げているのは Node.js 22.13 以上まで。描画に WebGPU を使う以上ブラウザ側にも条件が付くはずだが、対応環境の一覧は書かれていない。

同梱スキルは2つ。pascal-3d が上に書いた編集の手順で、furniture-fit は家具の占有面積が収まるかを根拠つきで見るもの。後者については、高さ・扉の開閉・搬入経路までは判断したと言わない、と README が断っている。

ライセンスは MIT。

開発の様子

1.0 年
公開してからの期間。2025-10-17 が最初のコミットです
14 回
リリースの回数です
41 人
開発に参加した人数です
0 日前
最後のコミットです
58 件
未解決の Issue とプルリクエストの合計です(GitHub はこの2つを同じ数に含めます)

ほかの候補

paperclipai/paperclip
AIエージェントを「会社」として組織し、目標と予算で動かす
DeusData/codebase-memory-mcp
コードを先に関係図にしておき、AIが何十回も読みに行く手間を省く
melgarafael/DeskcommCRM
チャットで売る商売の一式を、月額のサービスから自分のサーバーへ移す
X で共有 この記事がよかったら

この記事の更新日は 2026-09-13 です。 内容は公開されている README と GitHub のデータに基づいています。 数値は GitHub から取得したもの、警告は判定の基準にある条件での自動判定です。事実誤認を見つけた場合はお知らせください。