AIのソースコードを検索している場合、通常は次の3つのうちのいずれかが必要です:モデルコードと重み、計画を立ててツールを使用できるオープンソースコードエージェント、またはモデルがファイルを読み取り、コマンドを実行し、レビュー可能な結果を返すアプリケーションスタック。これらのレイヤーは関連していますが、同じ製品ではありません。この領域を理解する最速の方法は、モデル、エージェントループ、そして作業を実行するサンドボックスランタイムを分離することです。
「AIのソースコード」の通常の意味
このフレーズは非常に広範であり、二人の人が使ってもまったく異なる意味を指すことがあります。
時にはモデルのソースコードを意味します:トレーニングコード、推論コード、トークナイザーロジック、オープンモデルのダウンロード可能な重み。時にはエージェントソフトウェアを意味します:ターミナルやブラウザに常駐し、リポジトリを読み取り、タスクを計画し、コードを書き、テストを実行し、自身の出力を修正するツール。時にはそのエージェントを支える製品の足場を意味します:API呼び出し、認証、サンドボックスのライフサイクル、ファイル処理、ログ、プレビュー、レビューゲート。
この区別は重要です。なぜなら、オープンモデルを探しているチームは、オープンソースのコーディングエージェントを探しているチームと同じ基準で評価すべきではないからです。
次の簡易フィルターを使用してください:
| 必要なもの… | 探すもの… |
|---|---|
| 実行、ファインチューニング、またはAPI経由で呼び出せるモデル | モデルリポジトリ、モデルカード、ライセンス、コンテキスト制限、ツール呼び出しサポート |
| プロジェクト内で動作できるコーディングツール | オープンソースコードエージェント、CLI、デスクトップアプリ、またはエージェントプラットフォーム |
| プロダクション実行レイヤー | サンドボックスランタイム、ワークスペース分離、パッケージポリシー、シークレット処理、ログ、プレビュー |
AIプロジェクトのソースコードを見つける場所
ほとんどの開発者ワークフローでは、実際の答えは「1つではなく、複数のリポジトリ内」です。
1. モデルリポジトリ
ここでは、モデルアーキテクチャ、使用方法のドキュメント、チェックポイントまたはチェックポイントリンク、ライセンス条項、ベンチマークノートが見つかります。ローカル推論、ファインチューニング、またはモデルがコーディングタスク向けにどのようにパッケージ化されたかを研究することが目的なら、ここから始めてください。
例えば、Qwenの公式 Qwen3-Coder リポジトリは、Qwen3-Coder-Nextをコーディングエージェントとローカル開発専用に構築されたオープンウェイトモデルとして説明しており、長いコンテキストサポートとエージェンティックワークフローを対象とした関数呼び出し形式を備えています。
2. エージェントリポジトリ
ここでは、プランナーループ、ツール配線、ターミナルUX、モデルプロバイダーアダプター、そして時にはブラウザやMCP統合が見つかります。
3つの有用な例:
- OpenHands は、クラウドコーディングエージェントのためのオープンプラットフォームであり、エージェントをローカル、Docker、VM、またはクラウドバックエンドで実行できるコントロールセンターとして位置づけられています。
- Goose は、デスクトップ、CLI、APIの表面を持つオープンソースエージェントであり、コードタスクに限定されず、自分のマシン上で動作します。
- Qwen Code は、Qwenによるターミナル指向のコーディングツールであり、一般的なチャットではなくエージェンティックコーディングワークフローに焦点を当てています。
最初にどのオープンソースコードエージェントを調査すべきかという質問があるなら、モデルの重みではなく、エージェントリポジトリから始めてください。
3. サンドボックスとランタイムのドキュメント
これは多くのチームが最初はスキップし、エージェントが実際の作業を始めたときに戻ってくるレイヤーです。
NovitaのSandboxドキュメントは、ランタイムをコードの実行、依存関係のインストール、ファイルへのアクセス、ブラウザの使用、セッション間の状態保持を必要とするエージェントのための、分離されたステートフル環境として説明しています。それは単なる便利なラッパーではなく、実行の境界です。エージェントがコマンドを実行できるようになると、ランタイムはモデルと同じくらい重要になります。
オープンソースコードエージェントを際立たせるもの
オープンソースコードエージェントは、プロンプトテンプレートを備えた単なるLLMではありません。ワークスペースを観察し、次のアクションを決定し、ツールを通じてそのアクションを実行し、結果を読み取り、反復を続けることができるときにエージェントになります。
そのループは通常、4つの部分を必要とします:
| レイヤー | 役割 |
|---|---|
| プランナー | タスクをステップに分割し、タスクが完了したタイミングを決定する |
| モデル | ファイル、コマンド出力、以前のツール呼び出しについて推論する |
| ツールレイヤー | ファイルの読み取り、ファイルの書き込み、検索、コマンドの実行、プレビューの開始 |
| サンドボックス | 実行を分離し、ワークスペース状態を保持し、副作用を封じ込める |
サンドボックスがなければ、「オープンソースコードエージェント」はしばしば「危険なシェルアクセスを持つモデル」に変わります。
また、ここでスタックはチャット機能というよりもエンジニアリングインフラストラクチャらしくなり始めます。モデルがパッケージをインストールし、ポートを開き、ファイルを書き換えることができるようになると、運用上の質問に答える必要があります:
- エージェントはどのリポジトリ状態から開始するのか?
- どのコマンドが自動的に実行され、どのコマンドに承認が必要か?
- エージェントはパッケージを取得したり、任意のURLを閲覧したりできるか?
- ログ、差分、プレビュー、生成されたアーティファクトはどこに行くのか?
- セッションを一時停止、再開、または強制終了するにはどうするか?
これらの質問は、プロジェクトがデモなのか、チームが信頼できるワークフローなのかを決定します。
実用的なコーディングエージェントアーキテクチャ
AIエージェントのソースコードを考える最もクリーンな方法は、それをチェーンとして捉えることです:
- ユーザーがタスクを説明する。
- モデルがタスクを計画に変換する。
- エージェントがツールを呼び出してコードベースを調査する。
- ランタイムがそれらのツール呼び出しを分離されたワークスペースで実行する。
- モデルが結果を読み取り、次に何をすべきかを決定する。
- システムが差分、テスト出力、レビュアーが検証できる要約を返す。
このチェーンは、単一のベンチマーク数値よりも重要です。モデルが一回のコード生成で優れていても、ツール呼び出し、長いコンテキスト、またはエラー回復に苦労する場合、エージェントとして失敗する可能性があります。
プランニングループに飛び込む前に、このスタックに適したモデルの方向性を1つ挙げておく価値があります。クローズドソースのコーディング品質に近いオープンモデルが必要な場合、Qwen3-Coderは最初に評価する最も実用的なオプションの1つです。Qwenの公式リポジトリは、Qwen3-Coder-Nextをエージェントとローカル開発のためのオープンウェイトコーディングモデルとして説明しており、エージェンティックコーディングタスクでClaude Sonnetに匹敵する結果を提供します。Novitaの現在のモデルカタログでは、LLM APIを通じてQwen3 Coder Next、Qwen3 Coder 480B A35B Instruct、Qwen3 Coder 30B A3B Instructも公開しており、統合を再構築することなく、同じファミリーを異なるコストと品質層でテストすることが容易になります。
Novitaでスタックを構築する方法
個別のプロバイダーをつなぎ合わせる代わりに実用的な出発点が必要な場合、有用な分割は次のとおりです:
- Novita LLM API:推論、生成、ツール呼び出しモデル用
- Novita Sandbox:分離されたコード実行と永続的なワークスペース状態用
NovitaのLLM APIはOpenAI互換であるため、ベースURLとモデル名を変更するだけで、既存のOpenAIクライアントをNovitaに向けることができます。
ステップ1:OpenAI互換APIを通じてモデルを呼び出す
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/openai",
api_key="YOUR_NOVITA_API_KEY",
)
response = client.chat.completions.create(
model="qwen/qwen3-coder-next",
messages=[
{"role": "system", "content": "You are a coding assistant."},
{"role": "user", "content": "Plan the steps to add rate limiting to a FastAPI login route."},
],
)
print(response.choices[0].message.content)
これにより、モデルレイヤーのみが得られます。モデルに安全に行動する場所は与えられません。
ステップ2:ラップトップではなくサンドボックスでコードを実行する
Novitaの現在のSandboxクイックスタートは、Novita SDKオブジェクトを使用して、分離されたコードインタプリタセッションを作成し、コードを実行し、ファイルを検査し、タスクが完了したらサンドボックスをシャットダウンします。
from novita_sandbox import Novita
novita = Novita()
sandbox = novita.code_interpreter.create()
try:
execution = sandbox.run_code('print("hello from the sandbox")')
print(execution.logs)
files = sandbox.files.list("/tmp")
print(files)
finally:
sandbox.kill()
このパターンは、AIコーディングワークフローの最もシンプルで信頼性の高い出発点です:
- モデルが次に何が起こるべきかを決定する。
- サンドボックスが危険な部分を分離された環境で実行する。
- セッションは、各ステップでゼロから開始するのではなく、タスク全体にわたって状態を保持できる。
ステップ3:モデルの決定をツール実行に配線する
ツール呼び出しを追加すると、エージェントループは次のように簡単になります:
| ツール | 目的 |
|---|---|
read_file |
プロジェクトファイルをモデルコンテキストに読み込む |
write_file |
コード変更を適用する |
search_files |
シンボル、ルート、テスト、設定エントリを見つける |
run_command |
テスト、ビルド、リンター、セットアップコマンドを実行する |
list_files |
リポジトリ構造を発見する |
Novitaはまた、OpenAI互換のモデルワークフロー向けの関数呼び出しと構造化出力を文書化しています。これは、ツールの引数が不正形式や不整合である場合にエージェントループが簡単に壊れるため、重要です。実際には、信頼性の高いツール呼び出しは、派手なシングルターンベンチマークよりも重要な場合がよくあります。
オープンソースで十分な場合とそうでない場合
オープンソースは通常、以下の場合に十分です:
- モデルやエージェントの仕組みを調査したい。
- スタックの一部をセルフホストしたい。
- プロンプト、ツール、ランタイムの動作を制御する必要がある。
- 運用作業を自分で引き受けることに抵抗がない。
オープンソースだけでは通常不十分な場合:
- 監査ログとレビューフローを備えた安定したマルチユーザー実行が必要。
- 信頼できないコードに対して十分に強力な分離が必要。
- モデルルーティング、価格の可視性、または1つのAPIの背後にある複数のモデル層が必要。
- エージェントが長時間のタスクにわたって状態を維持できるようにしたいが、そのランタイムを自分で構築したくない。
これが、チームが抽象的に「AIのソースコード」を求めるのをやめ、実際にどの部分を自分たちで所有したいのかを問い始めるポイントです。一部のチームは完全な制御を望みます。他のチームはオープンモデルとオープンソースツールを望みますが、すべてのランタイムコンポーネントを自分たちで実行する負担は望みません。
結論
AIのソースコードに取り組む最良の方法は、それを1つのアーティファクトとして扱うのをやめることです。モデルリポジトリ、オープンソースコードエージェント、サンドボックスランタイムは、異なる問題を解決します。それらを混ぜ合わせると、評価がすぐに曖昧になります。
実際に必要なレイヤーから始めてください:
- ローカルまたはセルフホストのモデル制御が必要?オープンモデルリポジトリから始めてください。
- オープンソースコードエージェントが必要?OpenHands、Goose、またはQwen Codeから始めてください。
- 計画、行動、安全に実行できる動作するコーディングスタックが必要?OpenAI互換のモデルAPIと分離されたサンドボックスランタイムを組み合わせてください。
だからこそ、オープンコーディングモデルと管理された実行境界の組み合わせが、しばしば最も実用的な道です。モデルレイヤーでの柔軟性を保ちながら、プライマリマシン上のモデルに生のシェルアクセスを渡すことを避けられます。
よくある質問
AIのソースコードはどこにありますか?
通常、モデルリポジトリ、エージェントリポジトリ、サンドボックスまたはランタイムのドキュメントの3か所にあります。オープンソースコードエージェントが必要な場合は、一般的なモデルリポジトリではなく、OpenHands、Goose、Qwen Codeなどのエージェントプロジェクトから始めてください。
オープンソースコードエージェントとは何ですか?
ファイルを検査し、タスクを計画し、ツールを使用し、コマンドを実行し、プロジェクト内で出力を修正できるエージェントです。コードアシスタントとの重要な違いは、生成だけでなくアクションです。
AIコーディングエージェントを構築するにはモデルソースコードだけで十分ですか?
いいえ。モデルだけでは、リポジトリへのアクセス、ツールの配線、実行制御、ログ、プレビュー、分離は得られません。エージェントループと、モデルのアクションが安全に実行できるランタイムがまだ必要です。
オープンなコーディングワークフローにはどのモデルを最初にテストすべきですか?
特にコーディングエージェント向けに構築されたオープンモデルが必要な場合、Qwen3-Coderは強力な出発点です。現在のQwen3-Coderリポジトリはエージェンティックコーディングと長いコンテキストサポートを強調しており、Novitaは同じAPIを通じて複数のQwen3-Coderバリアントを公開しています。
コーディングエージェントにサンドボックスが必要なのはなぜですか?
コマンドを実行し、依存関係をインストールし、ファイルを変更するからです。サンドボックスはエージェントに分離されたランタイムを提供し、タスク状態を保持し、モデルが何かを間違えた場合の影響範囲を制限します。
