gakonst/nanocodex
Building blocks for frontier OpenAI agents in Rust. Nanocodex empowers you with Codex-level performance anywhere.
Nanocodex – OpenAI駆動のコードアシスタント向けライブラリファーストSDK
何であるか – Nanocodexは、ヘッドレスなRustライブラリ(JavaScript/Node、ブラウザ、Python用のバインディング付き)であり、gpt-5.6-solシリーズ向けにOpenAI Responsesインタラクションループを完全に実装しています。埋め込み可能なコードアシスタントを提供し、そのライフサイクル(プロンプト順序付け、ツール呼び出し、コード実行、サブプロセスのクリーンアップ、スナップショット、分岐など)はライブラリが所有するため、アプリケーションはそのような実装を再設計する必要がありません。
なぜ重要か – 大規模言語モデルを基盤とする信頼性の高い「コードアシスタント」を構築するには、通常、以下を組み合わせる必要があります:
- プロンプト順序付けキュー
- モデルへの永続的WebSocket接続
- リトライ/コンパクションロジック
- ツール実行のサンドボックス化
- セッション履歴、スナップショット、サブプロセスのクリーンシャットダウン
Nanocodexはこれらを一度だけ実装し、非常に小さな型安全APIを公開します。開発者はオーケストレーションランタイムの実装ではなく、製品のUI、永続化、カスタムツールに集中できます。
コア機能
| 機能 | 得られるもの |
|---|---|
| 型安全なターン処理 | prompt()はTurn未来を返す;ターンはオプションのイベントストリーム(例:ツール呼び出し、使用統計)も生成する。 |
| 保持されたセッション履歴 | アシスタントは完了した応答の権威あるFIFO履歴を保持;新しいプロンプトは差分のみ。 |
| 組み込みツールエコシステム | ワークスペースツール(ファイル操作、シェル実行、パッチ適用、画像表示)、ウェブ検索、画像生成、およびコードモードJavaScriptサンドボックス(モデルが任意のJSを実行可能で、await tools.<name>(...)でツールを呼び出せる)。 |
| 分岐とスナップショット | spawn()、fork()、fork_from()で、プロセス全体のコピーなしに新しいアシスタントを作成またはチェックポイントから再開可能。 |
| 耐久性レイヤー(オプション) | SQLite/Postgresバックエンド付きの追加のみジャーナル;リプレイ、重複排除、クラッシュ安全な復旧を提供。 |
| サブアシスタント | 軽量なタスクツリー登録システムで、コードモードから利用可能なオーケストレーションプリミティブ(spawn、wait、interrupt)を提供。 |
| マルチホスト対応 | 同じRustコアがネイティブ、WASMワーカー(ブラウザ)、PyO3(Python)で動作。JavaScriptバインディングはNodeまたはブラウザ向けにAgent、Transport、Subagentsを公開。 |
| OpenAI専用 | gpt-5.6-solシリーズ(デフォルトsol、terra、lunaもサポート)を直接サポート。汎用プロバイダ抽象化なし – ライブラリがResponses WebSocketの振る舞いを完全に管理。 |
言語とエントリポイント
| 言語 | パッケージ / クレート | 一般的なエントリポイント |
|---|---|---|
| Rust | nanocodex(クレート) |
Nanocodex::builder(OpenAi::new(...)).build()? |
| JavaScript / Node | nanocodex npmパッケージ |
import { Agent, Transport } from "nanocodex/node" |
| ブラウザ / WASM | 同じnpmパッケージ(nanocodex/browser) |
Agent.create({ transport: Transport.hostManaged(...), ... }) |
| Python | PyO3ウェHEEL(PyPIのnanocodex) |
Nanocodex(api_key, instructions=...) |
一般的な使用パターン(Rust例)
let openai = OpenAi::new(std::env::var("OPENAI_API_KEY")?)?;
let (agent, _events) = Nanocodex::builder(openai)
.instructions("You are a Rust coding agent.")
.workspace(std::env::current_dir()?)
.build()?
let turn = agent.prompt("Fix the failing parser test.").await?;
let result = turn.await?; // typed TurnResult
println!("{}", result.final_message());
agent.shutdown().await?;
同じフローはJavaScript(turn.result())およびPython(agent.prompt(...).result())でも利用可能。
Nanocodexを使うべき状況
- プロダクトチーム:IDE拡張、CIボット、低コードプラットフォームを構築し、OpenAI会話ループを再実装せずに信頼性の高い「コード修正」または「コード生成」アシスタントを必要とする。
- 研究プロトタイプ:カスタムツール、分岐、耐久的チェックポイントの実験をしたいが、コアアシスタントは安定したままにしたい。
- フルスタックアプリケーション:同じアシスタントがサーバー(Rust/Node)とブラウザ(WASM)で動作し、ユーザーにページ内コードワークスペースを提供する。
- 音声対応アシスタント – ライブラリは既に音声クライアントを提供;独自のオーディオパイプラインを接続しても、同じセッション管理の恩恵を受けられる。
インストールクイックスタート
# Rust
cargo add nanocodex
# Node (>=22.13)
npm install nanocodex
# Python(ソースチェックアウトから)
uv venv --python 3.11 py/bindings/.venv
uv pip install -r py/bindings/requirements.txt maturin
py/bindings/.venv/bin/maturin develop --manifest-path py/bindings/Cargo.toml
または、READMEに示されたワンライナーでmacOSまたはLinux用の事前ビルドCLI/TUIバイナリを入手可能。
成熟度と状態
- Crates.io版は公開済みで、Linux/macOSでCIテスト済み。
- コアアシスタント、耐久性レイヤー、ツールクレートは安定版;ブラウザ専用および実験的VMクレートは非公開/実験的とマーク。
- ドキュメントはdocs.rsおよび各クレートのリポジトリ内
READMEに利用可能。 - ミニマル、ライフサイクル、分岐、サブアシスタント、ブラウザ、React、Vercelワークフローなど、参考実装としての例が多数提供されている。
TL;DR
Nanocodexは、1つの型安全なRust所有SDKを提供し、OpenAIコードアシスタントのライフサイクル全体(プロンプト順序付け、ツール実行、分岐、スナップショット、クリーンアップ)を処理します。JavaScript/Node、ブラウザ、Python向けに薄いバインディングを公開し、開発者がオーケストレーションのグルーを書かずに、完全機能のコードアシスタントを任意の製品に埋め込めるようにします。
関連
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト