🤖

ClineをDevin化して、slack上で完結させるための検証してみた

2025/01/12に公開

DoneとTodo

やっていること

  • ユーザーへの返答をslackで受け取る
  • slackから /approve /rejectが送れる
  • タスクごとにスレッドが分かれるので、複数立ち上げても別々に使える
  • タスクの初回送信をslackから行うこと(面倒なのでcut、メソッドも用意されているし簡単ではある)(更新 1/15)

できていないこと

  • /approve, /reject以外の処理
  • ユーザーの返答のformat
  • ポーリングで無理やりスレッド監視しているので、websocket化など

検証したリポジトリ

https://github.com/tesla0225/cline
https://github.com/cline/cline/commit/5e0798b08c4935e08ab8507964e98e66ac3ec33d

実行例(適当ですみません)

実装方針

  • 最初はslackのboltを組み込んで実行しようとした
  • どうも立ち上げはうまくいくが、その他の部分が密になっていて難しそう
  • 内部的にMCPを呼び出せば応答がうまくいくことがわかった

commit説明

cleanupMessageForSlackをしないと、ノイズのようなデータがすごく乗るので一旦json全部削除した(これにより一部のデータを受け取れなくなっているので要修正)

https://github.com/cline/cline/commit/09ebae372777699502380a218d0401c9652d1c0d

3sごとのポーリングでスレッドを監視、タスクの終了時にこのwatchThreadRepliesは破棄される
スレッドの内容に応じてhandleWebviewAskResponseで対応する

https://github.com/cline/cline/commit/5e0798b08c4935e08ab8507964e98e66ac3ec33d

感想

Devinくらいまで自律は難しいかもしれないが、この上のレイヤーでもうまいことワークフローを組んであげれば
$500も払わなくても自前で構成できそうだなと思った。

ちなみに一行も手で書いてないです。cursor Agent万歳

Discussion