OpenHandsでHooksを使う ~完了通知をDiscordに送信~
こんにちはRcatです。
前回の記事でAI駆動の丸投げ開発環境のOpenHandsを導入しました。
しかしちょっと困ることがあります。タスク完了が分からないこと。
レビューやトラブルで止まっていてもわからず、N時間止まっているというのがざら。そこで、Hooks機能を使ってDiscordに通知できるようにしてみようと思います。
現状調べても全く情報が出てこないので少々苦労しましたが、何とか稼働できました。

はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください。
則っていないコメントは削除します。
概要
OpenHandsとは
AI駆動の開発環境。WEB UIでPC/スマホから指示を出して開発を行えます。
詳細はこちら。
Hooksとは
動作中に様々なイベントをトリガーに発火する、任意の操作を実行する機能です。
例えば、タスクが止まるときは特定のフックが呼ばれますので、それをトリガーにURLアクセスを行えばDiscordへの通知ができるようになります。

事前準備
Discord通知
Discordへの通知はWEB Hookを使います。
この方法であればBotなどを作らずに誰でも簡単に通知を受け取る環境を構築することができます。
設定方法はこちらの記事をご確認ください。
OpenHandsにHookを導入する
プラグインとは
公式を参考に、"プラグイン"を作ります。
プラグインはHooksやSkillなどを全部セットで定義したものです。
説明を見る限り、Hook単体はワークスペース単位の設定のようで、使いまわしが面倒なのでプラグインの方法を使います。
こうすることで一度読み込めばグローバルにどこでも使えます。
というか、ワークスペース単位はうまくいかなかったというのもあります。正直、公式は説明不足感が否めません。
完了通知プラグインを作成する
最初にプラグインを作成します。
なお、今回作ったプラグインは最下部で配布しています。
フォルダ構成
プラグインデータの構成はこの通りです。

pulgin.json
プラグインの説明hooks.json
Hookの定義notify-discord.sh
Hookで実行されるスクリプト
notify-discord.sh
まずは実行スクリプトです。
DiscordのWEBHookのURLをcurlで叩くだけの超簡単仕様です。
WEBHookを作ったらURLをコピーしてURLの部分を書き換えて使います。

pulgin.json
ここは説明が入るだけなので、フォーマットに沿ってさえいれば実質適当でOK。

hooks.json
メインのhookファイルです。
引っかけがあり、動作まで数時間かかりました…。

stop
これが終了時に呼ばれたらというトリガーです。多分finishtoolと紐づいてる感じかと。marcher
全マッチさせるので "*"command
シェルスクリプトを実行するので"command"で指定。
プラグインを読み込む
作ったプラグインをOpenHandsが読めるフォルダに格納します。
今回はDockerなので`/plugins`という直下フォルダをマウントしました。

格納後はこんな感じですね。

格納したら、WEB UIのカスタマイズからPluginsを選択して、右上の追加を押します。

追加画面が開くので、コンテナからみたパスを入力します。

うまくいくと読み込まれて一覧に表示されます。

Hookが有効か確認する
プラグインを追加したら、特に設定は不要です。
そのまま会話してみましょう。
AIの返事が来て、会話が停止した段階でHookが起動することが確認できればOK。

Discord側の設定も問題なければこのようにメッセージが来ます。

まとめ
今回はOpenHandsのHook機能を使って、終了時にDiscordに通知するプラグインを作成しました。
これにより、今後はレビューのタイミングやその他質問などで一時停止した場合に即気づくことができ、中断時間を最小限に抑えることができるようになりました。
Hook自体はほかにもトリガーがあるので、いろいろと試していきたいですね。
それではまたお会いしましょう
配布情報
配布URL
以下のURLより配布しています。
利用規約に同意の上ご利用ください。
配布情報
追加のキーワードについては下記より確認可能です
リンク集
感想投稿フォーム
コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け
メンバーシップの説明
Docker-Composeマネージャー
【ローカルLLM】バイブコーディング完全ガイド
【ローカルLLM】仕様駆動開発で、下流を丸投げ!
【ローカルLLM】OpenHandsで丸投げ開発
【ローカルLLM】自己成長AIエージェントHermesをホスト
【ローカルLLM】FastFlowLMでRyzan AIのNPUを叩く
【ローカルLLM】ROCmでLLMが劣化する!?
ミニPCにLinuxをインストール
いいなと思ったら応援しよう!
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。