はじめに
Subako は、あなたのプロダクトの AI agent が動くランタイムです。長時間の session、安全なコード実行、credential、skill を、ひとつの API から扱えます。
モデル単体にできるのは、質問に答えて止まることだけです。その答えを実際の仕事に変える部分 — ひとつの HTTP リクエストを超えて実行を生かし続けること、接続が切れても再開できるように会話を保持すること、モデルが書いたコードを実行すること、本物の credential で本物のシステムに到達すること — がランタイムです。そしてそれは、どのチームもプロダクトごとに一度は自前で作ることになる部分でもあります。
Subako は、そのランタイムをサービスとして提供します。あなたのプロダクトは session を作成し、その event をストリーミングし、自分にしか答えられない tool call に応答します。残りはすべて Subako が引き受けます。
構成要素
Agent
モデルとプロンプト、そしてそれに付随する grant。イミュータブルな version として公開され、session がそこに束縛されます。
Session
ひとつの作業単位。読み出し・追尾・再開ができる追記専用の event ログとして表されます。
Skill
知識と手順をまとめたもの。Workspace 内で version 管理され、agent version に grant されます。
Vault
Session の tool credential が置かれる場所。使うのは broker であり、モデルが目にすることはありません。
Session が動くまで
session を作成する
Session は agent を指定し、必要に応じて credential を引き出せる vault も指定します。作成時点の agent version に束縛され、束縛し直すことは ありません — あとから公開された version が、すでに動いている session を変えてしまうことはありません。
入力を追記する
ユーザーメッセージが session のログに追記されます。これが run の開始です。Engine が確保され、コミット済みのログを渡され、その run だけのモデルプロキシと tool broker に向けられます。
run が event を生む
アシスタントメッセージ、tool call、tool の結果、approval — そのすべてが シーケンス番号付きでログに追記され、そのうえでストリーミングされます。run に関する情報が接続の中だけに存在することはありません。
クライアントが答えられるものに答える
Client は自分が提供する tool を登録し、自分にルーティングされた call に応答します。外部サービスに到達する tool は代わりに broker を経由し、broker が credential を付与します。
run が終わる — あるいは再接続する
Run は run_completed、run_failed、run_cancelled のいずれかで
終わります。途中で接続が切れた場合は、最後に見たシーケンス番号を添えて
再接続すれば、そこからログが再生されます。
CLI と API
Subako には 2 つの接点があります。オペレーターが行うことはすべて subako コマンドであり、プロダクトが実行時に行うことはすべて Core API への HTTP 呼び出しです。
Workspace、agent version、skill、vault、API key はいずれも構成情報です。そして、ターミナルで扱える構成情報は、スクリプトや Makefile や CI に載せられる構成情報でもあります — コードと同じようにレビューされ、どの環境でも同じように再現できます。