メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.qoder.com/llms.txt

Use this file to discover all available pages before exploring further.

query() はデフォルトで毎回の呼び出し時に新しいセッションを開始します。options のいくつかのフィールドを通じて、セッション ID の指定、履歴セッションの復元、既存セッションからのフォークが可能です。

コンセプト

1つのセッションは CLI 側で永続化された1つの対話履歴(コンテキスト、ツール呼び出し記録、圧縮境界などを含む)に対応し、UUID で識別されます。システムメッセージ init に今回の session_id が含まれ、これが後続の resume / fork のアンカーポイントとなります。 以下の例にある auth: accessTokenFromEnv() は、プロジェクトで使用している他の認証方法に置き換えることもできます。詳細は SDK 認証 を参照してください。

新規セッションの作成

デフォルト

セッション関連フィールドを渡さない場合、毎回新規作成されます:
const q = query({
  prompt: 'Hello',
  options: { auth: accessTokenFromEnv() },
});

セッション ID の指定

呼び出し側がセッションの UUID を決定します(ホストが独自にセッションインデックスを管理する場合に適します):
import { randomUUID } from 'node:crypto';

const sessionId = randomUUID();
const q = query({
  prompt: 'Hello',
  options: {
    auth: accessTokenFromEnv(),
    sessionId,
  },
});

セッションの復元

ID による復元

const q = query({
  prompt: 'Continue the previous conversation',
  options: {
    auth: accessTokenFromEnv(),
    resume: 'previous-session-id',
  },
});

最後のセッションの復元

セッション ID が不明な場合、continue: true で最後に変更されたセッションに接続します:
const q = query({
  prompt: 'Continue',
  options: {
    auth: accessTokenFromEnv(),
    continue: true,
  },
});
resumecontinue は同時に渡さないでください。

セッションのフォーク

既存のセッションから新しいセッションを派生させ、元のコンテキストを保持しつつ新しいセッション ID を取得します。元のセッションは影響を受けません:
const q = query({
  prompt: 'Based on the prior context, explore a different direction',
  options: {
    auth: accessTokenFromEnv(),
    resume: 'source-session-id',
    forkSession: true,
  },
});
フォーク後の新しいセッションに ID を指定する場合:
options: {
  auth: accessTokenFromEnv(),
  resume: 'source-session-id',
  forkSession: true,
  sessionId: 'my-new-session-id',
}

フィールドクイックリファレンス

フィールド動作
sessionIdstring単独使用:この ID で新規作成。forkSession と併用:フォーク後の新セッションの ID
resumestring復元するセッション ID
continuebooleantrue で最後のセッションを復元
forkSessionbooleanresume と併用し、接続ではなくフォーク

現在のセッション ID の取得

init メッセージを監視します:
for await (const msg of q) {
  if (msg.type === 'system' && msg.subtype === 'init') {
    console.log('session_id:', msg.session_id);
  }
}