コンテンツにスキップ

Workshop 1を実行する — 完全な配信ウォークスルー

エンジニアのグループに2時間で配信したときのWorkshop 1の手順ごとのウォークスルー。まずこれを読んでを理解してください。それからWorkshop 1ビルドガイドで実際のコードを開いてください。


形 — 2時間、5つの動き

動き時間何が起こるか
オープニング10分セッションのフレーミング · 3つの事前チェック · 5動きのタイムマップ
1 · セットアップ20分フォルダ作成 · SDKインストール · インストール中に5つのSDK名を説明
2 · スケルトン25分4ブロックを貼り付け · 設定 · ツールグループ · システムプロンプト · タスクプロンプト · ランナー
3 · GOを押す15分シングルエージェントを実行 · ライブログを実況 · 部屋に自分のターミナルを見てもらう
4 · マルチエージェント25分3つのサブエージェントを追加 · 親をオーケストレーションに変換 · マルチエージェント・フローを実行
5 · クローズ10分構築したものを、次にどこへ向かうかにつなげる · 質問の場を開く

加えて、動き3と動き4の間に5分の休憩。合計:バッファ込みで約110分。


オープニング · 10分

つなぐためのフレーミング:

「このセッションは2時間です。終わりまでに、皆さんのラップトップで動くAIエージェントが手に入ります。約200行のTypeScript。ほとんどは一緒にコードを貼り付けます。TypeScriptの専門家である必要はありません。」

質問してよいという許可:

「行き詰まったら手を挙げてください。黙って苦しまないでください。部屋には2人います — 一人が運転し、一人がサポートします。終わりまでにすべてのラップトップが動くようにここにいます。」

5動きのマップ — ホワイトボードまたはスライドで歩いて見せる。エンジニアは旅が始まる前に次の2時間の地図を必要とします。

3つの事前チェック — 投影されたターミナルで各コマンドを入力します。

Terminal window
node --version # need 20.x or higher
which claude # confirm the CLI you'll use is available
ls workshop-folder/ # confirm the shared workshop folder is accessible

60秒待ちます。不足しているものがあれば手が挙がります。フロアサポートが個別に対処し、その間に他の人は先に進みます。

「では、始めましょう。」


動き1 · セットアップ + SDKインポート · 20分

投影されたターミナルで入力します — 動きの間中、表示しておきます。

Terminal window
mkdir claude-agent-sdk-training
cd claude-agent-sdk-training

ビルドガイドから package.jsontsconfig.json を貼り付けるよう部屋を案内します。2つの小さな設定ファイル。それ自体は仕事をしません — どのライブラリを取得するか、どのTypeScriptルールに従うかをコンピュータに伝えるだけです。

重要な唯一のライブラリ。

@anthropic-ai/claude-agent-sdk

インストールを実行します。

Terminal window
pnpm install

インストール中(新しいラップトップで3〜5分)、前に出てSDKが何を提供するかを説明します。5つの名前。

名前役割
queryClaude Agent SDK実行を一度開始
Optionsモデル · cwd · ツール · 権限 · プロンプト · サブエージェントを設定
SDKMessage実行からストリーミングされるライブイベント
SDKResultMessage最終結果
AgentDefinition親が呼び出せるサブエージェントを定義

5つの名前。2分後にこれら5つすべてを目にします。

チェックポイントpnpm install が終わった人は手を挙げます。フロアサポートが詰まっている人を助けます。80%以上が完了したら続行します。

次にimportを貼り付けます。src/index.ts の先頭 — 上の表の5つの名前そのまま。

一時停止。部屋を確認します。質問します:「次に進む前に質問はありますか?」(このチェックインには現地語を使う — バイリンガルな部屋は第二言語では質問を自発的にしません。)5秒待ちます。それから先に進みます。


動き2 · シングルエージェントのスケルトン · 25分

「次に4つのピースを配置します。設定。ツールグループ。エージェントの身元。エージェントのタスク。そしてそれを駆動するランナー。」

ステップ3 — RunConfig を貼り付け。 設定ブロック。作業ディレクトリ、モデル(Opus)、何件のインシデント(5)、どれだけ最近のもの(過去6ヶ月)。環境変数なので、部屋はコードを編集せずに変更できます。

ステップ4 — ツールグループを貼り付け。 2つの名前付きリスト。

  • SAFE_RESEARCH_TOOLSWebSearchWebFetchReadGlobGrep
  • WRITING_TOOLSWriteEdit

エージェントは両方を取得します。サブエージェントを追加するとき、サブエージェントは研究ツールのみを取得します。ファイルを書けません。書くのは親だけ。これが各エージェントができることを制御する方法です — ガバナンスの最もシンプルな形。

ステップ5 — システムプロンプトを貼り付け。 エージェントの身元。安定した役割。

「あなたはインシデント・コレクター・エージェントです。AI関連のインシデントのみを収集してください。決してソースを捏造しないでください。証拠が弱ければ、そのケースを却下してください。」

これは実行を通じて同じままです。タスクは変わる — しかし身元は留まります。

ステップ6 — タスクプロンプトを貼り付け。 仕事。5件のインシデントを収集。これが正確なスキーマ。2つの出力ファイルを書き込む。

重要 — プロンプトは明示的に言います:水増ししないこと。5件の本物のインシデントが見つからなければ、より少ない数を書く。証拠の質について正直であること。

「これがエージェントに伝える方法です — 過少配信は構わない。捏造は構わない、ということではありません。」

ステップ7 — ランナーループを貼り付け。 最長のブロック。約100行。エンジニアは今すぐ各行を理解しようとせずに貼り付けます。

知っておく必要があるのは:これがエージェントを駆動し、その動きをすべて表示する関数です。すべての検索。読むすべてのページ。書くすべてのファイル。ターミナルにライブで。

実行前に型チェック:

Terminal window
pnpm typecheck

ターミナルが沈黙 = 成功。赤いエラー = どこかにタイポ。フロアサポートが助けます。


動き3 · GOを押す · 15分

ステップ8 — runSingleAgent を貼り付け。次にステップ9 — エントリーポイント。

そしてコマンド。

Terminal window
pnpm start

最初の20〜30秒 — 何も起こらない。 部屋に伝えます:心配しないで、プログラムを止めないで。エージェントは接続中で、最初の検索クエリを選んでいます。

そしてログがストリーミングし始めます。ライブで実況。

[single-incident-collector] START agent run
[single-incident-collector] SYS session initialized
[single-incident-collector] A I'll search for recent AI incidents...
[single-incident-collector] T WebSearch query=LLM coding agent incident 2026
[single-incident-collector] T WebSearch query=AI agent security incident 2026
[single-incident-collector] R WebSearch: 12 results found
[single-incident-collector] A Let me verify the most concrete-sounding incidents...
[single-incident-collector] T WebFetch url=https://...
[single-incident-collector] R WebFetch error: 403 Forbidden
[single-incident-collector] T WebSearch query=Replit AI agent deleted production database
[single-incident-collector] A Replit case is from July 2025 — outside the 6-month window.
Let me verify the more recent candidates.
[single-incident-collector] T WebFetch url=https://www.anthropic.com/news/disrupting-AI-espionage
[single-incident-collector] R WebFetch: 209,339 bytes
[single-incident-collector] T Write file_path=.../incidents.jsonl
[single-incident-collector] T Write file_path=.../01-incident-registry.md
[single-incident-collector] DONE success turns=19 cost=$0.9956
ログコード意味
STARTエージェントプロセスが起動
SYSモデル接続が開く
Aエージェントが自分自身に推論中
Tツールが呼ばれた — 検索、取得、書き込み
Rツール結果が戻った
DONE実行が完了

エージェントがウィンドウ外のインシデントを却下する A 行が重要な瞬間。 部屋がそれを見たとき — エージェントが現実世界の曖昧さの下で自身のルールに従う — ワークショップは着地しました。アナウンスしないでください。部屋に自分で気づいてもらってください。

約5分後、実行が完了します。出力を確認します。

data/
ls outputs/single/workshop-outputs/
# 01-incident-registry.md

markdownを開きます。最初のインシデントタイトルを読み上げます。URLをクリック。日付は本物。ソースは本物。 部屋は60秒でエージェントの作業を検証できます。

5分休憩。 エンジニアはストレッチ。フロアサポートが個別の質問に対応。


動き4 · マルチエージェントに変換 · 25分

「同じエージェント。3つのサブエージェントを追加します。」

すべてをやる1つのエージェントは1人の作業者。3つのサブエージェント = 専門家。

  • 汎用の発見サブエージェント
  • コーディングエージェント特化の発見サブエージェント
  • 検証サブエージェント

各サブエージェントは独自の仕事、独自のプロンプト、独自のツールを持ちます。発見サブエージェントはファイルを書けません。 最終ファイルを書くのは親エージェントだけ。

ステップ10 — サブエージェント定義を貼り付け。 3つの名前付きエントリ、それぞれ descriptionprompttools リスト、model(Sonnet — Opusの親より安価)を持ちます。

ステップ11 — マルチエージェント・プロンプトを貼り付け。 オーケストレーションはプロンプトにあります。

  1. 広範な発見のために発見サブエージェントを使う
  2. エージェント型AIインシデントのためにコーディングエージェント発見サブエージェントを使う
  3. 候補リストを自分で(親が)マージ
  4. ソースを検証するため検証サブエージェントを使う
  5. 最終ファイルを自分で書く

親がシーケンスを決めます。サブエージェントは自分の部分を行い、ノートを返します。

ステップ12 — runMultiAgent + エントリーポイント更新を貼り付け。 新しいオプションが1つ:agents。それがSDKにサブエージェントを伝えます。これらは Agent ツールを通じて利用可能になります。

実行します。

Terminal window
pnpm start -- --multi

ログの形が変わります。新しいスコープ付きラベルが現れます。

[multi-agent-incident-collector] START agent run
[multi-agent-incident-collector] T Agent -> incident-database-discovery
[multi/incident-database-discovery] A I'll search for AI incidents in the recency window...
[multi/incident-database-discovery] T WebSearch ...
[multi-agent-incident-collector] T Agent -> coding-agent-incident-discovery
[multi/coding-agent-incident-discovery] T WebSearch ...
[multi-agent-incident-collector] T Agent -> incident-verifier
[multi/incident-verifier] A Verifying sources for each candidate...
[multi-agent-incident-collector] T Write file_path=.../incidents.jsonl
[multi-agent-incident-collector] T Write file_path=.../01-incident-registry.md
[multi-agent-incident-collector] T Write file_path=.../collection-method.md
[multi-agent-incident-collector] DONE success turns=27 cost=$1.4823

1つの画面に3つのスコープ付きラベル — 親、2つの発見サブエージェント、1つの検証者。一緒に動いている。エンジニア自身のラップトップ上で。

マルチエージェントの出力を開きます。

data/
ls outputs/multi/workshop-outputs/
# 01-incident-registry.md
# collection-method.md

新しいファイル — collection-method.md — は、どのサブエージェントが何を見つけたかについての親のノートです。これで作業は監査可能になりました。誰が何をしたかを見ることができます。


動き5 · クローズ · 10分

「皆さんがしたことを振り返ってください。200行のTypeScript。2回の実行。1つのシングルエージェント。1つの4人チーム — 親1つとサブエージェント3つ。」

2回の実行のコスト — 約3ドル。時間 — 約10分のコンピュート。

これがエージェント・プリミティブです。メールボックスを監視し、アラームを監視し、受信リクエストを処理し、レポートを起草する — エージェントが読み、決定し、書き出す任意のワークフローと同じプリミティブ。ドメインは変わる;プリミティブは留まる。

質問の場を開く。 質問を受け付けます。部屋が議論したいかもしれないこと。

  • エージェントは何を検索するかをどう決めるのか?(モデル + プロンプト + 推論)
  • エージェントがループに入ったらどうなるか?(maxTurns キャップ、安全境界)
  • これを本番にどうデプロイするか?(親は1ピース;その周りのオーケストレーションが本番システム)
  • 規模でのコストは?(SonnetのサブエージェントはOpusの約20%;オーケストレーション層に予算コントロール)
  • 異なるLLMを使えるか?(はい — SDKはルーター付きであればプロバイダ非依存;Anthropic独自SDKの場合はモデル名を入れ替える)

よくある驚きと対処法

何が起こるか対処
pnpm start 後の長い沈黙30秒待つ。エージェントは接続中 + 最初のクエリを選んでいる。それからログが始まる。
WebFetchで 403 Forbidden想定内。多くのソースは自動リクエストをブロック。エージェントは別のソースを試す。
エージェントが「検証済みは3件、5件ではない」と言う受け入れる。プロンプトがエージェントに捏造しないよう伝えた。これは正しい振る舞い。
429 Too Many Requests60秒待って再実行。共有キーを使っているなら、別のプロバイダ・ルーティングに切り替える。
エージェントが終了したが outputs/ が空permissionMode"acceptEdits" であることを確認。"ask" なら、エージェントは権限待ちで一時停止している。
貼り付け後の型チェックでエラーおそらく順序が違う貼り付けか、波括弧の欠落。失敗するセクションを再度貼り付ける。
コストが$1よりはるかに高いINCIDENT_COUNT が高く設定されているか、Opusが長く実行されている。カウントを下げる、env経由でSonnetに切り替える。

なぜこの形式がうまくいくのか

この2時間のワークショップがうまく着地する傾向がある3つの理由。

  1. ペースト駆動、ゼロから打鍵しない。 エンジニアはTypeScriptを学ぶ必要がない。9セクションを順番に貼り付ける;プレゼンターが各セクションが何をするかを実況する。認知負荷はエージェントを理解することに向けられ、コードを書くことではない。

  2. pnpm start の最初の約30秒は何もないように見える。 これは沈黙を埋めない瞬間。ログが始まると、部屋は見る準備ができている。

  3. エージェントが自分で結果を却下する。 プロンプトなし、台本のあるシアターなし — エージェントが指示に従う。それが部屋が自分たちが何を構築したのかを理解する瞬間。


このプリミティブが何にスケールするか

シングルエージェント → マルチエージェント・パターンはカーネルです。それを超えて。

  • 多くのサブエージェントの会社 — 複数の親エージェント、それぞれが独自のサブエージェント・チーム、ライブラリとメモリ層を共有。
  • 長時間実行エージェント — ハートビート、スケジュールされた起動、実行をまたぐ永続的な状態。
  • チャネル駆動エージェント — WhatsApp、メール、Slack、Teams — エージェントはユーザーが好むチャネルで受信し、処理し、返信する。
  • クロスエージェント・メモリ — 1つのエージェントが昨日学んだことを、別のエージェントが今日入室時に読む。

これらはWorkshop 1にはありません。Workshop 2ビルドガイドWorkshop 3フックガイド、そしてより広いLifeOS · Living AI Officeプラットフォームにあります。


次に読む