何のためのものか
TypeScript 用 Agent SDK。query() が主要関数で、メッセージをストリームとして返す async generator を作る。
触る
npm install @anthropic-ai/claude-agent-sdkSDK はプラットフォーム別のネイティブ Claude Code バイナリを optional dependency としてバンドルする。 SDK バージョンはバンドルされた Claude Code バージョンと一致する(SDK v0.3.X は Claude Code v2.1.X)。
query() に prompt と options を渡し、返ってきた Query を反復する。
入れる
Options から必要なものだけ設定する。よく使うのは次のあたり。
| プロパティ | 意味 |
|---|---|
allowedTools | 自動承認するツール(制限ではない)。 未リストのツールは permissionMode と canUseTool に渡る |
canUseTool | カスタムパーミッション関数。パーミッションフローがそのステップに到達した場合のみ呼ばれる |
agents | プログラム定義のサブエージェント |
additionalDirectories | アクセスできる追加ディレクトリ |
abortController | 操作のキャンセル |
continue | 直近の会話を継続する |
permissionMode: 'bypassPermissions' を使うなら allowDangerouslySkipPermissions も要る。
Options 型は非常に多くのフィールドを持つ。 全体は公式の TypeScript SDK リファレンスを見る。
効かせる
- 起動を速くする。
startup()で CLI サブプロセスを事前起動し、返ってきたWarmQueryの.query(prompt)を呼ぶと既に起動済みのプロセスに書き込む(初期化タイムアウトの既定は 60000ms) - 単一実行ファイルに固める。
bun build --compileではrequire.resolveが$bunfs内で機能せずバイナリを見つけられない。extractFromBunfs()で取り出し、pathToClaudeCodeExecutableに渡す - バイナリが見つからないとき。 package manager が optional dependency をスキップすると
Native CLI binary for <platform> not foundになる。別途入れたclaudeのパスをpathToClaudeCodeExecutableに指定する
落とし穴
envオプションはサブプロセス環境を置き換える(Python SDK と違う)。...process.envをスプレッドしてPATHなどを保持するallowedToolsは制限ではない。 「これだけ使わせる」つもりで書くと、他のツールがモードとコールバック次第で通るresolveSettings()はアルファ版で、API が変わりうる- Yarn 1.x は
libcフィールドを適用しないため Linux で glibc と musl の両方が入る(SDK は正しい方を起動する)