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
uvxはuvに付属するツール実行コマンドで、仮想環境を作らずに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を参照していただきたい。