コンテンツにスキップ

AI エージェント連携

lemona.de にアシスタントは内蔵されていません。そのかわり、プロジェクトフォルダにいくつかのファイルを置き、 Claude Code などのコーディングエージェントが、動いているショーを外から操作できるようにしています。

使い方

lemona.de を起動したまま、プロジェクトフォルダでエージェントを起動します。

cd <プロジェクトフォルダ>   # まだフォルダがなければデータフォルダ
claude

そして「セル 1 に音に反応するトンネルのシェーダーを作って」のように頼みます。 エージェントが shaders/user/*.frag を書き、アプリがホットリロードし、エージェントがエラーとスナップショットを確認します。

仕組み

ファイル
AGENTS.md(と CLAUDE.md) プロジェクトの作成時・オープン時に書き出されるガイド。シェーダーの書き方、エンジンの値、パラメータ、式、全組み込みノードとポスト FX、コマンドの一覧
docs/ シェーダーレシピと式のリファレンス
agent/state.json ショーの状態: セル、ノード(パラメータ、バインディング、ポート)、接続、コンパイルエラー(行番号付き)。変更から 1 秒以内に更新
agent/commands/ ここに JSON を置くとコマンドとして実行されます
agent/results/ コマンドの結果
agent/snapshots/ スナップショットの PNG

コマンドでは、ノードの追加・接続・パラメータ・式・ワイヤーの設定、セルの選択や launch、スナップショットなどができます。 一覧は エージェントのコマンド を参照してください。

SHADER タブから頼む

SHADER タブの一番上の ASK AN AGENT に、作りたいシェーダーを言葉で書きます(例: 「キックで呼吸する万華鏡」)。

ボタン
NEW NODE 編集中のセルに GLSL ノードを作り(Out が空ならつなぎます)、エージェントにそのシェーダーを書かせます
EDIT THIS NODE 選んでいるノードのシェーダーを書き直させます。組み込みノードは、先にそのノード専用のコピーを作ります
STOP 実行中のエージェントを止めます
FIX ERROR 書かれたシェーダーがコンパイルできないとき、エラーを添えてもう一度頼みます
  • アプリは依頼を agent/requests/ に書き、エージェントのコマンドをプロジェクトフォルダで実行します。依頼文は標準入力に渡されます(コマンドに {prompt} があれば、そこに入ります)。エージェントがファイルを保存すると、ホットリロードで表示されます。
  • コマンドは、ASK AN AGENT の右のコマンド名をクリックして変えられます(データフォルダの agent.ron に保存)。環境変数 LEMONADE_AGENT があればそちらが優先されます。既定は claude -p --permission-mode acceptEdits(Claude Code。プロジェクトフォルダのファイル編集を許可)です。
  • エージェントには、環境変数 LEMONADE_PROMPT(頼んだ文)、LEMONADE_SHADER_FILE(書くファイル)、LEMONADE_NODE(ノード ID)も渡されます。自作のスクリプトもエージェントとして使えます。
  • 実行中の出力は OUTPUT で見られます。一度に動くエージェントは 1 つです。アプリを閉じると止まります。
  • アプリがモデルを直接呼ぶことはありません。API キーもアプリには入りません。

ターミナルからも同じことができます。

lemonade agent "キックで呼吸する万華鏡"          # 新しい GLSL ノード
lemonade agent --edit "もっとゆっくり"            # 選んでいるノード
lemonade agent --node 12 "パレットの色で"         # ノード 12

ターミナルから送る

lemonade send <コマンド> key=value … で、動いているアプリにコマンドを 1 つ送り、結果を表示します。

lemonade send state
lemonade send set_param node=12 param=speed value=2
lemonade send snapshot 'cell={"layer": 1, "slot": 1}'

配布版では実行ファイル名で呼びます(Windows は lemona.de.exe send …、macOS は lemona.de.app/Contents/MacOS/lemona.de send …)。 --help でオプションを表示します。