コンテンツにスキップ

English · 日本語

Claude を使う機能と使わない機能

「Bajutsu のどの部分がモデルに到達し、どの部分が何も設定せずに動くのか」に対する正本です。これは ツールの一級の性質であり、テストで保証されています (BE-0101)。 同じ線の反対側にある「あなたの AI、あなたのキー、あなたのデータ」という保証 (self-hostingBE-0047) の、開発体験の面で対をなすものです。

関連: cli · concepts · recording · self-hosting


肝心の一線

Bajutsu はアーキテクチャに明確な線を引いています。決定論的な run と CI ゲートはモデルを一切 呼ばず、Claude に到達するのは Tier 1 の作成と調査の経路だけです。軸は、特定の資格情報があるか どうかではなく、経路がそもそも Claude を呼ぶかどうかにあります。Claude へは四つの方法で到達できる ため(Anthropic API、Amazon Bedrock、ブラウザ経由の OAuth(SSO)でサインインする Anthropic CLI ant、または Claude の Pro / Max / Console のシートを使う Claude Code CLI claude)、「API キーが 要る」という捉え方は、区切りの軸として誤りです。正しい軸は「Claude を使う」であり、プロバイダが 増えても正しいままです。

Claude を使わない側のすべては、設定ゼロで動きます。資格情報も .env もログインも、いかなる AI の ランタイムも要りません。リポジトリをクローンした直後からそのまま動きます。

分離

コマンド / 経路 何をするか
Claude 不要(設定ゼロ) run シナリオを決定論的に実行する。合否は機械判定のみで、モデルは関与しない
doctor 環境が実行可能かを確認し、現在の画面を採点する
codegen シナリオからネイティブの XCUITest ソースを生成する
trace 保存済みの実行をテキストのタイムラインとして表示する
lint / schema 実行せずにシナリオを検証する、または JSON Schema を出力する
approve 実行のスクリーンショットを視覚ベースラインに昇格させる
audit / coverage / impact / flakiness シナリオの決定論性を採点する、id 名前空間の網羅状況を調べる、ソースの変更が影響しそうなステップを示す、検証結果のブレでシナリオを順位付けする(いずれも助言的)
report / export / stats 完了した実行を再描画する、アーカイブする、実行ディレクトリ全体をスイート全体の傾向に集計する
mcp / worker run / doctor を MCP ツールとして提供する、またはバックグラウンドのジョブワーカーを動かす
serve ローカルの Web UI。何も設定せずに起動し、Claude のタブは無理なく縮退する
triage ルールベースのエージェントで失敗した実行を診断する(--ai なし)
Claude を使う record Claude でアプリを操作しながらシナリオを作成する
crawl Claude で自律的にアプリを探索し、画面マップを作る
triage --ai ルールベースの代わりに Claude で失敗した実行を診断する

分類はコマンド名ではなく経路の粒度です。triage は Claude を使わず、--ai フラグ一つで Claude の 経路に切り替わります。runBE-0402 以降、フラグで開く例外を1つも持たないまま Claude を使いません。アラートガード(--system-alert-handling。シナリオごとに既定で有効)がかつての 例外でした。ネイティブの SpringBoard 経路がプロンプトを名指しできないとき、ガードがスクリーンショットを モデルに読ませ、返ってきた座標をタップしていたからです。そのフォールバックは run から取り除かれたため、 ガードは資格情報を必要とせず、参照もせず、名指しできないプロンプトには手を触れません。代わりに、ブロック されたステップ自身の失敗理由でそのプロンプトを名指しします。

この分離は Tier 1 と Tier 2 の境界を目に見えるようにしたものです。ここに run や CI ゲートへモデルを持ち込む変更はありません。

どこで見えるか

分類は一度だけ(bajutsu/capabilities.py に)定義し、あらゆる場所がそれを参照します。そのため表示面が 食い違うことはありません。

  • bajutsu --help は、各トップレベルコマンドを Claude-free (zero-config)Uses Claude のいずれかにまとめて表示します。
  • doctor は、Claude の準備状況を独立した明らかに任意の節として報告します。AI の準備が無い ホストでも決定論的な経路については Ready と採点され、Claude は別立ての「not configured (optional)」の 行として示されます。阻害要因と混同されることはありません。
  • serve は Claude のタブ(recordcrawl)を見せたうえで、Claude に到達できないときは インラインの説明とともに無効化し、UI 内のキー入力欄へ誘導します。キーを設定するか、Bedrock を 構成するか、ant CLI か claude CLI にサインインした時点で、タブはすぐに有効へ戻ります。

Claude の経路をインストールする

この分離は実行時だけでなく、パッケージングの境界でもあります(BE-0111)。 AI のソフトウェア開発キット(SDK)は任意インストールの extra なので、基本インストールは AI の依存を 一切含みません。

  • pip install bajutsu:決定論的なオーサリングと実行の経路(rundoctorlintcodegentraceapprove など、上記の Claude-free 列すべて)です。AI SDK はインストールされず、ここから モデルに到達することはありません。
  • pip install bajutsu[ai]:Claude の経路(recordcrawltriage --ai)を API キー・Bedrock・ant の各プロバイダで使うために、Anthropic の SDK を追加します。Amazon Bedrock プロバイダを使う場合は代わりに bajutsu[bedrock] を指定します。同じ SDK の上に Bedrock 版を 重ねる形になります。claude-code プロバイダはどちらの extra も不要です。SDK ではなく外部の claude CLI を呼び出すためです。

コントリビュータは uv sync --group dev ですべての extra をまとめて導入するため、ゲートは変わらず Claude の経路をテストし続けます。AI-free の保証はあくまで基本インストールに関するものであり、 テストの網を外すという意味ではありません。

使いたいときに Claude へ到達する

次のいずれか一つで「Claude を使う」経路が満たされます(詳細は self-hostingrecording にあります)。

  • Anthropic APIANTHROPIC_API_KEY(または ai.keyEnv が指す環境変数)を設定します。
  • Amazon Bedrock:標準の AWS 資格情報チェーンに加え、プロバイダ接頭辞つきのモデル id(ai.model または $BAJUTSU_BEDROCK_MODEL)を用意します。
  • Anthropic CLI(antai.provider: ant を設定して ant auth login を実行します。キーの 代わりに Claude の Pro / Max / Console のシートを使います(BE-0163)。
  • Claude Code CLI(claudeai.provider: claude-code を設定してサインインします (claude setup-token、または対話的なログイン。ブラウザのないホストでは代わりに CLAUDE_CODE_OAUTH_TOKEN を設定します)。こちらもキーの代わりに Claude の Pro / Max / Console の シートを使います(BE-0176)。

どの手段で認証するかは設定の問題です(BE-0047BE-0053BE-0163BE-0176 に従います)。どれを選んでも、上記の分類は変わりません。

AI 経路を一行で止める

上に挙げた手段はどれも任意導入なので、何も設定しなければモデルには到達しません。ただしその沈黙は、 リポジトリ上の表明ではなく環境の偶然です。意図はレビュアーが読める場所のどこにも残りません。 しかも、1つのシナリオを record で書くために export したキーは、以後のどのシェルでも recordcrawl をモデルに接続したままにします。プロバイダを none に設定すると、この方針を 表明できます(BE-0394)。

defaults:
  ai:
    provider: none      # このリポジトリでは AI 経路を一切走らせない

この一行をコミットすると、執筆と調査の 3 つのコマンド(recordcrawltriage --ai)は 起動せずに設定名を告げて終了し、どのコード経路も AI バックエンドを構築できなくなります。 run はどちらの向きにも無関係です。BE-0402 がモデルへ到達しうる唯一の経路を取り除いたため、 無効にすべき AI 経路をそもそも持ちません。config の ai.provider$BAJUTSU_AI_PROVIDER より優先されるため、環境を誰も管理していない継続的 インテグレーション(CI)のランナーでもこの設定は効きます。優先順位の詳細と、 none を提示しない serve の Settings のドロップダウンという唯一の例外は、 設定にあります。