コードを書く前に、プランに形を与える。

Schematic Planner は、文章で書いたプランを、あなたと AI エージェントの両方が編集できるグラフに変えます。そして最後には、手元に残せる Markdown ファイルと Obsidian Canvas として返します。

DatabasedatabaseAuthauthPlan graphplan-graphCanvascanvasMCP surfacemcpExportexport

解決する問題

コーディングエージェントはプランを書くのが得意です。苦手なのは、そのプランをぶらさずに保っておくことです。機能を頼めばもっともらしいタスクリストが出てきますが、三つメッセージを送るころには半分が忘れられ、次の実行ではアーキテクチャがいつの間にか作り直されています。プランはどこにも置かれていなかったのです。会話の中にあっただけで、その会話は先へ進んでしまいました。

あなたとエージェントの両方から見える場所にプランを置けば、そうはならなくなります。

使い方の流れ

  1. エージェントがプランを書く

    書き方は自由です。文章でも、タスクリストでも、設計メモでも構いません。ここはすでにうまくいっている部分です。

  2. 一度の呼び出しで図になる

    エージェントは構造を送り、サーバーがすべてのノードを配置します。エージェントが宣言するのは何が何に依存するかだけで、座標は決して指定しません。位置を求められたモデルは、誰も読みたくない図を描くからです。

  3. 動かしたいものは自分で動かす

    ドラッグしたノードは固定され、それ以降は自動レイアウトの対象外になります。それ以外のものは、その周りに配置し直されます。

  4. ファイルは手元に持ち帰れる

    包含関係はディレクトリに、依存の順序はファイル名の番号になります。フォルダをソースコードの隣にコミットしておけば、エージェントは毎回それを読みます。

エージェントから見えるもの

URL とキーの先に、ツールが 21 個あります。インストールするものも、サーバーに合わせて更新し続けるものもありません。一度の呼び出しでプランを開き、そこに描くものはすべて、バッチでアトミックに適用されるただ一つの入り口を通ります。だから 40 個のノードが一つずつ這い出てくるのではなく、キャンバスに一度に現れます。

ノードは見ればそれとわかる識別子で指定するので、再試行しても二度目は何も変わりません。

ツールリファレンス
create_plan({ title: "Billing rework" })

apply_ops({
  planId: "…",
  ops: [
    { op: "upsert_node",
      node: { slug: "pricing-rules", title: "Pricing rules" } },
    { op: "upsert_node",
      node: { slug: "render-pdf", title: "Render PDF" } },
    { op: "upsert_edge",
      edge: { from: "pricing-rules", to: "render-pdf" } }
  ]
})

出力されるもの

グラフをフロントマターに収めたプレーンな Markdown の zip と、レイアウトをそのまま保って Obsidian で開ける .canvas ファイルです。形式のどこをとっても、読むのにこのサービスは必要ありません。また、同じプランは常にバイト単位で同一の内容にエクスポートされます。

plan-export.zip
├── README.md
├── 01-foundation/
│   ├── 01-ledger-schema.md
│   └── 02-pricing-rules.md
├── 02-invoicing/
│   └── 01-render-pdf.md
├── plan.canvas
└── plan.json

セルフホストする

スタック全体が AGPL-3.0 で、必要なのは Node と Postgres だけです。独自の認証サービスも、マネージドサービス専用の依存もなく、設定はすべて環境変数で行います。ソースコードをネットワークの外に出せない環境でも、プランが外に出ることはありません。

現在の状況

プレアルファ版です。これははっきり書いておきます。プランの作成、図の描画、リアルタイムの共同編集、エージェント向けのインターフェース、共有、エクスポート、そしてワークスペースとアカウントの管理は、すべて動作します。メールは一切送信されないため、招待は自分で相手に渡すリンクです。ソーシャルログインは実装されていません。プランはエクスポートしておいてください。エクスポートはそのためにあります。