maestro/docs/configuration.ja.md
oss-sync d061ad08d8
Some checks failed
CI / build-and-test (push) Has been cancelled
sync: update from private repo (e62f5c7)
2026-06-11 01:52:48 +00:00

232 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[English](configuration.md) | 日本語
# Configuration Reference
MAESTRO は単一の `config.yaml``config.yaml.example` をコピーして作成)で設定する。
- **YAML キーは snake_case**`max_concurrency`)、コード内は camelCase。`src/config.ts``transformKeys` が変換する。
- 一部は**環境変数で上書き**できる([末尾参照](#environment-variable-overrides))。
- `config_version: 2` が現行スキーマ。
> 値の一次ソースは `config.yaml.example`(コメント付き)と `src/config.ts`。本リファレンスは各項目の意味をまとめたもの。
---
## `llm` — ジョブ実行時の LLM 接続
| キー | 既定 | 意味 |
|------|------|------|
| `timeout_minutes` | 10 | 1 リクエスト全体の上限(分)。 |
| `retry.max_attempts` | 3 | 429/5xx/一時接続失敗時の再試行回数。 |
| `retry.backoff_ms` | [2000,5000,15000] | 各再試行の待機ms。 |
| `retry.retryable_status` | [429,500,502,503,504] | 再試行対象の HTTP ステータス。 |
### `llm.workers[]` — ジョブ実行に使う接続先(必須)
| キー | 意味 |
|------|------|
| `id` | ワーカー識別子。 |
| `connection_type` | `direct`Ollama/vLLM 等の OpenAI 互換 backend に直結)/ `aao_gateway`(別 Gateway 経由、Gateway Key 必須)。 |
| `endpoint` | OpenAI 互換 API のベース URL`http://localhost:11434/v1`)。 |
| `model` | 使用モデル名(ワーカーごとに明示。`default_model` は廃止)。 |
| `api_key` | `aao_gateway` 時の virtual key 等(任意)。 |
| `roles` | 用途フィルタ: `auto`/`fast`/`quality`/`title`/`reflection` 等。`[title]` のみ=タイトル生成専用。 |
| `max_concurrency` | このワーカーの並列度。 |
| `vlm` | `true` で画像入力対応ReadImage は VLM ワーカーを優先)。 |
| `enabled` | 有効/無効。 |
### `llm.metrics` — Prometheus exporterworker 側)
| キー | 既定 | 意味 |
|------|------|------|
| `enabled` | true | `/metrics`bridge HTTP, 既定 `PORT=9876`)に mount。 |
| `prefix` | `aao_worker` | メトリクス名 prefix。 |
| `bearer_token` | — | 設定すると Bearer 認証必須(`env:NAME` 形式可)。 |
| `allowed_hosts` | localhost のみ | 許可元 IP。本番は bearer か allowlist を必ず設定。 |
---
## `gateway` — LLM Gateway サーバー(任意)
MAESTRO 自身を OpenAI 互換の LLM Gateway として公開する(仮想キー・予算・メトリクス付き、複数 GPU/チーム共有向け)。**env 変数や接続種別が `AAO_*` / `aao_gateway` という歴史的な接頭辞を使う点に注意AAO = この Gateway 機能の旧称)。** 詳細は [aao-gateway-overview.md](aao-gateway-overview.md)。
| キー | 既定 | 意味 |
|------|------|------|
| `enabled` | false | true で同 process gateway が起動hot reload 対応)。 |
| `listen_port` | 4000 | separate-deploy 時のみ。 |
| `request_timeout_sec` | 600 | 1 リクエスト全体streaming 込み)。 |
| `upstream_timeout_sec` | 30 | 各 upstream の TTFB 上限。 |
| `shutdown_graceful_sec` | 30 | SIGTERM 後の SSE drain 上限。 |
| `backends[]` | — | `id`/`endpoint`/`model`/`max_slots`/`api_key`。model 厳密一致で routing。 |
| `virtual_keys[]` | — | bootstrap/backup 用(`key`/`team`/`allowed_models`/`tokens_budget`/`rate_limit_rpm`)。新規発行は admin API 推奨。 |
| `metrics` | enabled | `prefix: aao_gateway`、team/key_prefix/backend ラベル。auth 必須運用。 |
Virtual Key の発行・rotation は admin REST API`POST /api/admin/gateway/keys`)または UISettings → LLM → Gateway Serverで行う。
---
## `storage` — パス・容量
| キー | 既定 | 意味 |
|------|------|------|
| `worktree_dir` | ./data/workspaces | ジョブ作業ディレクトリのベース。 |
| `custom_pieces_dir` | — | リポジトリ内 `pieces/` に加えて読む Piece dir任意。 |
| `user_folder_root` | ./data/users | `{root}/{userId}/` に AGENTS.md/scripts/notes 等を保存。 |
| `task_upload_max_size_mb` | 50 | タスク/コメント body 上限base64 込み。範囲 11000。 |
| `trash_retention_days` | 30 | `trash/` の自動 sweep。0 で都度全削除。 |
---
## Execution — 並列度・上限・再試行
| キー | 既定 | 意味 |
|------|------|------|
| `concurrency` | 4 | 全ワーカー合算の最大並列ジョブ数env `CONCURRENCY`)。 |
| `max_movements` | 200 | 1 ジョブ内の最大 movement 数loop 防止)。 |
| `retry.max_attempts` | 3 | ジョブ失敗時の最大再試行。 |
| `retry.backoff_seconds` | [60,300,900] | 各 attempt 間の待機秒。 |
| `ask.max_per_job` | 2 | 1 ジョブの ASKユーザー質問上限。 |
| `subtasks.max_depth` | 2 | SpawnSubTask のネスト最大深度。 |
| `subtasks.max_per_parent` | 10 | 1 ジョブが生成できるサブタスク最大数。 |
---
## `context` — LLM コンテキスト管理
| キー | 既定 | 意味 |
|------|------|------|
| `limit_tokens` | 自動取得→128000 | コンテキスト上限。省略時はプロバイダ API から自動取得。 |
| `thresholds[]` | 0.7=warn / 0.85=prompt / 0.95=force_transition | 使用率閾値ごとの動作。 |
---
## `safety` — 暴走防止・Bash サンドボックス
| キー | 既定 | 意味 |
|------|------|------|
| `max_iterations` | 200 | 1 movement 内の最大イテレーション。 |
| `max_revisits` | 3 | 同一 movement の最大再訪問。超過で ABORT。 |
| `prompt_guard_ratio` | 0.8 | プロンプトがコンテキスト上限の何%まで許容するか0.50.95)。 |
| `history_summarization.enabled` | true | 古い turn を構造化要約に置換して粘る。 |
| `history_summarization.tail_turns` | 2 | 末尾何 turn を保護するか。 |
| `history_summarization.preserve_recent_budget` | 8000 | 末尾保護の最大トークン。 |
| `bash_unrestricted` | false | true で Bash のコマンド許可リストを撤廃(**サンドボックス機構は別途 `bash_sandbox` が制御**)。 |
| `bash_sandbox` | auto | Bash 隔離機構: `auto`bwrap あれば使用、無ければ hardened-whitelist/ `always`bwrap 強制・不在なら起動失敗、本番推奨)/ `off`bwrap 不使用、env スクラブは維持)。詳細 [operations/bash-sandbox-provisioning.md](operations/bash-sandbox-provisioning.md)。 |
---
## `search_filter` — WebSearch の機密情報漏洩防止
| キー | 既定 | 意味 |
|------|------|------|
| `blocked_patterns[]` | — | 完全一致で検索クエリから除去するパターン。 |
| `auto_block.private_ip` | true | 10/172.16-31/192.168/127.* を自動ブロック。 |
| `auto_block.internal_domain` | true | `.local`/`.internal`/`.lan`/`.intranet`/`.corp`/`.home`。 |
| `auto_block.email` / `phone` | true | メール/電話番号。 |
---
## `browser` — BrowseWeb ランタイム
| キー | 既定 | 意味 |
|------|------|------|
| `page_timeout` | 60000 | ページ遷移 timeoutms。 |
| `action_timeout` | 30000 | アクション timeoutms。 |
| `captcha_solve` | skip | `skip` / `novnc`(人手 CAPTCHA 解決)。 |
| `max_captcha_pages` | 5 | CAPTCHA ページ上限。 |
| `channel` | chromium | `chromium`/`chrome`/`msedge`。 |
| `executable_path` | — | ブラウザ実行ファイルchannel と排他)。 |
---
## `tools` — ツール設定
UI 上は Web & Search / Browser / Media & Documents / External Services / Legacy Knowledge に分かれるが YAML は `tools` 1 ブロック。主な項目:
**Web & Search**: `searxng_url`WebSearch フォールバック先), `webfetch_timeout`(sec), `websearch_timeout`, `webfetch_allowed_hosts[]`SSRF 例外: private IP/.local を許可する場合)。
**Media & Documents**: `vision_model`/`vision_base_url`/`vision_timeout`/`vision_max_tokens`ReadImage 用 VLM, `ocr_model`, `office_{excel,docx,pdf}_max_size_mb`(既定 10, `office_pptx_max_size_mb`50, `office_pptx_max_uncompressed_mb`200, zip-bomb 検知), `speech_server_url`/`speech_timeout`/`speech_language`
**External Services**: `x_*`Twitter/X CLI 連携: `x_cli_command`/`x_auth_token`/`x_ct0`/`x_proxy`/`x_download_*` 等), `google_maps_api_key`/`maps_timeout`(未設定で Nominatim/OSRM, `amazon_affiliate_tag`/`keepa_api_key`
**User scripts**: `user_scripts_enabled`RunUserScript。plain runtime は Node `--permission` で sandbox 化), `user_scripts_allow_userids[]`
**Legacy Knowledge**: `knowledge_service_url`(未設定で knowledge ツール無効), `knowledge_namespaces`namespace ごとの api_key。新規 namespace は MCP 経由を推奨。
---
## `notes` — Shared Knowledge Notes 注入
`data/users/{userId}/notes/` のノートをシステムプロンプトに注入。`inject.per_note_max_kb`(日本語は 4 推奨), `inject.total_max_kb`, `inject.over_budget_strategy``truncate_last`/`skip_remaining`/`degrade_to_search`)。
---
## `auth` — 認証(任意)
未設定なら認証なしで動作。
| キー | 意味 |
|------|------|
| `session_secret` | セッション署名鍵(ランダム文字列)。 |
| `session_max_age` | セッション有効期間ms, 既定 86400000=24h。 |
| `secure_cookie` | HTTPS 環境では true。 |
| `admin_emails[]` | admin ロールにするメール。 |
| `primary_provider` | `google` / `gitea`(両方有効時に明示)。 |
| `providers.google` | `client_id`/`client_secret`/`callback_url`。 |
| `providers.gitea` | `client_id`/`client_secret`/`base_url`/`callback_url`。ログイン時に Gitea org を取得し可視性に利用。 |
---
## `branding`(任意)
`app_name`/`primary_color`/`login_page_title`/`logo_url`/`favicon_url`/`footer_text`。Settings → System → Brandingadminで GUI 編集可。`config.yaml``data/branding/` は gitignore 済み。
---
## `secrets`
`master_key_path`(既定 `./data/secrets/master.key`, 32 byte, 初回起動で自動生成・mode 0600。SSH 鍵・MCP トークン等の暗号化に使う。
---
## `reflection` — 学習(既定 OFF
ON で毎ジョブ完了後にユーザーメモリを LLM が自動更新snapshot は revert 可)。`enabled`, `max_memory_changes_per_job`(3), `piece_edit_cooldown_hours`(24), `snapshot_retention_days`(90), `per_user_daily_budget_tokens`(200000)。
---
## `mcp` — Model Context Protocol
サーバーは admin UIglobal/各ユーザーself-hostedで管理。**`MCP_ENCRYPTION_KEY` env64 hexが必須。** `call_timeout_seconds`(60), `max_binary_size_mb`(20), `max_output_files_per_job`(10), `max_output_size_mb_per_job`(200), `tool_cache_ttl_seconds`(600), `oauth_pending_ttl_minutes`(10), `allow_private_addresses`private 網の MCP server 用、既定 false
---
## `ssh` — SSH ツール(既定 OFF
`enabled`, `allow_private_addresses`(global 既定、admin は per-connection grant 可), `call_timeout_seconds`(30), `max_output_bytes`(32768), `max_{upload,download}_size_mb`(100), `audit_retention_days`(90), `admin_bypasses_grants`(true), abuse 検知(`abuse_window_minutes`/`abuse_failure_threshold`/`abuse_lock_minutes`)。
**Interactive Console**`ssh.console`: `enabled`, `idle_timeout_seconds`(1800), `max_session_duration_seconds`(14400), `scrollback_bytes`(524288), `max_sessions_per_connection`(3) ほか。手順は [ssh.md](ssh.md)。
---
## `notifications.push` — Web PushV2, 任意)
HTTPS ホスティング必須iOS は PWA インストール)。`enabled`, `vapid_subject`(RFC 8292), `vapid_current_path`自動生成・mode 0600, `vapid_history_dir`, `payload_max_bytes`(3072, 上限 4096), `queue_concurrency`(8), `per_send_timeout_ms`(10000)。鍵ローテーション: `npm run vapid-rotate`
---
## Environment variable overrides
一部設定は環境変数で上書きできる:
| 環境変数 | 上書き対象 |
|----------|------------|
| `OLLAMA_BASE_URL` | LLM エンドポイント |
| `OLLAMA_MODEL` | モデル名 |
| `WORKTREE_DIR` | `storage.worktree_dir` |
| `CONCURRENCY` | `concurrency` |
| `DB_PATH` | SQLite DB パス |
| `PORT` | bridge HTTP ポート(既定 9876 |
| `LOG_LEVEL` | `debug`/`info`/`warn`/`error`(既定 info |
| `MCP_ENCRYPTION_KEY` | MCP/SSH 秘密の暗号化鍵MCP 利用時必須) |