Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Set up toolsmith: an agent that researches tool swaps and can't run rm

2026年10月31日に「Dev.to」が公開したITニュース「Set up toolsmith: an agent that researches tool swaps and can't run rm」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

toolsmithは、システムで使うツールを自動で探し、最適な代替候補を安全にテストするエージェントだ。危険な「rm」コマンドなどは実行できないようブロックされ、効率的かつ安全なシステム運用をサポートする。セットアップ方法も解説されている。

ITニュース解説

toolsmithは、日々のシステム運用を自動化し、より安全で効率的なものにするためのユニークなツールである。これは「エージェント」と呼ばれる、ユーザーの代わりに自動で作業を行うプログラムの一種であり、特に自宅サーバー環境であるホームラボの管理に特化している。その主な目的は、現在使用しているツールが、より良いものに置き換えられないかを毎週自動で調査し、その結果をユーザーに提示することにある。

具体的には、toolsmithはホームラボ内の特定の領域を毎週チェックし、現在使われているツールを代替できる候補を探し出す。そして、見つかった候補の中から最も有望なものを選択し、安全な「使い捨てコンテナ」と呼ばれる一時的な仮想環境で実際にテストを行う。このコンテナは、テストが終了したらすぐに破棄されるため、本番環境に影響を与える心配がない。テストが完了すると、toolsmithはDiscordというチャットツールを通じて、ユーザーに候補ツールの承認(✅)または却下(❌)を求める。この際、単なる推測ではなく、具体的な測定可能な事実に基づいて情報が提示される点が重要である。事実に基づかない情報はユーザーに通知されないため、提示される情報の信頼性が高い。

toolsmithを本格的に運用するには、Hermes Agentという別のエージェント実行基盤と、Proxmoxという仮想化プラットフォームが必要となる。Proxmoxは、複数の仮想マシンやコンテナを管理するためのソフトウェアで、ホームラボ環境でよく利用される。しかし、toolsmithの中核となる「安全性」に関わる部分、例えばテスト機能、インストール機能、そして後述する「ガード」と呼ばれるセキュリティ機能は、Pythonが動作する環境であればどこでも利用できる設計になっている。そのため、本格的なセットアップの前に、これらの基本的な機能を自分の環境で試すことが可能である。

このツールのセットアップガイドを実際に作成する過程で、興味深いバグが発見されたという話は、ソフトウェア開発の現場ではよくあることだ。元々の説明書(README)では、テストを実行した後にインストールスクリプトを走らせるように書かれていた。しかし、その指示通りに実行すると、テストが生成する一時ファイル(__pycache__フォルダ)が原因で、インストールが途中でエラーを起こして停止してしまう問題があった。これは、開発者自身が「クリーンな(何も入っていない)環境」で最初からセットアップガイドの手順を厳密に実行したことがなかったために見落とされていたバグであった。この問題は、セットアップガイド自体をテストする仕組みを導入した結果、初めて発見され、インストーラーがファイルコピーのみを行うように修正された。このエピソードは、実際に利用される手順を徹底的にテストすることの重要性を示している。

toolsmithの導入は、まずGitHubからプログラムのコードをダウンロードすることから始まる。ダウンロード後、付属のテストスクリプトを実行し、プログラムが正しく動作することを確認する。これは、環境が正しく設定されているかを確かめるための重要なステップだ。その後、指定されたコマンドを実行することでtoolsmithがインストールされる。

インストール後には、toolsmithの最も重要なセキュリティ機能の一つである「ガード」の動作を確認できる。このガードは、toolsmith_guard.pyという名前のスクリプトで、toolsmithが外部のツールを呼び出す前に、そのコマンドが安全であるかをチェックする「門番」のような役割を果たす。このガードは、JSON形式で入力されたコマンドの内容を分析し、危険なコマンドであればブロックし、安全なコマンドであれば実行を許可する。例えば、システム全体を削除してしまう可能性のある危険なコマンド(rm -rf /)を入力すると、ガードはそれをブロックする。一方で、Web検索のような安全なコマンド(caddy vs traefikといった検索クエリ)は許可される。このガードは「フェイルクローズド」という設計思想に基づいており、もしガード自体が何らかの原因でクラッシュしてしまっても、安全を優先してコマンドの実行をブロックするようになっている。これは、セキュリティシステムにおいて非常に重要な原則であり、万が一の際にもシステムが危険に晒されるのを防ぐ役割を担う。

toolsmithを完全に機能させるためには、いくつかの設定が必要である。まず、DiscordチャンネルとユーザーIDを設定し、toolsmithが送る承認リクエストを確実に受け取れるようにする。次に、Proxmox環境内で利用可能なノードや、サンドボックスとして使えるコンテナを指定する。サンドボックスとは、プログラムを隔離された安全な環境で実行するための仕組みであり、万が一悪意のあるコードが実行されても、システム全体に影響が及ばないようにするために利用される。さらに、ツールの動作タイミングを制御する二つのタイマーも設定する。セキュリティ上、ボットの認証トークンなどの機密情報は、設定ファイルに直接書き込むのではなく、環境変数ファイルに記述することが推奨されている。toolsmithには、意図的にメモリを大量に要求してガードが拒否するかどうかをテストする機能や、実際に何も送らずに全体の動作を確認できる「ドライラン」機能も含まれており、これらの機能を使って、実際の運用前に設定が正しく機能するかを検証できる。

toolsmithのような複雑なシステムでは、自動化されたテスト(CI: 継続的インテグレーション)だけでは検証しきれない部分も存在する。特に、DiscordやProxmoxといった外部システムとの実際の連携部分は、CI環境ではなく、実際の運用環境に近い状況でしか完全にテストできない。そのため、セットアップガイドでは、どのステップが実際の環境を必要とするのかが明記されている。toolsmithは、ホームラボの運用を自動化し、新しいツールを安全に導入するための強力なアシスタントとなり、自動化とセキュリティの両立を目指すシステムエンジニアにとって、多くの学びと示唆を与えるものとなるだろう。

関連コンテンツ

関連IT用語

関連ITニュース