メインコンテンツまでスキップ

エージェントツール

エージェントは組み込みツールを呼び出せます。どれを有効にするか、危険なものをどう ゲートするかを制御できます。

画像生成・編集

モデルオファリングカタログ(model_offerings.jsonc)に image オファリング を1つ 追加すると、Azure OpenAI Images API による生成・編集が有効になります。作成はアプリ内の Model Settings 画面、chatwalaau models add、または手動で行えます。推奨モデルは gpt-image-2 です:

{
"id": "image",
"provider": "azure-openai",
"operations": ["image"],
"model_ref": "gpt-image-2",
"api_version": "2025-04-01-preview"
}
  • generate_image -- テキストから画像生成(サイズ・品質・形式・背景・枚数 1〜4 を 設定可能)
  • edit_image -- セッション内の既存画像をテキストで編集
  • Canvas マスクエディタ -- 生成画像の Edit をクリックし、変更する領域を塗り (ブラシ S/M/L、消しゴム、取り消し/やり直し)、プロンプトを入力するとマスク部分だけ を編集
  • 画像はインライン表示され、再読込後も保持

image オファリングが無い場合、画像ツールは単に利用不可になります(アプリは通常どおり 起動)。オファリングを追加すると有効化されます。

画像出力のカスタマイズ

モデルコントロール横の Image ボタンで、サイズ / 品質 / 形式 / 圧縮率(JPEG/WebP のみ)/ 背景 のセッション単位の既定値を設定できます。選択はチャットごとに記憶され、 次の画像生成の既定として適用されます(特定の指定が必要な場合はモデルが上書き可能)。

image オファリングの任意の image_defaults ブロックでインスタンス全体の既定値も設定 できます(ピッカーもモデルも値を与えない場合に適用)。Model Settings の Image カード に各項目の入力があります:

{
"id": "image",
"provider": "azure-openai",
"operations": ["image"],
"model_ref": "gpt-image-2",
"api_version": "2025-04-01-preview",
"image_defaults": {
"size": "auto", // auto | 1024x1024 | 1024x1536 | 1536x1024
"quality": "auto", // auto | low | medium | high
"format": "png", // png | jpeg | webp
"compression": null, // 0-100; JPEG/WebP のみ; null = API 既定
"background": "auto" // auto | transparent | opaque
}
}

画像モデルが新しい Images API プレビューを必要とする場合は、オファリングの api_version をお使いの Azure デプロイが対応するバージョンに設定してください。

天気

Open-Meteo(無料・API キー不要)による天気カードウィジェット。都市名をジオコー ディングし、現在の天気や 7 日間予報を取得します。

コーディングツール

ワークスペースディレクトリに限定したファイル操作とシェル実行:

CODING_ENABLED=true
CODING_WORKSPACE_DIR=C:\path\to\workspace
# CODING_FILE_READ_MAX_BYTES=1048576 # 既定 1 MiB

file_read は出力を CODING_FILE_READ_MAX_BYTES で上限制御します。上限や行数制限に 達すると、応答末尾に [TRUNCATED BY BYTES: ...] / [TRUNCATED BY LIMIT: ...] の マーカーが付き、offset=N でのページングをエージェントに伝えます。

ツール承認

破壊的なコーディングツールは、インラインの 承認 / 拒否 / このセッションで承認 で 一時停止します。読み取り専用ツール(file_read, file_glob, file_grep)は承認 不要です。各承認カードには ラウンド数round N / MAX)が表示されます。

# auto(既定) -> bash_execute + file_write をゲート
# always -> 読み取り専用以外のすべてをゲート
# skip -> 承認を無効化(自律実行)
TOOL_APPROVAL_MODE=auto
TOOL_APPROVAL_REQUIRE_LIST=bash_execute,file_write
TOOL_APPROVAL_TIMEOUT_SEC=300
# 1ターンで承認を求められる回数の上限(既定 33)。
# 「このセッションで承認」で解決されたラウンドはこの上限を消費しません。
TOOL_APPROVAL_MAX_ITERATIONS=33
# セッション承認分も含め全ラウンドを数える絶対上限。暴走エージェントを必ず停止します。
# TOOL_APPROVAL_MAX_ITERATIONS 以上である必要があります。
TOOL_APPROVAL_ABSOLUTE_MAX_ITERATIONS=200

TOOL_APPROVAL_MODE=skip の間、SPA は常時「Tool approval is DISABLED」バナーを表示 します。ヘッドレスのレーン(OpenAI API、chatwalaau chat CLI、DevUI)は毎回自動承認 し、承認ごとに WARNING を記録します。

このセッションで承認。 カードの 「このセッションの X 呼び出しをすべて承認」 に チェックして承認すると、そのツールはチャットの残りの間ずっと許可されます。自動承認 されたラウンドは 無料 で、TOOL_APPROVAL_MAX_ITERATIONS を消費しないため、ラウンド カウンタは凍結し、全体承認した長い実行が途中で止まらなくなります。同じツールのカードが 複数同時に表示されている場合、その 1 回の承認で 表示中の他のカード もまとめて解決 されます。Microsoft Teams も同じ挙動です(Adaptive Card にカウンタが表示され、 「Allow Session」がカスケードします)。

会話の圧縮(compaction)

長いセッションはモデル呼び出しの前にメモリ内で圧縮され(ディスク上のセッション JSON は変更されません)、コンテキスト上限で失敗せずに応答を続けます:

# none | sliding-window(既定) | selective-tool-call | tool-result
COMPACTION_STRATEGY=sliding-window
COMPACTION_KEEP_LAST_GROUPS=4
COMPACTION_PRESERVE_SYSTEM=true

Background Responses

長時間処理(例: o3/o4-mini 推論)では BG ボタン(コンテキスト表示の左)を切り替え ます。ChatInput の枠が青くなり、継続トークンがセッションに自動保存され、ページ再読込 後も再開できます。環境変数は不要です。

Background と Agent Skills は併用できません

BG が ON の間、そのターンでは Agent Skills は利用できません(skill ツールがモデルに 渡されません)。トグルのツールチップが送信前にその旨を表示します。

バックグラウンド応答はサーバー側で生成され、後から id で再開されるため、skill のツール呼び出しを 完了できません。従来この組み合わせは No tool call found for function call id call_... で 失敗していました。相互排他にすることでこの失敗自体を無くしています。function ツール・MCP ツール・web search は影響を受けません。

プロンプトテンプレート

チャット画面からプロンプトを保存・再利用(JSON ファイルとして保存):

TEMPLATES_DIR=.templates

+ メニュー -> Use template を開く、またはユーザーメッセージの FileText アイコンでテンプレート化します。Insert to Chat で入力欄に貼り付け、送信前に編集 できます。

Agent Skills

Agent Skills 仕様に従う持ち運び可能なドメイン知識パッケージ で、必要時にロードされます:

SKILLS_DIR=.skills
.skills/
my-skill/
SKILL.md # 必須: 指示 + メタデータ
scripts/ # 任意: 実行コード
references/ # 任意: ドキュメント
assets/ # 任意: テンプレート, リソース

Skills は 段階的開示(アイドル時は 1 スキルあたり約 100 トークン)でコンテキスト 消費を抑えます。

実行時にスキルを管理する

チャット入力欄のコントロール行にある Skills アイコンで管理モーダルが開き、 サーバ稼働中のままスキルを有効・無効にできます(ファイル編集も再起動も不要)。

スキル 1 つにつき SKILL.md は 1 つ

スキルフォルダは境界です。スキルのサブフォルダにさらに SKILL.md を置いても、 2 つ目のスキルとしては検出されません。スキルフォルダより下はすべてそのスキルの一部と して扱われます。別々のスキルにしたい場合は兄弟フォルダにするか、グループ 1 階層 (.skills/<group>/<skill>/SKILL.md)を使ってください。

スキルはフォルダのグループ単位で整理されます(A/B/SKILL.md はグループ A / スキル BB/SKILL.md は未分類)。グループのチェックボックスで配下スキルを一括 トグルでき、各スキルは説明を概要として表示します。

未使用スキルを無効化すると毎ターンのトークンを抑えられます。無効スキルは advertise 集合から完全に外れ、すべて無効化すると skill ツール自体も消えます。Save で確認後、 エージェント再構築の間だけ rebuilding インジケータが表示され、次のメッセージから 残したスキルだけが advertise されます。

選択は メモリのみ(再起動で全スキル再有効化)で、ディスク上のスキルファイルは 変更されません。管理エンドポイント(GET / PUT /api/skills)は認証ゲート配下で、 localhost は無設定のままです。(MCP ツール管理モーダルの Skills 版です。)

Reload(フッタ+空状態)はスキルディレクトリの SKILL.md を再読込してエージェントを 再構築します。ディスク上で追加・削除したスキルフォルダを再起動なしで反映できます。 Reload は確認のうえ、同じブロッキングインジケータを表示します。アイコンはエンドポイントへ 到達可能なら常に表示されるので、スキルが 0 件でもスキルディレクトリと Reload ボタンを備えた 空状態が開きます。ディスク上にあるがまだロードされていないスキル(前回ビルド以降に追加) は、Reload するまでトグルが無効化され「Reload で反映」のヒントが表示されます。