コンテンツにスキップ
Subako Docs
日本語
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

Agent config

Agent config の全フィールド。

Agent のバージョンは 1 つの JSON ドキュメントです。コンソールの バージョンの編集画面 はこのドキュメントを編集するフォームで、subako agent publish はこれをファイルから読み込みます。API では POST /v1/agents/{agent_id}/versions がこのドキュメントを受け取り、Model Provider はドキュメントと並べて model_provider_id で指定します。

{
  "system_prompt": "You triage support tickets for Acme.",
  "model": { "format": "openai_responses", "model": "hawk", "max_tokens": 8192, "context_window": 128000 },
  "mcp": [{ "name": "orders", "url": "https://mcp.acme.example/orders", "default_policy": "require_approval" }],
  "skills": [{ "name": "refund-policy", "skill_id": "<skill-id>", "version": { "type": "latest" } }],
  "functions": [{ "name": "files", "source": { "type": "platform", "package": "files" }, "default_policy": "allow" }],
  "volume": { "data": { "type": "enabled" } },
  "builtin": { "session_display_name": { "when": "empty" }, "ask_user": { "widgets": [{ "type": "select" }] } }
}

subako agent config-example --format <format> は、公開できる最小のドキュメントを出力します。サーバーが知らないキーはエラーにならず無視されるので、公開後にバージョンのページで内容を確認してください。

トップレベル

フィールド
system_prompt 文字列 毎回の会話の前にモデルに与える指示です。省略すると何も指示しません。
model オブジェクト、必須 モデルとその設定です。
mcp 配列 MCP サーバーの Grant です。
skills 配列 Skill の Grant です。
sandboxes 配列 Sandbox の Grant です。
functions 配列 Function package の Grant です。
volume オブジェクト Session Volume の領域です。
builtin オブジェクト Subako 自身が提供する Tool です。

Model Provider はドキュメントに含めません。編集画面の Model Provider、CLI の --model-provider、API の model_provider_id で指定するので、同じファイルを同じ形式のどの Model Provider にも公開できます。CORS の Origin はバージョンではなく Agent に設定します。詳しくは API から Session を使う を参照してください。

model

format で種類を区別します。値は Model Provider の形式と一致させてください。

フィールド
model 文字列、必須 モデルの ID です。Platform の Model Provider では価格が設定されているモデルでなければならず、公開時に確認されます。自分の Model Provider のモデルは、Session が最初に呼び出したときに確認されます。
max_tokens 整数、必須 モデルが 1 ステップで書けるトークン数の上限です。
context_window 整数、必須 モデルが一度に読み込めるトークン数です。
image_input supported | unsupported モデルに画像を渡すかどうかです。既定は supported です。
reasoning_effort none | minimal | low | medium | high | xhigh 省略するとモデルの既定値を使います。
フィールド
model 文字列、必須 モデルの ID です (例: claude-sonnet-5)。
max_tokens 整数、必須 モデルが 1 ステップで書けるトークン数の上限です。Thinking の分も含みます。
context_window 整数、必須 モデルが一度に読み込めるトークン数です。
image_input supported | unsupported モデルに画像を渡すかどうかです。既定は supported です。
thinking オブジェクト {"type": "adaptive"}、{"type": "disabled"}、{"type": "between_tools"}、{"type": "enabled", "budget_tokens": N} のいずれかです。N は 1,024 以上、max_tokens 未満にします。省略するとモデルの既定値を使います。モデルによっては使えないモードもあります。
effort low | medium | high | xhigh | max 省略するとモデルの既定値を使います。

Grant

Grant にはどれも name を付けます。英小文字、数字、- からなる 1~32 文字で、同じ配列の中で一意にします。parent は使えません。Grant の Tool は、モデルには <kind>__<name>__<tool> という名前で見えます。詳しくは Tool を参照してください。

MCP サーバー、Sandbox、Function の Grant には Policy も指定します。

フィールド
default_policy allow | require_approval | deny、必須 どの Tool rule にも指定されていない Tool すべてに適用されます。後から追加された Tool も含みます。
tools [{"name", "policy"}] Tool 名の完全一致で指定する Tool rule です。

mcp

{ "name": "orders", "url": "https://mcp.acme.example/orders", "default_policy": "allow", "tools": [{ "name": "refund", "policy": "require_approval" }] }

url はサーバーの URL で、そのサーバー用の Vault の Credential に指定した URL と完全に一致させます。リソースを提供するサーバーには、list_resources と read_resource の Tool も追加されます。

skills

{ "name": "refund-policy", "skill_id": "<skill-id>", "version": { "type": "pinned", "number": 2 } }

version は {"type": "latest"} (各 Session の作成時に解決されます) か {"type": "pinned", "number": N} です。同じ Skill を付与できるのは一度だけです。

sandboxes

{ "name": "build", "environment": { "type": "platform", "release": "2026" }, "network": { "type": "unrestricted" }, "default_policy": "allow" }
フィールド
environment {"type": "platform", "release": "2026"}、必須 起動する Platform image の系列です。
network {"type": "unrestricted"} | {"type": "none"} インターネットに接続するか、どこにも接続しないかです。既定は unrestricted です。

Sandbox の Tool は exec の 1 つだけです。

functions

{
  "name": "billing",
  "source": { "type": "workspace", "function_id": "<function-id>", "version": { "type": "latest" } },
  "default_policy": "allow",
  "timeout_secs": 120,
  "network": { "type": "allowlist", "hosts": ["billing.acme.example"] },
  "http_credentials": ["https://billing.acme.example"]
}
フィールド
source 必須 {"type": "platform", "package": "files" | "http"}、または {"type": "workspace", "function_id", "version"} です。version の書き方は Skill と同じです。
timeout_secs 1~300 既定は 60 秒です。
network {"type": "none"} (既定)、{"type": "unrestricted"}、{"type": "allowlist", "hosts": [...]} のいずれかです。hosts には api.example.com や *.example.com のような Host を 1~64 個指定します。
http_credentials 最大 16 個 Vault の Credential をリクエストに付ける Origin (https://host[:port]) です。どの Origin も network で接続できる必要があります。

詳しくは Function の付与 を参照してください。

volume

{ "data": { "type": "enabled" } }

既定は {"type": "disabled"} です。有効にすると、Function は常に使える /volume/tmp に加えて、Session を削除するまで残る /volume/data を使えます。

builtin

session_display_name

{"when": "never" | "empty" | "until_user_edits"} で指定し、既定は never です。never 以外にすると、Agent が自分の Session に名前を付けられます。empty では名前がない間だけ付けられ、until_user_edits では、人が名前を変えるまで自分で付けた名前を直すこともできます。人が付けた名前が上書きされることはありません。

ask_user

{"widgets": [...]} で、Widget を 1~32 個、それぞれ一度ずつ指定します。省略すると、Agent は人に質問できません。

Widget
{"type": "select"} 選択肢から選ぶ
{"type": "text"} 自由入力のテキスト
{"type": "confirm"} はい・いいえ
{"type": "custom", "id", "description", "props", "answer"} アプリが描画する Widget です。id (a–z、0–9、_、- からなる 1~64 文字)、モデルがこの Widget を選ぶときに読む description、Agent が埋める内容 (props) と回答の内容 (answer) を表す JSON Schema を指定します

詳しくは 承認とフォーム を参照してください。

公開したバージョンを読み出す

GET /v1/agents/{agent_id}/versions は、各バージョンの config を Subako が保存している形で返します。この形は公開時のものと少し異なり、モデルの設定は model.config の下にまとめられ、既定値も省略されずに書かれます。TypeScript SDK の readAgentConfig を使うと、公開時の形に戻せます。

このページは役に立ちましたか?