メインコンテンツへスキップ
見出し画像

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`という直下フォルダをマウントしました。

    画像
    docker定義

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

    画像

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

    画像

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

    画像

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

    画像

    Hookが有効か確認する

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

    画像

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

    画像

    まとめ

    今回はOpenHandsのHook機能を使って、終了時にDiscordに通知するプラグインを作成しました。

    これにより、今後はレビューのタイミングやその他質問などで一時停止した場合に即気づくことができ、中断時間を最小限に抑えることができるようになりました。

    Hook自体はほかにもトリガーがあるので、いろいろと試していきたいですね。

    それではまたお会いしましょう


    配布情報

    配布URL

    以下のURLより配布しています。
    利用規約に同意の上ご利用ください。

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=OpenHandsプラグイン_Discord通知

    配布情報

    追加のキーワードについては下記より確認可能です


    リンク集

    感想投稿フォーム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    メンバーシップの説明

    Docker-Composeマネージャー

    【ローカルLLM】バイブコーディング完全ガイド

    【ローカルLLM】仕様駆動開発で、下流を丸投げ!

    【ローカルLLM】OpenHandsで丸投げ開発

    【ローカルLLM】自己成長AIエージェントHermesをホスト

    【ローカルLLM】FastFlowLMでRyzan AIのNPUを叩く

    【ローカルLLM】ROCmでLLMが劣化する!?

    ミニPCにLinuxをインストール


     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ