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 でオプションを表示します。