testing-mastracode-tui について
testing-mastracode-tui は、Konsole で mastracode のターミナル UI をテストする開発者向けガイドです。セットアップ、対話操作、描画、スレッド状態、ユニットテストを扱います。
主な機能
- 01mastracode のビルドと起動
- 02OpenRouter プロバイダーの設定
- 03TUI コマンドとスレッド状態のテスト
- 04指定幅でのコンポーネント描画
- 05TUI のユニットテスト実行
活用シーン
- 01ターミナル部品の配置と折り返しを確認
- 02新規・切り替え・複製スレッド間のタスク状態を検証
- 03Anthropic または OpenAI の直接キーなしで mastracode をテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mastra-ai/ mastra --skill testing-mastracode-tuiインストール後、Claude Code で/testing-mastracode-tuiを入力して読み込まれたか確認します。
詳細
Mastracode TUI のテスト
Konsole で mastracode のターミナル UI を対話形式でテストするためのガイドです。
必要な Devin シークレット
OPENROUTER_API_KEY— Anthropic/OpenAI のキーを利用できない場合に、OpenRouter をカスタムプロバイダーとして使用するために必要です
前提条件
-
mastracode とその依存関係をビルドします。
cd /home/ubuntu/repos/mastra COREPACK_ENABLE_STRICT=0 pnpm build:mastracodeこれには数分かかる場合があります。
pnpmで corepack の問題が発生する場合は、直接インストールしてください:npm install -g [email protected] -
@mastra/coreまたは@mastra/memoryの既存の DTS エラーが原因でビルドに失敗する場合は、--continueを使って、mastracode を含む後続のパッケージもビルドされるようにします。COREPACK_ENABLE_STRICT=0 pnpm turbo build --filter ./mastracode --continue -
@mastra/core/workspaceが見つからず単体テストに失敗する場合は、先にpnpm build:coreを実行します。
カスタムプロバイダー(OpenRouter)の設定
Anthropic/OpenAI の API キーを直接お持ちでない場合は、OpenRouter をカスタムプロバイダーとして設定します。
-
~/.local/share/mastracode/settings.jsonを編集します。{ "customProviders": [ { "name": "OpenRouter", "url": "https://openrouter.ai/api/v1", "apiKey": "<OPENROUTER_API_KEY value>", "models": ["minimax/minimax-m2.7"] } ], "models": { "activeModelPackId": "custom:Custom", "modeDefaults": { "build": "openrouter/minimax/minimax-m2.7", "plan": "openrouter/minimax/minimax-m2.7", "fast": "openrouter/minimax/minimax-m2.7" } }, "customModelPacks": [ { "name": "Custom", "models": { "build": "openrouter/minimax/minimax-m2.7", "plan": "openrouter/minimax/minimax-m2.7", "fast": "openrouter/minimax/minimax-m2.7" }, "createdAt": "2026-01-01T00:00:00.000Z" } ] } -
mastracode の起動後、
/models→ 「Custom」を選択 → 「Activate」でカスタムパックを有効にする必要がある場合もあります。 -
画面下部のステータスバーに正しいモデルが表示されていることを確認します(例:
build openrouter/minimax/minimax-m2.7)。
Mastracode の起動
cd /home/ubuntu/repos/mastra/mastracode
COREPACK_ENABLE_STRICT=0 pnpm cli
初回起動時に、mastracode のセットアップウィザードが表示される場合があります。「Skip」を選択すると、モデルを対話形式で設定せずにメインの TUI に進めます。
主な TUI コマンド
| コマンド | 操作 |
|---|---|
/new | 新しい空のスレッドを作成 |
/threads | スレッド選択画面を開く(↑↓で移動、Enterで選択) |
/clone | 現在のスレッドを複製 |
/models | モデルパックを切り替える |
/help | 利用可能なすべてのコマンドを表示 |
プログラムによる描画テスト
境界線の位置合わせ、パディング、折り返しなどの表示・描画の不具合を調べる場合は、コンポーネントを直接描画する簡単な tsx スクリプトを書くほうが、目視だけで確認するよりも確実です。
cd /home/ubuntu/repos/mastra/mastracode
npx tsx test-script.ts
主なアプローチ:
- コンポーネントを直接インポートします(例:
./src/tui/components/user-message.jsのUserMessageComponent) - 指定した幅で描画し、ANSI コードを除去して表示文字幅を測定します
- (枠線付きコンポーネントの場合)すべての行の表示幅が同じであることをアサートします
- 複数のターミナル幅(40、60、80、100、120 以上)でテストし、エッジケースを検出します
- 測定時には
Spacerコンポーネントによる末尾の空行を除外します - 変更前後を比較する場合は、古いロジックをインラインで再現し、不具合が存在することを確認します
この方法では、目視では見つけにくい不具合を検出でき、合否を具体的に示せます。
スレッド状態の分離テスト
スレッド状態をテストする際の主なシナリオ:
-
タスクを生成する:モデルに
task_writeツールを明示的に使うよう依頼します。モデルによっては(例:minimax)、自動で呼び出さない場合があるため、「task_writeツールを使って、ログインの不具合修正、単体テストの追加、ドキュメントの更新の 3 項目からなるタスクリストを作成してください」のように伝える必要があります。 -
タスクが表示されることを確認する:ステータス行とエディター入力欄の間に、「Tasks [0/N completed]」セクションがあり、○/▶/✓ アイコンが表示されていることを確認します。
-
/newをテストする:タスクの進行状況を表示するコンポーネントが完全に消えることを確認します。画面には「Ready for new conversation」と空の入力欄だけが表示されます。 -
/threadsによる切り替えをテストする:元のスレッドに戻り、メッセージとタスクが正しく復元されることを確認します。 -
/cloneをテストする:複製したスレッドでは、タスクが空の状態で開始されることを確認します(タスクは一時的なもので、複製先には保存されません)。
よくある問題
- 観察メモリのエラー:OM モデルに関する
GOOGLE_GENERATIVE_AI_API_KEYのエラーが表示されることがあります。/omまたは settings.json(models.omModelOverride)で、OM モデルを OpenRouter モデルに設定すると解決できます。テスト中に観察が実行されることを想定している場合は、OM モデルを設定してください。 - モデルがツールを呼び出さない:能力が低いモデルは、mastracode のツールシステムを使用しないことがあります。特定のツール名を指定して、使用するよう明示的に指示してください。
- ステータスバーに誤ったモデルが表示される:settings.json を変更した後、カスタムパックを有効にするために、TUI で
/modelsを実行する必要がある場合があります。 - ビルドの失敗:
pnpm cliがモジュール解決エラーで失敗する場合は、リポジトリのルートでpnpm build:mastracode(または--continueを付けて)を実行し、すべての推移的依存関係をビルドしてください。 - LLM を使わないユーザーメッセージの表示:ユーザーメッセージのボックスは、LLM の応答より先に、Enter キーを押すとすぐに表示されます。LLM への接続が機能していなくても、メッセージを送信して枠線付きのボックスを確認することで、表示の不具合をテストできます。
ユニットテストの実行
cd /home/ubuntu/repos/mastra
COREPACK_ENABLE_STRICT=0 pnpm --filter mastracode exec vitest run src/tui/__tests__/
より広範なテストスイートには、既存のテスト失敗が含まれている場合があります。検証する機能に関連するテストに重点を置いてください。