なんで変数名わかったんですか?エスパーですか? - Devin観察日記

この記事は後編です。前編はこちら。

前回までのあらすじ

Dify Pluginが発表されたので、Devinに作らせた。しかし署名エラーでDifyにインストールできない。よく分からないまま公式パッケージに申請した。

署名エラーの原因

公式Discordで尋ねたところ、Difyの中の人が回答してくれました。どうやらちょうど署名をスキップするプルリクがマージされたところで、 v1.0.0-beta リリースにも含まれていなかったようです。プルリクが見つかりました↓


というか恐ろしいのは、昨日の時点でそれを知っていたDevinです。

Devinは「FORCE_VERIFYING_SIGNATURE」だと言うのですが、追加しても何も起こらないし、そもそもコードベースの検索に引っかかりません。夢を見ているのでしょうか。

Devin観察日記 11日目

何を見てこのフラグの存在に気づいたのでしょうか? plugins/betaブランチに向けられたプルリクまで見ていたという事でしょうか。ちょっと意味が分かりません。

Difyの中の人に教えて貰った通り、docker-compose.ymlとdocker-compose.middleware.ymlの2つを直接書き換えます。先ほどのプルリクを参考にしました。(ここは人間がやりました。Devinに任せる程でもないので)

Cosense Searchプラグインをインストール出来るようになった

無事インストール画面まで辿り着けました!

プラグインのエラー

一発で書いたコードは大抵上手く動かないものです。むしろ動く方が怖い。

プラグインをDifyにインストールすると、「requirements.txtがない」と怒られました。(なるほど、pipが使えるんですね)Devinに対応をお願いしました。

パッケージのエラーをDevinに解決して貰った

ところが、今度はまた別のエラーが出てしまいます。

エラーを見せたら、急にDify Pluginの正しい作り方を理解し始めたDevin

パッケージ用のCLIとは別に、ランタイム用のモジュールもあるようですね。僕はエラーを送っているだけなのに、相変わらず理解が早くて助かります。

しかし、Devinが実装→僕が検証、というサイクルは効率が悪いので、やり方を指示してみることにしました。

  • 公式のプラグインリポジトリの実装が参考になると思う

  • 公式のプラグインリポジトリのCIを真似すると良いと思う

「本家を参考にしたら?」とアドバイスしている様子

僕が言ってるのは誰にでも言えるようなアドバイスですが、Devinにとっては「あ、それやって良いんすね」という感じなのでしょう。本当にCIまで用意してくれました。

しかし、ここまでやってもプラグインのエラーは消せません。こうしている今もDevinは作業を続けていますが、どうも終わりそうにないので、今日はここまでにしたいと思います。

Marketplaceへの申請

実は昨日のMarketplaceの申請方法は間違っていました。@kurokoboさんという方が親切にも教えて下さったのですが、リポジトリを間違えていたようです。
⭕️ https://github.com/langgenius/dify-plugins (3rd party tools)
❌ https://github.com/langgenius/dify-official-plugins (official tools)

dify-pluginsの方は .difypkg だけが格納されたリポジトリで、ソースコードはありません。このくらいなら僕にも出来るので、Pull Requestの作成は僕の仕事とします。


今回、1万円以上かけてプラグインの作成に挑みましたが、動くものは未だ作れていません。今後の反省を書き残しておこうと思います。

  • ゼロベースで作らせるのではなく、最初から動くテンプレを与える

  • 早い段階でテストやCIを整備して、フィードバックループを回させる

いいなと思ったら応援しよう!