Documentation Index
Fetch the complete documentation index at: https://kawax.biz/llms.txt
Use this file to discover all available pages before exploring further.
SessionConfig
SessionConfigクラスで様々な設定が可能です。
Copilot::run(prompt: '...', config: $config)やCopilot::start(function (CopilotSession $session) { ... }, config: $config)のように使用します。
単純にモデルを指定したいだけのようなSessionConfigクラスを使うまでもない時は配列での指定も可能です。Copilot::run(prompt: '...', config: ['model' => 'auto'])
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Types\SystemMessageConfig;
use Revolution\Copilot\Types\InfiniteSessionConfig;
use Revolution\Copilot\Types\UserInputRequest;
use Revolution\Copilot\Types\Rpc\ModelCapabilitiesOverride;
use Revolution\Copilot\Types\Rpc\ModelCapabilitiesOverrideSupports;
use Revolution\Copilot\Types\Rpc\ModelCapabilitiesOverrideLimits;
use Revolution\Copilot\Enums\ReasoningEffort;
$config = new SessionConfig(
// 使用するモデルの指定
model: 'auto',
// 新規セッション作成時に固定のセッションIDを指定
sessionId: 'session-123',
clientName: 'my-app',
// 推論レベル。対応しているモデルでのみ設定可能。
reasoningEffort: ReasoningEffort::HIGH,
// モデルのcapabilitiesをオーバーライド。ランタイムのデフォルトにdeep-mergeされる。
// modelCapabilities: new ModelCapabilitiesOverride(
// supports: new ModelCapabilitiesOverrideSupports(vision: true, reasoningEffort: true),
// limits: new ModelCapabilitiesOverrideLimits(max_prompt_tokens: 200000),
// ),
// 配列での指定も可能
// modelCapabilities: ['supports' => ['vision' => true]],
// configディレクトリを上書き設定
configDirectory: '',
// MCP設定やスキルディレクトリの自動検出を有効化
// .mcp.json や .vscode/mcp.json をワーキングディレクトリから自動検出し、
// 明示的に指定した mcpServers や skillDirectories とマージする(名前衝突時は明示指定が優先)
enableConfigDiscovery: true,
// カスタムツール
tools: [...],
// システムメッセージ
systemMessage: new SystemMessageConfig(
content: 'You are a helpful assistant for Laravel developers.',
),
// システムメッセージ: replaceモード(システムプロンプトを完全に置き換え)
// systemMessage: new SystemMessageConfig(
// mode: 'replace',
// content: 'カスタムシステムプロンプト全体',
// ),
// システムメッセージ: customizeモード(セクション単位でオーバーライド)
// systemMessage: new SystemMessageConfig(
// mode: 'customize',
// sections: [
// 'tone' => new SectionOverride(action: SectionOverrideAction::REPLACE, content: 'Always respond in Japanese.'),
// 'safety' => new SectionOverride(action: SectionOverrideAction::REMOVE),
// 'custom_instructions' => new SectionOverride(action: SectionOverrideAction::APPEND, content: 'Additional instructions here.'),
// ],
// content: 'appendモード同様の追加コンテンツ(オプション)',
// ),
// カスタムプロバイダー
provider: new ProviderConfig(),
// セッションごとのGitHubトークン(マルチテナント対応)
// クライアントレベルのgithub_tokenとは別に、セッション単位でトークンを指定できる
gitHubToken: $user->github_token,
// リモートセッションの動作モード
// 'off' - ローカルのみ(デフォルト)
// 'export' - セッションイベントをGitHubにエクスポート(リモートステアリングなし)
// 'on' - エクスポートとリモートステアリングを両方有効化
remoteSession: \Revolution\Copilot\Enums\RemoteSessionMode::Export,
// クラウドセッション(ローカルではなくクラウドでセッションを作成)
// オプションでリポジトリ情報を関連付けられる
cloud: new \Revolution\Copilot\Types\CloudSessionOptions(
repository: new \Revolution\Copilot\Types\CloudSessionRepository(
owner: 'myorg',
name: 'myrepo',
branch: 'main',
),
),
onPermissionRequest: function (array $request) {
// 権限リクエストを処理
},
onUserInputRequest: function (UserInputRequest $request) {
// ユーザーインプットリクエストを処理。ask_user
},
// エリシテーションリクエストのハンドラー
// 設定するとエージェントからのフォームベースUIダイアログリクエストを受け取れる
onElicitationRequest: function (ElicitationContext $context) {
// エリシテーションリクエストを処理
return ['action' => 'accept', 'content' => ['field' => 'value']];
},
// プランモード終了リクエストのハンドラー
// 設定するとエージェントがプランモードを終了する際のリクエストを受け取れる
onExitPlanModeRequest: function (ExitPlanModeRequest $request) {
// プラン内容を確認して承認・却下
return new ExitPlanModeResult(approved: true, selectedAction: $request->recommendedAction);
},
// 自動モード切替リクエストのハンドラー
// レートリミット到達時にautoモードへの切替を許可するか選択できる
onAutoModeSwitchRequest: function (AutoModeSwitchRequest $request) {
// "yes", "yes_always", "no" のいずれかを返す
return 'yes';
},
// セッションフック
hooks: [],
// ワーキングディレクトリ
workingDirectory: '',
// ストリーミングを有効化
streaming: true,
// サブエージェントのストリーミングイベントをメインストリームに含めるか (デフォルト: true)
includeSubAgentStreamingEvents: true,
// 使用可能なビルトインツール
availableTools: ['read_file', 'write_file'],
// もしくは除外するツール
excludedTools: ['shell'],
// MCPサーバー設定
mcpServers: [
'github' => [
'type' => 'http',
'url' => 'https://api.githubcopilot.com/mcp/',
],
],
// カスタムエージェント
customAgents: [
[
'name' => 'reviewer',
'displayName' => 'Code Reviewer',
'description' => 'Reviews code for best practices',
'prompt' => 'You are an expert code reviewer.',
],
],
// デフォルトエージェントの設定。カスタムエージェントが選択されていない場合に使用されるビルトインエージェントの設定。
// excludedTools: デフォルトエージェントから除外するツールのリスト。
// カスタムサブエージェントには引き続き利用可能。
defaultAgent: ['excludedTools' => ['tool_name']],
// セッション開始時にアクティブにするエージェントを指定。customAgentsのnameと一致する必要がある。
agent: 'reviewer',
// スキルディレクトリ
skillDirectories: [],
// 無効なスキル
disabledSkills: [],
// 無限セッション設定。デフォルトは有効。
infiniteSessions: new InfiniteSessionConfig(
enabled: true,
backgroundCompactionThreshold: 0.80, // コンテキスト使用率が80%になったら圧縮を開始する
bufferExhaustionThreshold: 0.95, // 圧縮が完了するまで95%でブロックする
),
// 無限セッションを無効化
// infiniteSessions: new InfiniteSessionConfig(enabled: false),
// セッション作成RPCより前にイベントハンドラを登録する。
// session.start などの早期イベントを取りこぼさないようにするために使用する。
// $session->on($handler) を後から呼ぶのと同等だが、ライフサイクルのより早い段階で登録される。
onEvent: function (SessionEvent $event) {
// すべてのセッションイベントを受け取る
},
);
$response = Copilot::run('...', config: $config);
ResumeSessionConfigクラスを使用します。SessionConfigとほとんど同じですが少しだけ違います。ResumeSessionConfigは設定を変えたい項目のみ指定します。他は新規セッション開始時の設定が引き継がれます。
クラウド実行は Cloud Sessions、Plugin Directory は Plugin Directories を参照してください。
最新情報は GitHub リポジトリ を参照してください。