rune について
Runeはソフトウェアプロジェクトの事実グラフを作り、ファイルと行番号の引用付きでコードベースの質問に答えます。検証可能な調査結果を求める開発者やAIクライアント向けで、説明には任意のリモートまたはローカルモデルを使えます。Rune自体は読み取り専用です。
主な機能
- 01コードの事実グラフを構築
- 02引用付きで調査結果を順位表示
- 03証拠に照らしてモデルの主張を検証
- 04ファイル監視と事実のずれ確認
- 05ルートとセキュリティ所見の確認
- 06プロジェクトメモと過去の結果を保存
活用シーン
- 01コードの挙動が実装された場所を追跡
- 02説明の引用証拠を確認
- 03プロジェクトのセキュリティ所見を点検
- 04ファイル変更後にずれた事実を検出
MCP 対応
RuneはMCP サーバーとして動作し、検索、説明、検証、ルート一覧、セキュリティ所見など13のツールを提供します。AIクライアントにはファイル、行、コード片の引用付きで結果を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Rune
コードについて質問すると、根拠を確認できる回答が得られます。
Rune はプロジェクトをスキャンして事実のグラフを作成します。各事実には、その出典となったファイルと行が正確に記録されています。質問すると、引用付きの調査結果が関連度順に表示されます。その後、お使いの AI モデルがそれらを説明し、根拠のない記述は Rune が破棄します。
小型のローカルモデルが説明を作成した、Express リポジトリでの実際の出力例です。
$ cd express
$ rune "how does routing work"
2 insight(s):
1. lib/application.js
Why it matters: Loads the external package `router` (var Router = require('router');)
- logic tied to this name likely lives there, not in this repo.
Evidence: lib/application.js:26
...
Explanation (written by local / qwen2.5:1.5b; every statement checked against cited evidence)
- Router is the external package used for routing logic in this project. [lib/application.js:26, lib/express.js:19]
回答が短いのは、事実に即しているからです。Express はルーティングを別のパッケージに委ねており、Rune はそのことを示して該当する行も提示します。
Rune を選ぶ理由
- すべての主張に出典があります。 事実にはファイル、行、正確なスニペット、信頼度が付いています。
rune explain <id>を実行すると、任意の事実の根拠をたどれます。 - モデルはご自身で選べます。 Anthropic、OpenAI、OpenAI 互換 API、またはローカルモデルを利用できます。Rune 自身はモデルを備えていません。
- 読み取り専用です。 Rune は調査して報告するだけで、プロジェクトを変更することはありません。
- 普段の環境で使えます。 MCP サーバーなので、AI クライアントから直接利用できます。
インストール
Linux(x64)および macOS(Apple Silicon):
curl -fsSL https://raw.githubusercontent.com/thecolourfoundation/rune/main/install.sh | sh
Windows: 最新リリースからrune-windows-x64.exeをダウンロードし、ターミナルから実行してください。
インストーラーは SHA-256 チェックサムを検証し、runeを~/.local/binに配置します。
使い方
cd your-project
rune "how does routing work"
rune "give me 5 architectural insights"
初回実行時にプロジェクトをスキャンします。数秒かかります。以降は、Rune がファイル:行の根拠付きで関連度順に調査結果を表示し、その根拠をもとにお使いのモデルが短い説明を作成します。
| コマンド | 機能 |
|---|---|
rune "<question>" | 現在のフォルダーにあるプロジェクトについて質問します |
rune scan [dir] | グラフを作成または再構築し、セキュリティ概要を表示します |
rune watch [dir] | ファイルの変更に合わせてグラフを最新の状態に保ちます |
rune serve [dir] | MCP サーバーを起動します |
rune explain <id> | 事実の根拠をたどって表示します |
rune verify [dir] | 保存された事実を現在のファイルと照合します |
rune memory ... / rune experience ... | プロジェクトのメモと過去の結果のログを保存します |
すべての機能についてはrune --helpを実行してください。詳しくはDocs.mdをご覧ください。
お好みのモデルを利用する
# Anthropic(早期サポート)
export ANTHROPIC_API_KEY=your-key
# OpenAI または OpenAI 互換 API
export OPENAI_API_KEY=your-key
export RUNE_LLM_MODEL=model-name
# Ollama を使ったローカルモデル(キー不要、データがマシンの外に送信されることはありません)
export RUNE_LLM_BASE_URL=http://localhost:11434/v1
export RUNE_LLM_MODEL=model-name
モデルが生成するすべての記述には、Rune が取得した根拠を引用する必要があります。Rune は、取得していない情報を引用している記述、引用のない記述、または引用された根拠に含まれていない文章を引用している記述を破棄し、破棄した件数を通知します。
これは根拠付けを確認するものであり、真偽を確認するものではありません。モデルが実際の根拠を誤読する可能性はあります。説明の品質は、選択したモデルによって異なります。
モデルが設定されていない場合、Rune は根拠を表示してからセットアップ方法を案内し、終了コード 2 で終了します。モデルを使わずに実行するには--evidence-onlyを追加してください。RUNE_LLM_DEBUG=1を設定すると、モデルの未加工の応答と、記述が破棄された理由を確認できます。
マシンの外部に送信されるもの
送信されるのは、設定したモデルプロバイダーへの質問に関する証拠だけです。短いコードスニペットが最大40件で、プロジェクト全体が送信されることはありません。Runeは送信前に、送信する件数を表示します。何も送信したくない場合は、--evidence-onlyまたはローカルモデルを使用してください。
AI ツールから使用する(MCP)
RuneはMCP サーバーです。任意のMCP クライアントを次のように接続してください。
{"command": "rune", "args": ["serve", "/absolute/path/to/your-project"]}
クライアントは、rune_agent、rune_search、rune_explain、rune_verify_fact、rune_check_drift、rune_list_routes、rune_get_security_findingsなど、13個のツールを利用できます。回答にはファイル、行番号、スニペットの引用が含まれます。クライアント自身のモデルを使用するため、ここでキーは必要ありません。
rune_agentは、浅い証拠で十分かどうかを示す、高速でモデルを使わないtriage判定を常に報告します。トリアージで質問により深い調査が必要と判断された場合は、deep: trueを渡すと、LLM主導のより深い調査を実行できます(常に実行するにはforce: trueを渡します)。設定したモデルをツールが呼び出す可能性があるのはこのケースのみで、そのコストはほかのすべてと同様に、回答のトークン予算に計上されます。
Runeは、公式MCP Registryにio.github.thecolourfoundation/runeとして登録されています。各リリースには、Claude Desktopにワンクリックでインストールできる.mcpbバンドルも含まれています。新しいもので、Claude Desktop内ではまだテストされていません。
Runeが理解する内容
- JavaScriptとTypeScript: インポート、関数呼び出し、Reactコンポーネントとフック、Expressのルート、Next.jsのルート、Vueコンポーネント。
- Shell、Lua、設定ファイル(TOML、YAML、JSON)、Markdown。
- セキュリティ上の検出事項: ハードコードされたシークレット、リスクのあるシェル実行、GitHub Actionsのワークフロー上の問題、依存関係の問題。
仕組み
- スキャン。 Runeはファイルを解析し、それぞれにファイル、行番号、スニペット、信頼度が付いた事実に変換します。
- 導出。 これらの事実から結論を導き出し、各結論には根拠となる事実のIDが記載されます。
- 調査。 質問に応じて関連する事実を取得し、仮説を立てて現在のファイルと照合し、順位付けします。
- トリアージし、必要に応じて詳細調査へ進みます。 高速でモデルを使わないチェックにより、順位付けされた仮説の信頼度、判定が難しいほど僅差かどうか、質問に使われた用語が何かに一致したかどうかなどを確認し、回答として十分か、より深い推論が必要かを判断します。この処理にコストはかからず、モデルも呼び出しません。
- 説明し、検証します。 モデルが説明を作成し、Runeが各記述を証拠と照合します。トリアージで必要と判断された場合は、任意の詳細調査を実行し、すべての仮説の証拠をまとめて推論します(引き続きモデルが文章を作成し、すべてに引用が付き、同じ方法で検証されます)。
rune verifyはソースを再読み込みし、前回のスキャン以降に変化した保存済みの事実を知らせます。
知っておくとよいこと
- JavaScript/TypeScript、Shell、Lua、設定ファイルで最もよく機能します。現時点では、ほかの言語の結果は限定的です。
- Runeはプロジェクト内の
.rune/にスキャン結果を保存します。.rune/を.gitignoreに追加してください。 - バイナリは署名されていないため、macOSやWindowsでセキュリティ警告が表示されることがあります。Intel MacまたはARM搭載Linux向けのビルド済みバイナリは、まだありません。
今後の展開
Runeのスキャナーはエクストラクターレジストリを介して接続され、グラフ、証拠、検証の各レイヤーはコードに限定されていません。ほかの種類のソースへの対応を予定しています。現在、Runeが理解するのはソフトウェアプロジェクトです。
コントリビューション
課題報告やプルリクエストを歓迎します。
ライセンス
MIT。Colour Foundationが開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。