AIのソースコード:入手先とコーディングエージェントの実際の仕組み

AIのソースコード:入手先とコーディングエージェントの実際の仕組み

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. ユーザーがタスクを説明します。
  2. モデルがタスクを計画に変換します。
  3. エージェントがツールを呼び出してコードベースを調査します。
  4. ランタイムがそれらのツール呼び出しを分離されたワークスペースで実行します。
  5. モデルが結果を読み取り、次に何をするかを決定します。
  6. システムが差分、テスト出力、レビュー担当者が検証できる要約を返します。

このチェーンは、個々のベンチマーク数値よりも重要です。モデルがワンショットのコード生成に優れていても、ツール呼び出し、長いコンテキスト、エラー回復に苦労すると、エージェントとしては失敗する可能性があります。

プランニングループに飛び込む前に、このスタックにうまく適合する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と分離されたサンドボックスランタイムを組み合わせてください。

そのため、オープンコーディングモデルと管理された実行境界の組み合わせが、最も実用的な道であることが多いのです。モデルレイヤーで柔軟性を維持しつつ、プライマリマシン上のモデルに生のシェルアクセスを渡すことは避けられます。

FAQ

AIのソースコードはどこで見つけられますか?

通常、モデルリポジトリ、エージェントリポジトリ、サンドボックスまたはランタイムドキュメントの3つの場所にあります。オープンソースのコードエージェントが必要な場合は、一般的なモデルリポジトリではなく、OpenHands、Goose、Qwen Codeなどのエージェントプロジェクトから始めてください。

オープンソースのコードエージェントとは何ですか?

プロジェクト内でファイルを検査し、タスクを計画し、ツールを使用し、コマンドを実行し、出力を修正できるエージェントです。コードアシスタントとの重要な違いは、生成だけでなくアクションです。

モデルのソースコードだけでAIコーディングエージェントを構築できますか?

いいえ。モデルだけでは、リポジトリへのアクセス、ツール配線、実行制御、ログ、プレビュー、分離は得られません。それでも、エージェントループと、モデルのアクションが安全に実行できるランタイムが必要です。

オープンコーディングワークフローで最初にテストすべきモデルはどれですか?

コーディングエージェント専用に構築されたオープンモデルが必要な場合、Qwen3-Coderは有力な選択肢です。現在のQwen3-Coderリポジトリは、エージェント的コーディングと長いコンテキストサポートを重視しており、Novitaは同じAPIを通じて複数のQwen3-Coderバリアントを公開しています。

コーディングエージェントにサンドボックスが必要なのはなぜですか?

コマンドを実行し、依存関係をインストールし、ファイルを変更するためです。サンドボックスはエージェントに分離されたランタイムを提供し、タスクの状態を保持し、モデルが誤ったことをしたときの影響範囲を制限します。

おすすめ記事