2 ポイント 投稿者 GN⁺ 2024-11-09 | 1件のコメント | WhatsAppで共有
  • Codebuffは、ターミナルで自然言語で作業内容を入力するとコードベースを読み取り、ファイルの修正・生成まで行うCLIツールで、npm i -g codebuffでインストール後、ログインゲートなしですぐに使える
  • 入力フローを1段階に減らし、ユーザーは望む作業だけを入力すれば、テスト実行、型チェッカー実行、パッケージインストールまで依頼遂行の過程に活用される
  • 内部ではtree-sitterで11言語の関数・クラス名などのシンボルを解析してコードベースマップを作り、Claude Haiku 3.5のプロンプトキャッシュとClaude/OpenAI呼び出しを組み合わせている
  • エージェントは関連ファイルをコンテキストに入れた後、XMLタグ形式のツール呼び出しでedit_file、ターミナルコマンド実行、追加ファイル読み取り要求を処理する
  • すべてのアカウントに最大**$20相当のクレジットが提供され、さらに多くのクレジットは月額$99**プランで提供されるが、大きなコンテキストと高価なLLM呼び出しのため競合製品より高いと明かしている

ターミナルで自然言語によるコード修正

  • Codebuffは「ターミナル内のCursor Composer」のように動作するCLIツール
    • 自然言語で望む変更を入力してEnterを押すと、コードベースを調べた後にファイルを修正する
    • 既存ソースファイルの修正と新規ファイルの作成の両方が可能
    • テスト、型チェッカー、パッケージインストールを実行して依頼を完了できる
  • インストールと開始はnpm i -g codebuffで可能
    • ログインゲートなしですぐに使える
    • すべてのアカウントに最大**$20相当のクレジット**を提供する
  • デモ動画: YouTube

初期実験から製品化まで

  • 初期アイデアは、hackathonでSonnet 3.5を試したことから始まった
    • 最初のスクリプトはコードベースのコンテキストを一度に取得し、第2段階でファイルを書き直す構造だった
    • この2段階プロセスは現在のCodebuffにも残っている
    • 初期デモでは有用なコードを作れなかった
  • コードベース固有の知識をモデルに渡す中で、knowledge.mdというアイデアが生まれた
    • 以前のスタートアップのサーバーではエンドポイントを作るのに特定のファイル3つを修正する必要があったが、モデルはそれを知らなかった
    • 新人に説明するようにコードベースガイドをMarkdownファイルで書き、Sonnet 3.5のシステムプロンプトに入れるとコード品質が大きく向上した
    • Codebuffは現在も、各リクエストで自動的に読むknowledge.mdファイルを使っている
  • YC面接直前には、ファイル編集の安定性が最大のボトルネックだった
    • さまざまなプロンプト戦略で元ファイルの文字列置換を試したが、安定して動作しなかった
    • 面接前日にGPT-4oをファインチューニングし、Claudeが描いた変更スケッチをgit patchに変換させた
    • 翌日に動作し、YC面接の直前に本番へデプロイした

コードベースマップとエージェント実行フロー

  • 実行すると、現在のディレクトリとその配下のディレクトリのソースファイルを走査してコードベースマップを作る
    • tree-sitterで11言語の関数・クラス名、またはそれに準ずるシンボルを解析する
    • ファイルツリーとシンボル情報をあわせて使う
    • Claude Haiku 3.5に依頼してコードベースのコンテキストをキャッシュし、ユーザー入力への応答遅延を下げる
  • ユーザーがメッセージを送ると、Claudeがまず関連ファイルを選ぶ
    • 選ばれたファイルをコンテキストに読み込んだ後、エージェントが応答する
    • ツール呼び出しはXMLタグで書かれ、解析される
    • 例として、<edit_file path="src/app.ts">…</edit_file>形式のファイル修正タグがある
    • 別のタグでターミナルコマンド実行や追加ファイル読み取り要求も可能

サーバー構成とインフラ

  • サーバーはAnthropicまたはOpenAIへメッセージを渡す構造で、状態を保存しない
    • クライアントとサーバー間のデータ移動にはwebsocketを使う
    • 最初の3か月間は認証やデータベースなしで、無料インストールと自前のAPIキーによるリクエスト処理を行っていた
  • その後、製品運営に必要な構成要素を追加した
    • Postgres + Drizzleデータベース
    • Bunサーバー
    • Renderホスティング
    • Auth.js認証
    • NextJSウェブサイト
    • Stripe決済
    • BetterStackロギング
    • Retoolダッシュボード

価格、ユースケース、SDK

  • 価格は、制限付きの無料利用枠と月額**$99**の有料プランで構成される
    • 有料プランはより多くのクレジットを提供する
    • より大きなコンテキストと高価なLLM呼び出しのため、競合製品より高いと明かしている
  • 実際のユースケースには、Flutterアプリ生成、単体テスト作成、反復修正、繰り返し作業の自動化が含まれる
    • あるユーザーは2つのFlutterアプリを並行して作り、$500の請求額を発生させたが、生成されたコードを直接見ないままCodebuffとの長い会話を通じてアプリを完成させた
    • 複数のユーザーが週末の間にチーム用または個人用の実用アプリを作った
    • よく使われる一般的な用途は、単体テスト作成、テストが通るまでコード修正ループを回すこと、OAuthフロー設定、APIスキャフォールディング作業など
  • 自社システムでCodebuffを使いたいユーザー向けにalpha SDKも提供している
    • アプリが同じ自然言語インターフェースを呼び出し、コード編集を受け取れる
    • early access申請リンク: Retool form

1件のコメント

 
GN⁺ 2024-11-09
Hacker Newsの意見
  • Codebuffのリリースを祝福するが、Aiderと非常によく似ているように見える。Aiderはオープンソースで、ファイル追加を依頼する際は承認するだけでよい。Aiderはコマンド実行も可能。何が違うのか気になる

  • デモはいつも単純なプロジェクトにしか適用されず、実際の複雑なプロジェクトに関する例が不足している。PRの難しい部分を解決する助けが必要だ。多くのツールは着手を助けてくれるが、問題解決には不十分

  • SSHキーとクリップボードを複数のサードパーティーに送るために20ドル払いたくない。ネットワーク呼び出しなしでインラインシェル対応を提供するソフトウェアを買いたい。こうした製品に対する一般的な意見だ

  • Codebuffは以前manicodeとして知られており、複雑なリファクタリング作業に有用。Rustプロジェクトでファイルをモジュールディレクトリに分割するのに使い、テスト実行とコンパイルエラー確認が可能だった。この作業で約100クレジット使用した

  • コードがサーバー経由で送信されるのか気になる。ローカルサービスとして実装するほうが良さそうだ。LLMがファイル損失を引き起こしかねないコマンドを受け取れるのか、それをどう防ぐのか気になる

  • LLMが人間のレビューなしにコマンドを実行するのは危険で、セキュリティ上脆弱だ

  • すでに AIDE、Continue、Cody、Aider、Cursor がある。なぜこのツールを使うべきなのか気になる

  • このツールを使ってみたが、CoPilotやCursorより優れている点がある。特にCoPilotとは違って、エディタと「競合」している感じがしない。セキュリティ面の懸念があり、機密ファイルをどう扱うのか気になる

  • コード品質の面でCursorより優れているのか気になる。Cursorを使ってファイルをコピーする時間を節約している。今でも chatGPT/claude インターフェースを使ってコーディングしている

  • GPT-4oをファインチューニングして、Claudeの変更スケッチをgitパッチに変換した。訓練データは夜遅くに生成され、ファインチューニングのジョブは寝ている間に実行された。訓練データの全内容と、変更スケッチおよびgitパッチがどのように機能したのか気になる