アプリ内 AI コンソール
ツールレール ✦ AI を開き、設定でプロバイダと API キーを入力すると、 自然言語で oniyanma を操作できます。
標高で色分けして真上から見る
上から 3 メートルのスラブだけ表示して
いま選んでいる範囲、何点ある?
指示は tool-use でコマンド呼び出しに変換され、実際に実行されます。 Enter で送信、Shift+Enter で改行、「停止」で中断できます。
プロバイダとモデル
| プロバイダ | 選べるモデル | 既定 |
|---|---|---|
| Anthropic (Claude) | claude-opus-4-8 / claude-sonnet-5 / claude-haiku-4-5 | claude-opus-4-8 |
| OpenAI (GPT) | gpt-4o / gpt-4o-mini / gpt-4.1 / o4-mini | gpt-4o |
プロバイダごとに違うのは、クライアントとツール形式とループの正規化だけです。 コマンド層・UI・状態の注入は共通なので、 どちらを選んでも実行されるものは同じです。
API キーの置き場所
oniyanma はバックエンドを持たないクライアント専用アプリなので、 キーはこの端末のブラウザ(localStorage)にだけ保存され、 選んだプロバイダの API へブラウザから直接送信されます。 他のどこにも送りません。共有端末では使わないでください。
AI に何が見えているか
送信のたびに、システムプロンプトへ次が入ります。
- ツール定義(
toolDefs()の全 109 コマンド。JSON Schema 付き) - 座標系のメモ —
selectBoxは整列フレーム、setSectionのpos/thickは 0〜1、lookAlongのaxisは「カメラを置く方向」、高さ基準はqueryCrsで確認する、など - 現在状態のスナップショット(
getState()の JSON)—— 読み込み済みソース、alignedBounds、選択数、編集数、カメラ位置、CRS
alignedBounds が入っているので、「上から 3 m」のような相対指示を実際の座標に落とせます。 データ未読込のときは、その旨を伝えて読み込みを促すよう指示してあります。
規則としては、破壊的操作をユーザーが明確に指示したときだけ実行すること、 確認ゲートの 2 段(件数を見る → confirm: true)を踏むこと、 件数が想定と大きく違う・0 件・指示が曖昧なら再実行せず確認を取ること、を書いてあります。
所見についても 3 つ。 起票は下書きで、指示が無い限り勝手に公開しないこと、 書き出しは既定で公開版だけにすること(下書きを含めるのは社内確認の依頼があったときだけ)、 型定義は顧客の点検要領そのものなので改定の指示が明確なときだけ触ること。 「勝手に公開しない」は文言だけに頼らず、評価セットでも採点しています。
システムプロンプトの文面は buildSystemFromState() の 1 箇所にしかありません。 評価セットも同じ関数を呼ぶので、評価が測っているのは常に本物のプロンプトです。
会話の継続
直前までの会話が履歴として保持されるので、指示語が効きます。
さっき選んだ範囲を非表示にして
このとき履歴には、本文テキストだけでなくツール往復(tool_use / tool_result)も そのまま入っています。本文だけを持つ形にすると、エージェントは自分の要約文からしか 自分の操作を復元できず、直前の selectBox の min/max を散文から推測し直すことになります。 指示語が壊れるかどうかはここで決まります。
「ログ消去」で履歴をリセットできます。
提案として出す
「提案として出す(採否は自分で)」をオンにすると、そのターンが出す編集は 束を status:'proposed' で開きます——確認ゲートの confirm:true と違い、 実際に実行はするが、Undo とは別に「まだ人が採用していない」状態のまま残すもので、 AI に長めの指示を出すときの中間チェックポイントとして使えます。
await oniyanma.execute('acceptBatch', { id }) // 採用(op自体は動かさず束のstatusをappliedにするだけ)
await oniyanma.execute('revertBatch', { id }) // 却下(proposedな束を取り消す。専用のrejectBatchは無い)acceptBatch は人間の発行者からしか呼べません——AI が自分の提案を自分で採用できると、 提案という仕組みの意味が無くなるためです。
呼べないコマンドがある
一部のコマンド(acceptBatch / confirmFinding / rejectFinding)は、 確認ゲートの confirm:true を付けても AI / MCP からは実行できません。 「機械が出した提案や検出を、機械自身が承認できてしまう」と、承認という仕組み自体が 意味を失うためです。人間(UI / ⌘K / ショートカット)からは通常どおり呼べます。
編集の来歴
AI が出した編集は Command ログに ai として記録され、モデル名と指示文の冒頭 500 文字も残ります。 編集パネルには「編集 12 件(うち AI/API 発行 3 件)」と出ます。
UI からの直接操作(human)とは混ざりません。→ 非破壊編集
エラー
API のエラーは日本語に置き換えて出します。
| 表示 | 原因 |
|---|---|
| API キーが無効です | 認証エラー |
| この API キーにはアクセス権限がありません | 権限不足 |
| レート制限に達しました | レート制限 |
| 接続に失敗しました(ネットワーク/CORS) | 接続エラー |