FlutterSDK Telescope について
FlutterSDK Telescopeは、開発時にFlutterアプリのHTTP通信、ログ、例外、クエリなどを記録するランタイムインスペクターです。開発者やコーディングエージェントは、CLIコマンドとMCPツールからバッファー内のデータを確認できます。
主な機能
- 01HTTP通信、ログ、例外の記録
- 02クエリとランタイムイベントの記録
- 03CLIでバッファーデータを確認
- 0410個のMCPツールを提供
- 05バッファー前に機密情報をマスキング
- 06リリースビルドで計測機能を除外
活用シーン
- 01実行中アプリのHTTP障害を調査
- 02デバッグ中に例外とログを確認
- 03コーディングエージェントで実行記録を検索
- 04データベースクエリとフレーム時間を追跡
MCP 対応
Artisanプロバイダーを登録すると、TelescopeはVM Service拡張を通じて、記録データの検索や消去を行う10個のMCPツールを公開します。ツールの利用にはFlutterアプリの実行が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Telescope
Flutter 用の受動的なランタイムインスペクターです。人が読み、AI エージェントがクエリできます。
HTTP、ログ、例外、debugPrint、DB クエリ、Magic イベントを VM Service 拡張機能経由でキャプチャし、telescope:* CLI コマンドと、Claude Code 用の 10 個の MCP ツールとして公開します。
Telescope を使う理由
スタックトレースを Claude に貼り付けるのはやめましょう。エージェントに直接読み取らせましょう。
実行中の Flutter アプリのデバッグでは、これまで常に print 文、カスタムのログ出力先、ネットワークプロキシを組み合わせて使う必要があり、それぞれが異なる断片の情報を伝えていました。問題が起きると、ログファイル、Charles のキャプチャ、Flutter DevTools のウィンドウをつなぎ合わせて、何が起きたのかを再構成します。AI を使ったワークフローはさらに大変です。コンソールからスタックトレースをコピーして Claude Code に貼り付け、失敗した HTTP レスポンスをコピーして貼り付け、これを繰り返します。
Telescope はこの一連の手間を解消します。 起動時に受動的な監視機能と 14 個の VM Service 拡張機能が登録されます。すべての HTTP リクエスト、ログ行、例外、debugPrint の呼び出し、DB クエリ、Magic フレームワークのライフサイクルイベントがリングバッファーに格納されます。CLI コマンド(telescope:tail、telescope:requests)は人が確認できるようバッファーをストリーミングし、10 個の MCP ツール(telescope_requests、telescope_exceptions、telescope_tail、...)は同じバッファーを Claude Code、Cursor、Codex などの AI コーディングエージェントに公開します。コピー&ペーストもスクリーンショットも SaaS アカウントも不要です。開発時専用です。呼び出し箇所に kDebugMode または !kReleaseMode のガードを設けることで、リリースビルドではサブシステム全体がツリーシェイクされます。
# One-shot self-bootstrap install (works from a fresh consumer)
flutter pub add fluttersdk_telescope
dart run fluttersdk_telescope telescope:install
インストールコマンドは、存在しない場合は利用側の artisan ハーネスを生成し、plugin:install fluttersdk_telescope を実行して、TelescopePlugin.install() が Magic.init() より前(標準の Flutter では runApp より前)に実行されるよう lib/main.dart を修正します。すべて kDebugMode の配下で制御されるため、リリースビルドではサブシステム全体がツリーシェイクされます。
インストール後、利用側では、以降のすべての telescope コマンドに使える artisan fast-cli が ./bin/fsa に用意されます(ネイティブ AOT、ウォーム起動は約 110ms)。より低速な(コールド起動で約 3 秒)フォールバックとして、dart run fluttersdk_telescope <cmd> も引き続き使用できます。
機能
| 機能 | 説明 | |
|---|---|---|
| 👁 | 10 個のウォッチャー | LogWatcher、ExceptionWatcher、DumpWatcher、FramePerfWatcher に加え、HTTP、モデル、キャッシュ、イベント、ゲート、DB クエリをカバーする Magic 固有のアダプター 6 個 |
| 🤖 | 10 個の MCP ツール | telescope_requests、telescope_tail、telescope_exceptions、telescope_events、telescope_gates、telescope_dumps、telescope_queries、telescope_caches、telescope_frames、telescope_clear |
| 🖥 | 11 個の CLI コマンド | telescope:install、telescope:tail、telescope:requests、telescope:queries、telescope:caches、telescope:events、telescope:gates、telescope:dumps、telescope:frames、telescope:clear、telescope:files |
| 🔌 | アダプターの契約 | TelescopeHttpAdapter(抽象クラス、3 メソッド構成)を使って任意の HTTP クライアントを接続できます。標準の Dio 向けに DioHttpAdapter が付属します |
| 📋 | 10 種類のレコード | 不変の HttpRequestRecord、LogRecordEntry、ExceptionRecord、MagicModelRecord、MagicCacheRecord、EventRecord、GateRecord、DumpRecord、QueryRecord、FramePerfRecord |
| 📡 | VM Service 拡張機能 | 14 個の拡張機能:ext.telescope.requests、.console、.exceptions、.events、.gates、.dumps、.queries、.caches、.frames、.clear、.pause、.resume、.files、.file。.console と .events は since を受け取り、cursor で応答します。.events は type も受け取り、.console は logger も受け取ります |
| ✨ | Magic との統合 | MagicTelescopeIntegration.install() を呼び出すと、1 回で Http ファサードアダプターとモデル/キャッシュ/イベント/ゲートのウォッチャーを接続します(開発依存関係の magic_devtools に付属) |
| 🙈 | 認証情報のマスキング | HTTP レコードはバッファーに格納される前にマスキングされます(Laravel Telescope の方式)。Authorization、Cookie、X-Api-Key ヘッダーと、password/token 形式の JSON キーは ******** として読み取られます。TelescopeRedaction.hide* で対象リストを拡張できます |
| 🧽 | テキストの秘匿化 | TelescopeRedaction.redactor は、すべてのログ、イベント、例外、HTTP レコード(ペイロードのキーを含む)に対し、挿入時に実行されるホスト側の String Function(String) フックです。秘匿化関数が例外をスローするとレコードは破棄されます。レコードには読み取り専用の redacted フラグが付きます |
| 💾 | ファイルシンク | TelescopeFileSink.start(directory:, maxFileBytes:, maxFiles:) は、秘匿化済みのログ、イベント、例外レコードのローテーション対応 JSONL タイムラインを書き込みます。telescope:files、ext.telescope.files、ext.telescope.file で読み取れます。秘匿化済みのレコードのみを書き込み、書き込みに失敗すると停止します |
| 🔒 | 呼び出し箇所のゲート | 利用側で呼び出し箇所にガードを設置します:kDebugMode(telescope:install が書き込む内容)または !kReleaseMode(profile ビルドも維持)。release ビルドでは、すべてのプラットフォームで Telescope 分岐全体がツリーシェイクされます |
| 🔄 | 冪等なインストール | すべての registerExtension 呼び出しは registerExtensionIdempotent を経由します。ホットリスタートに対応し、再登録時に ArgumentError は発生しません |
クイックスタート
オプション A(推奨):一括インストール
依存関係を追加したら、Telescope 独自の CLI エントリーポイントで自動セットアップします。事前に fluttersdk_artisan を接続する必要はありません。Telescope のバイナリには artisan の基盤が含まれているため、新規の利用側プロジェクトでもインストールできます。
flutter pub add fluttersdk_telescope
dart run fluttersdk_telescope telescope:install
このコマンドは、利用側の artisan ハーネスが存在しない場合に生成し(bin/dispatcher.dart と lib/app/_plugins.g.dart)、plugin:install fluttersdk_telescope を実行して、Magic.init() の前(標準の Flutter では runApp の前)に TelescopePlugin.install() が実行されるよう lib/main.dart を修正します。冪等なので、何度でも安全に実行できます。
日常的に繰り返し使う場合は、利用側の ./bin/fsa(インストール時にビルドされる artisan のネイティブ AOT バイナリ)を使うと、ウォームスタートが約 110 ms になります。
./bin/fsa telescope:tail
./bin/fsa telescope:requests
dart run fluttersdk_telescope <cmd> は、AOT バンドルがなくても常に動作する低速(コールドスタートで約 3 秒)の代替手段として引き続き利用できます。
オプション B:手動で接続
1. 依存関係を追加する
# pubspec.yaml
dependencies:
fluttersdk_telescope: ^0.0.4
2. main.dart にインストールする
Magic.init() の前に(通常の Flutter では runApp の前に)Telescope をインストールします。リリースビルドでツール関連の分岐全体がツリーシェイクされるよう、インストール呼び出しはすべて呼び出し箇所でモードガードで囲みます。telescope:install が書き込む kDebugMode、またはプロファイルビルドも維持する !kReleaseMode を使用します(パフォーマンス測定に必要であり、magic_devtools もこちらを使用します)。
import 'package:flutter/foundation.dart';
import 'package:fluttersdk_telescope/telescope.dart';
import 'package:magic_devtools/telescope.dart'; // magic_devtools dev_dependency (Magic-stack apps only)
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 1. Install Telescope core (auto-installs LogWatcher + registers VM extensions).
if (!kReleaseMode) {
TelescopePlugin.install();
// 2. Opt-in watchers registered after install().
TelescopePlugin.registerWatcher(ExceptionWatcher());
TelescopePlugin.registerWatcher(DumpWatcher());
}
// 3. Magic-side adapters run AFTER Magic.init() because they resolve
// framework internals (Http facade, Gate manager) from the IoC container.
await Magic.init(configFactories: [...]);
if (!kReleaseMode) {
// MagicTelescopeIntegration ships in magic_devtools (not magic core).
// Add magic_devtools to dev_dependencies in pubspec.yaml.
MagicTelescopeIntegration.install();
}
runApp(MyApp());
}
3. Artisan プロバイダーを登録する(MCP ツール)
利用側の bin/dispatcher.dart(dart run fluttersdk_artisan install によって生成されます)では、plugin:install fluttersdk_telescope の後、lib/app/_plugins.g.dart を通じて Telescope が自動検出されます。プロバイダーを手動で設定する場合は、baseProviders リストに FluttersdkTelescopeArtisanProvider() を追加すると、10 個の telescope_* MCP ツールを Claude Code やその他の MCP クライアントから利用できるようになります。
import 'package:fluttersdk_artisan/artisan.dart';
import 'package:fluttersdk_telescope/cli.dart' show FluttersdkTelescopeArtisanProvider;
exit(await runArtisan(
args,
baseProviders: [
FluttersdkTelescopeArtisanProvider(),
// ...other providers (DuskArtisanProvider, etc.)
],
));
ウォッチャー
| ウォッチャー | キャプチャ対象 | 自動インストール? | 備考 |
|---|---|---|---|
LogWatcher | すべての package:logging Logger 呼び出し | はい | TelescopePlugin.install() によって自動的にインストールされます。 |
ExceptionWatcher | FlutterError.onError + PlatformDispatcher.onError による未処理の例外 | いいえ | インストール後に TelescopePlugin.registerWatcher(ExceptionWatcher()) を呼び出します。どちらのフックも、以前に登録されたハンドラー(Sentry、Bugsnag など)をチェーンして保持します。 |
DumpWatcher | debugPrint + print の出力 | いいえ | debugPrint をグローバルにオーバーライドし、以前のオーバーライドもチェーンして保持します。デバッグモードでのみ有効です。 |
MagicHttpFacadeAdapter | Magic の Http ファサードを経由する HTTP トラフィック | いいえ | TelescopePlugin.registerHttpAdapter(MagicHttpFacadeAdapter()) で登録します。Magic フレームワークが必要です。 |
MagicModelWatcher | Magic Eloquent モデルの create、save、delete のライフサイクルイベント | いいえ | TelescopePlugin.registerWatcher(MagicModelWatcher()) で登録します。Magic フレームワークが必要です。 |
MagicCacheWatcher | Cache.get / put / forget / flush(ヒット + ミス + put + forget + flush 操作) | いいえ | Magic 側の CacheHit / CacheMiss / CachePut / CacheForget / CacheFlush イベントを購読します。Magic フレームワークが必要です。 |
MagicEventWatcher | Magic の Event ファサードを通じてディスパッチされたイベント | いいえ | TelescopePlugin.registerWatcher(MagicEventWatcher()) で登録します。Magic フレームワークが必要です。 |
MagicGateWatcher | Gate.allows / Gate.denies による認可チェック | いいえ | TelescopePlugin.registerWatcher(MagicGateWatcher()) で登録します。Magic フレームワークが必要です。 |
MagicQueryWatcher | Magic の SQLite + リモート DB クエリ(sql、bindings、timeMs、connection) | いいえ | データベースコネクターによってディスパッチされる Magic 側の QueryExecuted イベントを購読します。Magic フレームワークが必要です。 |
FramePerfWatcher | FlutterTimeline のブロック帰属情報と結合した、フレームごとの build/raster/vsync オーバーヘッド時間 | いいえ | TelescopePlugin.registerWatcher(FramePerfWatcher()) で登録します。読み取りごとに、静的な livenessCounter も公開します。 |
MCP ツール
利用側が TelescopeArtisanProvider を登録すると公開されます(lib/app/_plugins.g.dart と bin/dispatcher.dart を介して telescope:install が自動配線します)。すべてのツールは ext.telescope.* VM Service 拡張機能を経由し、Flutter アプリが実行中である必要があります。
| ツール | 拡張機能メソッド | 取得する内容 |
|---|---|---|
telescope_tail | ext.telescope.console | ログのリングバッファ(package:logging のレコード)。レベルと件数でフィルタリングできます。 |
telescope_requests | ext.telescope.requests | HTTP リクエストのリングバッファ(メソッド、URL、ステータス、所要時間、ヘッダー、本文の一部)。 |
telescope_exceptions | ext.telescope.exceptions | 未捕捉例外のリングバッファ(型、メッセージ、スタックトレース)。 |
telescope_clear | ext.telescope.clear | すべてのリングバッファをアトミックに消去します。パラメーターはありません。 |
telescope_events | ext.telescope.events | アプリ内イベントのリングバッファ(Magic の Event.dispatch 呼び出し。イベントの型とペイロード)。 |
telescope_gates | ext.telescope.gates | Gate 認可チェックのリングバッファ(能力、結果、ユーザー ID、引数の型)。 |
telescope_dumps | ext.telescope.dumps | debugPrint 出力のリングバッファ(メッセージとタイムスタンプ)。 |
telescope_queries | ext.telescope.queries | DB クエリのリングバッファ(sql、bindings、timeMs、connectionName)。 |
telescope_caches | ext.telescope.caches | キャッシュ操作のリングバッファ(操作:hit/miss/put/forget/flush、キー、ttlMs)。 |
telescope_frames | ext.telescope.frames | フレームごとのパフォーマンスリングバッファ(build/raster/vsync-overhead/total-span のマイクロ秒、ブロックの帰属)と livenessCounter。 |
CLI コマンド
TelescopeArtisanProvider.commands() を介して登録されます。telescope:install の後、コマンドは 3 つの方法で実行できます。利用側の fast-cli(./bin/fsa <command>、推奨)、telescope のスタンドアロン bin(dart run fluttersdk_telescope <command>)、または利用側の dispatcher フォールバック(dart run fluttersdk_artisan <command>)です。
| コマンド | 目的 |
|---|---|
telescope:install | 初回セットアップを実行します。利用側の artisan ハーネスを生成し、plugin:install fluttersdk_telescope を実行して、TelescopePlugin.install() を lib/main.dart に挿入します。await Magic.init( アンカーを使って Magic スタックのアプリを検出し、Magic.init より前に挿入します。該当しない場合は、通常の Flutter アプリ向けに runApp( に挿入します。 |
telescope:tail | ログバッファを表示します。--level、--limit、--since <atUs>、--logger <name> でフィルタリングできます。--json は 1 行につき 1 つの JSON オブジェクトを出力します。--follow は中断されるまで、返されたカーソルからポーリングを続けます。 |
telescope:requests | HTTP リクエストバッファを表示します(ページ分割)。 |
telescope:queries | DB クエリバッファを表示します(ページ分割)。 |
telescope:caches | キャッシュ操作バッファを表示します(ページ分割)。 |
telescope:events | アプリ内イベントバッファを表示します。--limit、--since <atUs>、--type <prefix> でフィルタリングできます。--json と --follow は telescope:tail と同様です。 |
telescope:gates | Gate 認可チェックバッファを表示します(ページ分割)。 |
telescope:dumps | debugPrint ダンプバッファを表示します(ページ分割)。 |
telescope:frames | フレームごとのパフォーマンスバッファを表示します(ページ分割)。 |
telescope:clear | すべてのバッファをアトミックに消去します。 |
telescope:files | 実行中のファイルシンクのタイムラインファイルを一覧表示します。または、--name=<file> と --offset=<n>(0 または前回の next。-v で次のオフセットを表示)を指定して、ファイルの行を表示します。 |
両方の --follow フラグの背後にある純粋な Dart ループ followCursor は、package:fluttersdk_telescope/cli.dart からエクスポートされています。
例
example/
Magic フレームワークを使わない通常の Flutter アプリで、フレームワークに依存しないすべての取得機能を試せます。Telescope Dio インターセプター経由の HTTP トラフィック、package:logging 経由のログ出力、ExceptionWatcher 経由の未捕捉例外、DumpWatcher 経由の debugPrint 出力が対象です。最小限のインストールパターンと、アプリ内オーバーレイダッシュボードを紹介します。
cd example && flutter run -d chrome
アーキテクチャ
Telescope は lib/src/ の下でサブシステムを中心に構成されており、各ディレクトリが単一の関心事を担当します。
lib/
├── telescope.dart # Single barrel, re-exports the full public API
├── cli.dart # Flutter-free codegen barrel (FluttersdkTelescopeArtisanProvider typedef, followCursor)
└── src/
├── watchers/ # TelescopeWatcher abstract contract + LogWatcher, ExceptionWatcher, DumpWatcher
├── adapters/ # TelescopeHttpAdapter abstract contract + DioHttpAdapter concrete impl
├── records/ # Immutable record types: HttpRequestRecord, LogRecordEntry, ExceptionRecord, etc.
├── extensions/ # registerAllTelescopeExtensions() aggregator + per-concern VM Service handlers
├── commands/ # TelescopeInstallCommand + 10 read/clear/files commands
├── telescope_store.dart # 10-buffer ring store (singleton); Queue<T> per buffer + broadcast StreamController<T>
├── telescope_redaction.dart # credential lists + the host text redactor applied at insert
├── telescope_file_sink.dart # TelescopeFileSink: rotating JSONL timeline of redacted records
├── cursor_follow.dart # followCursor, the loop behind --follow (exported from cli.dart)
├── telescope_plugin.dart # TelescopePlugin.install() entry + registerHttpAdapter() + registerWatcher()
└── telescope_artisan_provider.dart # TelescopeArtisanProvider: 11 commands + 10 MCP tool descriptors
起動フロー:
TelescopePlugin.install()
↓
Register default watchers (LogWatcher auto-installs)
↓
registerAllTelescopeExtensions() # 14 ext.telescope.* VM Service extensions, idempotent
↓
Consumer registers TelescopeArtisanProvider (auto-wired by `telescope:install` via bin/dispatcher.dart + _plugins.g.dart)
↓
artisan mcp:serve -> 10 telescope_* tools surface to MCP clients (Claude Code, Cursor, etc.)
具体的なウォッチャーとレコードの型はすべて final class です。2つのアダプターコントラクト(TelescopeWatcher、TelescopeHttpAdapter)は、固定された3メソッドのシグネチャー(name、install、uninstall)を持つ abstract class です。Magic 側のグルーコード(MagicHttpFacadeAdapter、MagicModelWatcher など)はこれらのコントラクトに依存しています。シグネチャーを変更する場合は、両方のリポジトリで連携したバージョンアップが必要です。
比較
| ツール | 機能 | telescope の優位点 |
|---|---|---|
| Sentry Flutter | 外部 SaaS による本番環境のクラッシュおよびパフォーマンスレポート | ローカルのみ、デバッグ時のみで動作します。CLI と MCP からエージェントがクエリできます。DSN も SaaS アカウントも不要です。 |
| Talker / talker_flutter | アプリ内ログオーバーレイ、Dio インターセプター | ツールからクエリ可能な VM Service サーフェス、AI エージェント向け MCP サーバー、フレームワークを認識するモデル/キャッシュ/イベント/ゲートのウォッチャーを備えています。 |
| Alice | アプリ内 HTTP リクエストのオーバーレイ UI | HTTP だけでなく10個のバッファーをキャプチャーします。受動的に動作し(開くために端末を振る必要があるオーバーレイはありません)、CLI ストリーミング、AI エージェントからのアクセス、デバッグ時のツリーシェイキングに対応しています。 |
| Flutter DevTools | 公式のブラウザーベースのインスペクター | 人がブラウザー経由で確認するだけでなく、CLI と MCP からプログラムでアクセスできます。反復作業の合間にもクエリできるリングバッファー方式のレコードを備え、ドメインを認識する(Magic)ウォッチャーに対応しています。 |
| mcp_flutter | AI 主導の UI 操作(タップ、スクロール、スナップショット)向け MCP ツールキット | 競合するのではなく、相互補完します。telescope はランタイムテレメトリー(HTTP、例外、クエリ)を担当し、mcp_flutter は UI 自動化を担当します。 |
AI エージェントとの連携
Telescope は、UI 自動化ではなくランタイムの可観測性(HTTP、例外、クエリ、キャッシュ)に重点を置いた、初の Flutter MCP サーバーです。10個の telescope_* ツールにより、Claude Code、Cursor、Codex、その他あらゆる MCP 対応エージェントが、すべてのランタイムバッファーに直接読み取りアクセスできます。プロキシーなしで HTTP トラフィックを調査し、出力を grep せずにログを読み取り、DevTools をスクロールせずに例外を検出できます。
1行で .mcp.json を設定
telescope:install は .mcp.json を自動で作成します。または、MCP 対応クライアント向けに手動で設定できます。
// .mcp.json (project root) — Claude Code / Codex / Cursor / Goose / VS Code Copilot
{
"mcpServers": {
"fluttersdk": {
"command": "./bin/fsa",
"args": ["mcp:serve"],
"cwd": "."
}
}
}
その後、MCP クライアントを再起動してください。10個の telescope_* ツール(および基盤の artisan_* ツール)が /mcp に自動的に表示されます。
導入前/導入後
| telescope なし | telescope あり |
|---|---|
| スタックトレースがコンソールに表示されます。それをコピーして Claude に貼り付けます。Claude は、原因となった HTTP レスポンスを尋ねます。スクロールして、コピーして、貼り付けます。 | Claude が telescope_exceptions を呼び出し、タイムスタンプとスタックトレース付きでキャプチャーされた直近500件の例外を読み取ります。続けて telescope_requests を呼び出し、対応する HTTP レコードを読み取ります。Claude が修正案を提示します。 |
| ホットリロードして再試行し、再び貼り付けます。 | Claude が反復作業の合間に telescope_clear を呼び出します。あなたが間に入ることなく、修正のループが完結します。 |
エージェントの一般的なセッション
[agent] artisan_start { device: chrome } // launch the app
[agent] <exercise the feature under inspection>
[agent] telescope_requests {} // inspect all HTTP calls made
[agent] telescope_tail { level: warning } // filter logs to warnings and above
[agent] telescope_exceptions {} // check for any uncaught exceptions
[agent] telescope_queries {} // review DB queries and timings
[agent] telescope_clear {} // flush buffers before the next scenario
[agent] artisan_stop // tear down
接続時に構造化されたプロジェクトコンテキストを読み取るエージェント向けの正式なエントリーポイントは、リポジトリのルートにある llms.txt です(https://fluttersdk.com/telescope/llms.txt でも公開されています)。ウォッチャーの一覧、VM 拡張カタログ、すべての MCP ツール入力スキーマを、エージェントが読み取れる形式でまとめています。
ドキュメント
ライブサンプル付きの完全なドキュメントは fluttersdk.com/telescope をご覧ください。
| トピック | |
|---|---|
| はじめに | 概要、要件、最初のインストール |
| ウォッチャー | 10 種類すべてのウォッチャー:セットアップ、チェーン保持パターン、Magic アダプター |
| MCP ツール | すべてのツール、すべての入力スキーマ、フィルターパラメーター |
| レダクション | 認証情報リスト、TelescopeRedaction.redactor、redacted フラグ |
| ファイルシンク | TelescopeFileSink、ローテーション、フェイルクローズ書き込み、telescope:files |
| バッファー | TelescopeStore.setCapacity、TelescopeKind、atUs、limit、minLevel のセマンティクス |
| カーソルとフィルター | 読み取り拡張機能の since / type / logger / cursor、--follow、followCursor |
コントリビューション
git clone https://github.com/fluttersdk/telescope.git
cd telescope && dart pub get
flutter test && dart analyze
現在、497 件のテストがすべて成功しています。新しい動作には対応するテストを追加してください(レッド、グリーン、リファクタリング)。dart format lib/ test/ bin/ で差分が発生せず、dart analyze で lib/、test/、bin/ の問題がゼロである必要があります。
プルリクエストを作成する前に、次のコマンドも実行してください。
dart format lib/ test/ bin/ # zero diff
dart analyze # zero issues
dart pub publish --dry-run # validate the publish archive
インスピレーション
Telescope は、Laravel のあらゆるリクエスト、例外、ログ、クエリ、キャッシュヒット、イベントを検索可能なタイムラインに記録する、洗練された開発者向けツールアシスタントである Laravel Telescope に着想を得ています。同じパターンを Flutter に移植し、2026 年にふさわしい 2 つの機能を追加しています。ターミナルネイティブな開発者向けの CLI ファーストなインターフェイスと、AI コーディングエージェントがタイムラインを直接読み取れる 10 ツールの MCP サーバーです。
Magic SDK スイートの一部
Telescope は、Laravel に着想を得た Flutter エコシステムである FlutterSDK Magic suite の 7 つのパッケージのうちの 1 つです。
- magic — Laravel スタイルのフレームワーク(ファサード、ORM、プロバイダー、コントローラー、ルーティング)
- wind — Flutter 向けの Tailwind スタイルの className UI プリミティブ
- fluttersdk_artisan — Telescope が拡張する、純粋な Dart の CLI + MCP 基盤
- fluttersdk_dusk — VM 拡張機能を介した E2E ジェスチャー/スナップショットドライバー
- fluttersdk_telescope(このパッケージ) — VM 拡張機能 + MCP によるランタイムの可観測性
- magic_tinker — 実行中のアプリに接続する REPL
- magic_starter — 認証/プロフィール/チームのスキャフォールディング
ライセンス
MIT ライセンスです。詳細は LICENSE をご覧ください。
FlutterSDK が心を込めて開発しました
Telescope がデバッグの時間短縮に役立ったら、スターを付けてください。ほかの人が見つけやすくなります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。