powered by TechFeed
表示モード
エンジニア向けニュース

コーディングエージェントをコーディングエージェントで作る — Simon WillisonのOSSツール「llm-coding-agent」がアルファ公開

7月2日、Simon Willisonが「Release: llm-coding-agent 0.1a0」と題した記事を公開した。自身のLLMライブラリをベースに構築したコーディングエージェントのOSS初回リリースについて詳しく紹介している。

7月2日、Simon Willisonが「Release: llm-coding-agent 0.1a0」と題した記事を公開した。自身のLLMライブラリをベースに構築したコーディングエージェントのOSS初回リリースについて詳しく紹介している。


LLMライブラリがエージェントフレームワークに進化

近年、LLMがコードを読み書きし、テストを実行しながら自律的に開発タスクをこなす「コーディングエージェント」への関心が急速に高まっている。Claude CodeやGitHub Copilot Workspaceなど商用ツールが台頭する一方、OSSベースで自前のエージェントを構築・カスタマイズしたいという需要も増えている。そうした文脈の中で登場したのが今回の llm-coding-agent だ。

Simon Willisonは、CLIからLLMを操作するPythonライブラリ llm を開発・メンテナンスしている。OpenAI・Anthropic・Geminiなど主要プロバイダーをプラグインで切り替えられるこのライブラリは、PyPIで数十万件規模のダウンロード実績を持ち、LLMをCLIやPythonスクリプトから手軽に扱うツールとして広く使われている。このllmが最近エージェントフレームワークとしての性格を帯びてきたことを受け、「シンプルなコーディングエージェントを作ったらどうなるか」を試した成果物が今回の llm-coding-agent(バージョン0.1a0)だ。

興味深いのはその開発プロセスである。WillisonはClaude Codeに対して2つのプロンプトを投げた。

1つ目:

Write a spec.md for this project - it will depend on the latest "llm" alpha from PyPI and implement a Claude code style coding agent complete with tools for reading and editing files and executing commands

2つ目:

Commit the spec, then build it using red/green TDD in a series of sensible commits (each with passing tests and updated docs) - occasionally manually test it using the OpenAI API key in your environment

つまり、コーディングエージェントをコーディングエージェントで作ったという構造になっている。生成されたspec.md、README、コミット履歴はすべてGitHubで公開されている。


すぐに試せる:uvxで1行インストール

PyPIにアルファ版(プレリリース扱い)として公開済みのため、以下のコマンドだけで即座に試せる。

uvx --prerelease=allow --with llm-coding-agent llm code

uvxuvに付属するツール実行コマンドで、仮想環境を作らずにPythonパッケージを一時的に実行できる。なお元記事では本パッケージを「slop-alpha」と表現しているが、これはWillison自身による謙遜的な自己評価であり、「AIが生成した粗削りなアルファ版」程度の意味合いで使われている。


実装された6つのツール

エージェントが内部で使うツール群は tools.py に実装されており、llm toolsコマンドで一覧表示できる。実装されたツールは以下の6つだ。

ツール名 概要
edit_file ファイル内の文字列を完全一致で置換。差分を返す
execute_command シェルコマンドをルートディレクトリで実行。タイムアウト最大600秒
list_files globパターンでファイル一覧。.gitignore対応、最大200件
read_file 行番号付きでファイル読み込み。ページング対応
search_files 正規表現でファイル内容を検索。最大100件
write_file ファイルの新規作成または上書き。親ディレクトリも自動生成

edit_fileの設計が丁寧で、old_stringはファイル内容と空白を含めて完全一致しなければならず、曖昧な編集を防いでいる。変更後は差分(diff)を返すため、エージェントが変更内容を自己検証できる。


Python APIも自動生成された

Willisonが依頼していなかったにもかかわらず、Claude Codeは以下のようなPython APIも実装した。

CodingAgent(model="gpt-5.5", root="/path", approve=True).run("Fix the failing test in tests/test_parser.py")

ここで使われているgpt-5.5はOpenAIのモデル名であり、llmライブラリ経由で指定している。Willisonはこの自発的なAPI実装を「頼んでいないのに実装されていて嬉しかった」と記している。


--yoloモードの実動作

llm code --yoloはすべての操作を自動承認するモードだ。Willisonがこのモードで以下のプロンプトを試した。

mkdir /tmp/demo and then in that folder create a simple swiftui CLI app for telling the time in ascii art

実行したのは前述のGPT-5.5で、「SwiftUIはCLIに向かない」と自ら判断してアーキテクチャを切り替え、swift run AsciiTimeでASCIIアート時計を出力するアプリを完成させた。実行トランスクリプトも公開されている。

      █    █████         ████     █             █     ███
     ██    █        █        █   ██      █     ██    █   █
      █    ████           ███     █             █       █
      █        █    █        █    █      █      █      █
     ███   ████          ████    ███           ███   █████

--yolo以外にも、--allow "pytest*" --allow "git diff*"のように許可するコマンドパターンを明示的に指定する使い方もREADMEに記載されている。


このリリースはあくまで0.1a0の初回アルファ版だが、CLIとPython APIの両方が揃っており、llmライブラリを使った自前エージェント実装のリファレンスとして参照できる内容になっている。

詳細はRelease: llm-coding-agent 0.1a0を参照していただきたい。