AIエージェントがすごく流行っていますが、だいたいVSCode関連で悲しいです。
JetBrainsにも欲しいです。
ということで、作ってみました。
Clineの最初期のバージョン(Claude Dev 1.0.4)をIntelliJプラグインとして再実装しています。
バグや未実装の機能がたくさんあるので実用に耐えうるものではありませんが、それっぽく動作するものは作ることができました。
デモ
実装
バックエンド
バックエンド(Claudeと通信する部分)は、大部分がClineをそのままKotlinに書き換えたものです。
ClaudeDev.tsがCline.ktに、ClaudeDevProvider.tsがClineService.ktに書き換えられています。
tree-sitterはKotlinで実装するのが面倒そうだったので、node.jsで無理やり実行するという方法を取っています。
val commandParts = if (System.getProperty("os.name").lowercase().contains("win")) {
listOf("cmd", "/c", "node ${jsFile.absolutePath} $strPath")
} else {
listOf("node", jsFile.absolutePath, strPath)
}
val commandLine = GeneralCommandLine(commandParts)
commandLine.charset = StandardCharsets.UTF_8
val processHandler = OSProcessHandler(commandLine)
UI
SwingとKotlin UI DSLを用いて構築しています。データのバインドがうまくいけばWebViewのほうが楽だと思います。
Clineからの変更点
通信
バックエンド → UI へのイベントの送信は、IntelliJプラグインのメッセージバスを使用しています。
設定
今後の展望など
既知の問題
- メッセージがマークダウンに対応していない
- "start new task"を押したときにうまく始まらない
- IDEを終了せずに別のプロジェクトを開いたとき、元のプロジェクトのパスをベースにしてタスクを開始してしまう
感想
ロジックを丸写ししているおかげか、思ったよりも楽に再実装を作ることができました。この調子でアップデートしていきたいですね。