迷子になるのをやめたかった
AIエージェントに仕事を振るようになってから、エディタの使い方が変わりました。1つのターミナルで1つのエージェントと話すのではなく、3本も4本も同時に走らせる。すると、どの返事がどのプロジェクトのもので、いま自分が打ち込んでいる指示がどのブランチに効くのかが、すぐに分からなくなります。私の場合、それで別のworktreeに指示を出してしまったことが何度もありました。
necoderは、その混乱を色と表示で潰します。プロジェクトとブランチには色が割り当てられ、サイドのレール、タブの下線、キャレット、AIスレッドのタブまで同じ色が通る。色は識別のためだけに使い、装飾には使いません。指示を打ち込む欄の上には「このスレッド → このプロジェクト ⎇ このブランチ」という宛先チップが常に出ています。
エージェントのマルチプレクサ
Fleetモードは、複数のエージェントを1画面で並走させるための画面です。それぞれのエージェントはgit worktreeで隔離されるので、同じリポジトリを触っても互いの作業を壊しません。全体を見る采配役のスレッド(Captain)を置くこともできます。タスクはMarkdownファイルが実体で、終わった項目はエージェントが自分でチェックを入れていきます。
エージェントはACPという公開プロトコルで繋ぎます。claude CLIなどと直接話すので、契約中のサブスクリプションがそのまま使えて、別途のAPIキーは要りません。necoder自身はLLMを同梱しませんし、鍵を預かることもありません。
Electronを使わない
UIはRustとGPUIで全部ネイティブに描いています。WebViewが出てくるのはHTMLプレビューのときだけで、ブラウザエンジンは同梱していません。起動は約215ms、待機時のメモリは約120MB、5万ファイルのプロジェクトでも ⌘P の絞り込みは約10ms。編集コアの操作はマイクロ秒台で、CIでベンチマークを監視しています(いずれも開発機での実測値で、公式ベンチマークではありません)。
Remote SSHにも対応しました。サーバ側に置くのは約2.4MBの静的musl バイナリ1つで、Node.jsはどちら側にも要りません。手元のOpenSSHの設定・鍵・ProxyJumpをそのまま使います。
立ち位置について
necoderはZedのフォークではありません。UIフレームワークのGPUI(Zedが開発・Apache-2.0)を依存として使っているだけで、Zedのアプリケーションコードは複製も移植もしていません。ACPもZedが策定した公開プロトコルで、necoderはその実装側です。
それから、これは株式会社GENSHI AIの製品ではなく、私の個人プロジェクトです。AGPL-3.0で、無料で、テレメトリは一切ありません。necoderの開発はnecoderの中で行っています。毎日使って、引っかかったところをその場で直す。それだけが機能の決め方です。