>100 Views
October 18, 26
スライド概要
はじめまして、yukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。
UDEMY COURSE | 日本語 / ENGLISH Claude Code 自律運用マスター講座 /goal・ヘッドレス・Agent SDKで「AIがAIを動かす」仕組みを、お金をかけずに作る Autonomous Claude Code: Build AI-Runs-AI Workflows — No n8n Required 講師:石黒友季子(うさうさ研修工房)
この講座のゴール Course goal — one sentence 自分のリポジトリで「毎朝、未処理のIssueを片付けてテストが通るPRを出す」自律ジョ ブを、n8nなしで組み、安全装置つきで1週間回せる 8 約5時間20分 約5時間10分 1:1 段階 動画 演習 説明:演習 8 stages video hands-on talk : practice Claude Code 自律運用マスター講座 | うさうさ研修工房 2
受講後にできること What you'll learn 1 2 3 /goal に検証可能な終了条件を書 き、無人で完了させる claude -p をスクリプトとcronから呼 び、JSONで受け取る Stop hookで「テストが通るまで止ま らない」仕組みを書く Write verifiable completion conditions Call claude -p from scripts and cron Write a Stop hook that gates on tests 4 5 6 サブエージェントと評価モデルで、AI の仕事をAIに確認させる ルーチン・スケジュール済みタスク ・GitHub Actionsを使い分ける ターン上限・権限・ブランチ運用の安 全装置を必ず入れる Let one model check another's work Choose the right scheduler Always ship guardrails Claude Code 自律運用マスター講座 | うさうさ研修工房 3
8段階の地図 Eight stages — billing starts only at stage 7 1 2 3 4 自律の地図 /goal で終わりを決める 許可と安全装置 ヘッドレス実行 The Autonomy Map Finish Lines with /goal Permissions & Guardrails Headless with claude -p 契約内 契約内 5 6 契約内 7 契約内 8 時刻で動かす hooksで判定を固くする AIがAIを動かす 統合:自律ジョブを1週間 回す Running on a Schedule Deterministic Gates with Hooks AI Orchestrating AI Capstone 契約内 Claude Code 自律運用マスター講座 | うさうさ研修工房 契約内 API従量 一部API 4
手を離していく2つの軸 Two axes: who starts the next turn, who decides it's done 次のターンを誰が始めるか Who starts the next turn 人 終了条件 時刻 外部イベント /goal /loop・cron GitHub・API 誰が完了を判定するか Who decides it's done 作業したAI自身 Claude Code 自律運用マスター講座 | うさうさ研修工房 別の評価モデル スクリプト Haiku Stop hook 5
01 STAGE 1 / 8 自律の地図 The Autonomy Map ねらい 「次のターンを誰が始めるか」で4つの仕組みを区別できる 動画 25分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 15分 契約内 6
4つの仕組みは「次のターンの始まり方」が違う Four mechanisms, four ways to start the next turn 仕組み 次のターンが始まる時 止まる時 /goal 前のターンが終わった時 評価モデルが条件成立と判定した時 /loop 時間間隔が経った時 人が止める/Claudeが完了と判断/7日で期限切れ Stop hook 前のターンが終わった時 自分のスクリプトかプロンプトが判定した時 ルーチン等のスケジュール 時刻・API呼び出し・GitHubイベント 1回の実行が終わった時 Claude Code 自律運用マスター講座 | うさうさ研修工房 7
auto mode は「自律」ではない Auto mode removes per-tool prompts; /goal removes per-turn prompts auto mode /goal ターン内のツール呼び出しを自動承認 ターンが終わるたびに条件をチェック • 新しいターンは始めない • 未達なら次のターンを自動で始める • Claudeが「終わった」と思えば止まる • 完了の判定は別の評価モデル • 完了を判定するのは作業したモデル自身 • ツール承認は省かない(権限は変わらない) 無人で回すには auto mode(ツールごとの確認をなくす) + /goal(ターンごとの確認をなくす) Claude Code 自律運用マスター講座 | うさうさ研修工房 8
演習 1:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace 自分の業務から、自動化したい作業 を3つ書き出す 2 変える Modify 3つを前の表の4つの仕組みのどれに 当たるか分類する 3 作る Build 分類の理由を「次のターンを誰が始 めるか」の言葉で1行ずつ書く つまずきポイント ! auto mode(自動承認)を「自律」と誤解しやすい。auto modeはターン内のツール承認を省くだけで、新しいターンは始めな い。 Claude Code 自律運用マスター講座 | うさうさ研修工房 9
02 STAGE 2 / 8 /goal で終わりを決める Finish Lines with /goal ねらい 評価モデルが会話の記録だけで判定できる条件を書ける 動画 45分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 40分 契約内 10
/goal はターンごとに別のモデルが判定する How /goal works: a small fast model judges every turn /goal 条件を設定 Claudeが作業 評価モデルが判定 すぐ1ターン目が始まる 1ターン分 既定 Haiku/会話だけ読む イエス 達成 ゴール自動クリア ノー:理由をヒントに次のターンへ 評価モデルはツールを呼ばない 条件は最大4,000文字 評価のトークンは小さいモデルで課 金 ファイルもコマンドも見ず、会話に出た 内容だけで判定する 1セッションにアクティブなゴールは1つ メインの作業に比べて通常はごくわず か Claude Code 自律運用マスター講座 | うさうさ研修工房 11
判定できる条件は3つの要素でできている A condition that holds: end state, check, constraint /goal test/auth のテストがすべて通り、 npm run lint が0で終了する。 他のテストファイルは変更しない。 or stop after 20 turns 1 2 3 測れる終了状態 テスト結果・ビルドの終了コード・ファイル数・空の キュー 確かめ方 「npm test が0で終了」「git status がクリーン」 変えてはいけないもの 「他のテストファイルは変更しない」 条件の書き方に迷ったら 先に通常のプロンプトで「この作業の完了を、コマンドの出力で確かめら れる条件として書いて」とClaudeに頼み、出てきた条件を /goal に渡す Claude Code 自律運用マスター講座 | うさうさ研修工房 + ターン上限 or stop after 20 turns 12
評価モデルが判定できる条件・できない条件 Conditions the evaluator can and cannot judge ○ 判定できる × Claudeの出力で示せる 判定できない 会話に証拠が出ない • test/auth のテストがすべて通る • コードがきれいになっている • npm run build が0で終了する • パフォーマンスが十分に良い • src/ に TODO が0件と grep で示す • ユーザーが満足する • label:bug の未処理Issueが0件 • いい感じに直っている Claude Code 自律運用マスター講座 | うさうさ研修工房 13
/goal の3つの使い方 Set, check, clear — one command /goal <条件> /goal /goal clear 設定 条件を指示として、すぐにターンが始まる。既存のゴールは置き換わる 確認 条件・実行時間・評価済みターン数・トークン消費・最新の判定理由 解除 stop / off / reset / none / cancel も同じ。/clear でも消える --resume / --continue で再開するとゴールは復元される(ターン数・トークンはリセット) Claude Code 自律運用マスター講座 | うさうさ研修工房 14
演習 2:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace サンプルリポジトリの失敗しているテ ストを、/goal で直させる 2 変える 3 Modify 同じ条件に「or stop after 10 turns」と 変えてはいけないものを加えて書き 直す 作る Build 自分のリポジトリ用の条件を3つ書 き、講師が「判定可能か」を講評する つまずきポイント ! 判定できない条件で延々と回り、トークンを消費し続ける。ターン上限は毎回必ず書く。 Claude Code 自律運用マスター講座 | うさうさ研修工房 15
03 STAGE 3 / 8 許可と安全装置 Permissions & Guardrails ねらい 人がいなくても壊れない実行環境を先に作る 動画 35分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 30分 契約内 16
無人で回す前に入れる4つの安全装置 Four guardrails before you walk away 1 権限は事前に決める /goal は権限を変えない。auto mode か --allowedTools と 組み合わせる 3 上限を必ず書く /goal に or stop after N turns、ヘッドレスに --max-turns Claude Code 自律運用マスター講座 | うさうさ研修工房 2 作業はブランチで main への直接pushを禁止し、差分は人がレビューする 4 hooksが有効な場所で 信頼ダイアログ未承認のフォルダや disableAllHooks では /goal は動かない 17
演習 3:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace --allowedTools で読み取りとテスト実 行だけを許可して起動する Claude Code 自律運用マスター講座 | うさうさ研修工房 2 変える Modify git push を拒否リスト (--disallowedTools)に入れて、拒否 されることを確かめる 3 作る Build 自分用の「無人実行チェックリスト」を 5項目で作る 18
04 STAGE 4 / 8 ヘッドレス実行 Headless with claude -p ねらい 画面なしでClaude Codeを呼び、結果を機械で受け取る 動画 40分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 40分 契約内 19
claude -p でスクリプトから呼ぶ
Headless: one prompt in, one result out
# 1) 結果をJSONで受け取る
claude -p "src/ の型エラーを一覧にして" \
--output-format json | jq -r '.result'
# 2) /goal を1回の呼び出しで完了まで回す
claude -p "/goal CHANGELOG.md に今週マージ
された全PRの項目がある" \
--allowedTools "Read,Edit,Bash(git log:*)" \
--output-format stream-json --verbose
--output-format json
結果を機械で読む
stream-json --verbose
長いゴールの進捗を見る
--resume <session_id>
同じ会話を続ける
Ctrl+C
条件成立前に止める
Claude Code 自律運用マスター講座 | うさうさ研修工房
20
演習 4:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace スライドの 1) のコマンドをそのまま実 行する 2 変える Modify 結果を result.txt に保存するよう書き 換える 3 作る Build 終了コードで成否を判定し、失敗時に メッセージを出すシェルスクリプトを書 く つまずきポイント ! ヘッドレスでは権限確認に答えられないため、許可していないツールの前で止まる。第3段階の許可リストを先に用意する。 Claude Code 自律運用マスター講座 | うさうさ研修工房 21
05 STAGE 5 / 8 時刻で動かす Running on a Schedule ねらい 作業の性質に合わせてスケジュール手段を選べる 動画 40分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 35分 契約内 22
スケジュール手段は「PCを閉じても動くか」で選ぶ Pick a scheduler by where it runs 手段 動く場所 PCの電源 最短間隔 向いている作業 /loop 自分のPC(開いたセッション内) 必要 1分 作業中のデプロイ・ PR監視 デスクトップのスケジュール済みタス ク 自分のPC 必要 1分 ローカルファイルを使う定期作業 ルーチン(クラウド) Anthropicのクラウド 不要 1時間 PCを閉じても回したい夜間作業 OSのcron + claude -p 自分のPC/サーバー 必要 1分 追加費用ゼロで細かく制御 Claude Code 自律運用マスター講座 | うさうさ研修工房 23
/loop とルーチンで知っておくこと Details that bite: expiry, jitter, daily limits /loop 5m デプロイが終わったか確認して /loop CIが通ったか確認し、レビューコメントに対応して /loop 20m /review-pr 1234 7日で自動終了 分をずらす /loop の定期タスクは作成から7日で消える。長期運用はルーチ ンかcronへ 0 9 * * * ではなく 7 9 * * * のように、正時・30分を避ける loop.md で既定の指示 ルーチンの上限 .claude/loop.md に書くと、引数なしの /loop がそれを実行する 1日の実行回数は契約ごとに上限あり。数字は収録時に公式で 確認 Claude Code 自律運用マスター講座 | うさうさ研修工房 24
演習 5:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace /loop で、作業中ブランチのCIを5分 おきに監視する 2 変える Modify .claude/loop.md に既定の指示を書 き、引数なしの /loop で動かす 3 作る Build 毎朝のIssue整理を1つの手段で組 み、その手段を選んだ理由を書く つまずきポイント ! /loop が7日で消えて驚く。ターミナルを閉じると止まる。長く回す作業はルーチンかcronを選ぶ。 Claude Code 自律運用マスター講座 | うさうさ研修工房 25
06 STAGE 6 / 8 hooksで判定を固くする Deterministic Gates with Hooks ねらい AIの判断ではなく、スクリプトの結果で「終わってよいか」を決める 動画 40分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 40分 契約内 26
Stop hookで「テストが通るまで止まらない」
A Stop hook that blocks until tests pass
.claude/settings.json
{
"hooks": {
"Stop": [{ "hooks": [{
"type": "command",
"command": ".claude/hooks/test-gate.sh"
}]}]
}
}
Claude Code 自律運用マスター講座 | うさうさ研修工房
.claude/hooks/test-gate.sh
#!/usr/bin/env bash
input=$(cat)
# 続行中なら止める(無限ループ防止)
active=$(echo "$input" | jq -r '.stop_hook_active')
if [ "$active" = "true" ]; then exit 0; fi
if ! npm test --silent > /tmp/test.log 2>&1; then
echo '{"decision":"block",
"reason":"テストが失敗。/tmp/test.log を読んで直して"}'
fi
exit 0
27
一番落ちる段差:止まらなくなるStop hook The steepest step: stop_hook_active true → exit 0 ここで止める Stop hook 実行 Claudeが終了しようとする stop_hook_active を確認 false → npm test 失敗なら block 1 2 3 blockを返し続けると止まれない stop_hook_active を最初に見る 終了コード1はエラー扱いで続行 毎回 decision: block を返すhookは、無限 ループになる true なら、すでにhookで続行中。exit 0 で止 める 止めたいときは JSON の decision で伝える Claude Code 自律運用マスター講座 | うさうさ研修工房 28
演習 6:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace スライドの2ファイルを配置し、わざと 失敗するテストで動きを確かめる 2 変える Modify npm run lint も判定に加え、両方通る まで止まらないようにする 3 作る Build PreToolUse hookで .env ファイルの 編集を拒否する つまずきポイント ! stop_hook_active を確認せずに無限ループになる。完成版ファイル(読者特典)と見比べて直す。 Claude Code 自律運用マスター講座 | うさうさ研修工房 29
07 STAGE 7 / 8 AIがAIを動かす AI Orchestrating AI ねらい 作業するAIと確認するAIを分け、互いに渡し合う仕組みを作る 動画 55分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 50分 API従量 30
作業するAIと確認するAIを分ける3つの方法 Three ways to let one AI check another 1 2 3 サブエージェント シェルで2セッション連携 Agent SDK Subagents Two claude -p sessions Python / TypeScript .claude/agents/reviewer.md に「差分 だけを読み、問題点を列挙する」レ ビュー役を定義し、作業役から呼ぶ claude -p で実装 → 別の claude -p に diff を渡してレビュー → 指摘を --resume で最初のセッションへ戻す Claude Codeと同じツール・エージェン トループ・文脈管理をプログラムから 呼ぶ 契約内 Claude Code 自律運用マスター講座 | うさうさ研修工房 契約内 API従量 31
Agent SDKで同じループをコードから呼ぶ Claude Agent SDK — the Claude Code loop as a library import asyncio from claude_agent_sdk import query, ClaudeAgentOptions async def main(): opts = ClaudeAgentOptions( allowed_tools=["Read", "Edit", "Bash"], permission_mode="acceptEdits", ) async for msg in query( prompt="失敗しているテストを直し、 npm test の結果を示して ", options=opts, ): print(msg) インストール pip install claude-agent-sdk npm install @anthropic-ai/claude-agent-sdk 認証は APIキー ANTHROPIC_API_KEY を設定する。他者向け の製品に claude.ai のログインや契約の利用 枠は、事前承認なしに使えない asyncio.run(main()) Claude Code 自律運用マスター講座 | うさうさ研修工房 32
演習 7:なぞる → 変える → 作る Exercise — trace, modify, build 1 なぞる Trace レビュー役のサブエージェントを定義 し、作業役から呼ぶ 2 変える Modify シェル版の2セッション連携(実装 → レビュー → --resume で修正)を動 かす 3 作る Build SDKで「実装 → レビュー → 修正」を 最大3往復で止めるスクリプトを書く つまずきポイント ! Agent SDKを契約のログインで動かそうとする。SDKにはAPIキーが必要。 Claude Code 自律運用マスター講座 | うさうさ研修工房 33
08 STAGE 8 / 8 統合:自律ジョブを1週間回す Capstone ねらい ここまでの部品を組み合わせ、本番に近い形で運用する 動画 40分 Claude Code 自律運用マスター講座 | うさうさ研修工房 演習 60分 一部API 34
判定はスクリプトとAIが二重に行い、最後は人が決める The no-extra-cost autonomous stack 失敗:理由を返して続行 起動 Trigger 作業役 Worker Stop hook cron・/loop・ルーチン claude -p + /goal npm test の終了コード 合格 指摘あり:修正へ戻す 人がレビュー ブランチにPR マージの判断は人 main へ直接pushしない Claude Code 自律運用マスター講座 | うさうさ研修工房 指摘なし レビュー役 Reviewer サブエージェント 35
n8nの役割は標準機能とcronで置き換えられる Replacing n8n with built-ins n8nでやっていたこと 置き換え先 追加費用 時刻トリガー OSのcron+claude -p、/loop、デスクトップのスケジュール済みタ スク なし(PCの電源は必要) PCを閉じても動くトリガー ルーチン(クラウド) 契約内(1日の回数上限あり) 「終わるまで繰り返す」ノード /goal 契約内(評価は Haiku) 条件分岐・合否判定 Stop hook(スクリプト) なし 別のAIにレビューさせる サブエージェント、 2つの claude -p の連携 契約内 プログラムからの本格制御 Agent SDK API従量課金 リポジトリイベントで起動 GitHub Actions、ルーチンのGitHubトリガー API従量+Actions実行時間 Claude Code 自律運用マスター講座 | うさうさ研修工房 36
コストを抑える3つのルール Three rules that keep the bill small 1 2 3 上限を必ず書く 判定はスクリプトで 先に1回、手動で測る /goal に or stop after N turns ヘッドレスに --max-turns テストの終了コードで決める。AIに 考えさせるほどトークンを使う 引数なしの /goal で消費トークンを 見て記録し、それから定期実行へ Claude Code 自律運用マスター講座 | うさうさ研修工房 37
GitHub Actionsで夜間に回す Nightly runs with claude-code-action # .github/workflows/claude-nightly.yml name: Claude nightly on: schedule: - cron: "7 18 * * *" # UTC。日本時間 午前3時7分 jobs: claude: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} prompt: "good-first-issue のIssueを1件直し、 npm test が通ることを確認してPRを作る" claude_args: "--max-turns 15" 導入 Claude Codeで /install-github-app シークレット ANTHROPIC_API_KEY をリポジトリに 登録 費用 API料金 + Actionsの実行時間 Claude Code 自律運用マスター講座 | うさうさ研修工房 38
最終課題:自律ジョブを1週間回す Capstone: five conditions, one week of logs 毎日決まった時刻に起動する(cron・スケジュール済みタスク・ルーチンのいずれか) /goal か --max-turns で、終了条件とターン上限の両方がある Stop hookでテストの合否をスクリプトが判定している 作業はブランチで行い、レビュー役AIの指摘がPR本文に残る 1回あたりの消費トークンを記録し、1週間の合計を報告する Claude Code 自律運用マスター講座 | うさうさ研修工房 39
進度差への備え Support for learners behind and ahead ↩ • 遅れているとき 各段階の完成版ファイル一式(読者特典リポジ トリ) • 第6段階のhookスクリプト完成版 • 段階的ヒント3段 Claude Code 自律運用マスター講座 | うさうさ研修工房 ↗ 早く終わったとき • PreToolUse hookで危険なコマンドを止める • ルーチンのAPIトリガーを監視ツールから叩く • SDKで2つのエージェントを並列に走らせる 40
つまずきやすい5つの場所 Five places learners get stuck 1 判定できない /goal 条件で回り続ける 第2段階 Claudeの出力で示せる条件に書き換え、ター ン上限を書く 2 ヘッドレスで権限確認に引っかかり止まる 第3・4段階 許可リストを先に作る 3 Stop hookの無限ループ 第6段階 stop_hook_active を最初に確認する 4 /loop が7日で消える 第5段階 長期運用はルーチンかcronへ 5 Agent SDKを契約のログインで動かそうとする 第7段階 APIキーを使う Claude Code 自律運用マスター講座 | うさうさ研修工房 41
公式ドキュメントと版数の確認 Official sources — check the version before you record /goal(日本語) https://code.claude.com/docs/ja/goal /loop とスケジュール比較 https://code.claude.com/docs/ja/scheduled-tasks Headless mode(claude -p) https://docs.claude.com/en/docs/claude-code/headless Agent SDK overview https://code.claude.com/docs/en/agent-sdk/overview Claude Code GitHub Actions https://code.claude.com/docs/ja/github-actions claude-code-action https://github.com/anthropics/claude-code-action Introducing routines https://claude.com/resources/articles/introducing-routines-in-claude-code /goal は Claude Code v2.1.139 以降が必要。収録時点の版数を冒頭で表示する Claude Code 自律運用マスター講座 | うさうさ研修工房 42
NEXT STEP 手を離す前に、止め方を決める 最終課題の1週間ログを、Q&Aで共有してください Decide how it stops before you let it run. 講師:石黒友季子(うさうさ研修工房)