mcpField
T
testing-mastracode-tui

testing-mastracode-tui

github.com/mastra-ai测试与质量29.2k40 次安装今天更新
代码仓库

关于 testing-mastracode-tui

testing-mastracode-tui 是供开发者在 Konsole 中测试 mastracode 终端界面的指南,涵盖构建设置、交互检查、渲染测试、线程状态行为和单元测试。

主要功能

  1. 01构建并启动 mastracode
  2. 02配置 OpenRouter 提供方
  3. 03测试 TUI 命令与线程状态
  4. 04按指定宽度渲染组件
  5. 05运行 TUI 单元测试

适用场景

  1. 01检查终端组件的对齐和换行
  2. 02验证新建、切换及克隆线程时的任务状态
  3. 03没有 Anthropic 或 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 用作自定义提供方

前提条件

  1. 构建 mastracode 及其依赖项:

    cd /home/ubuntu/repos/mastra
    COREPACK_ENABLE_STRICT=0 pnpm build:mastracode
    

    这可能需要几分钟。如果 pnpm 出现 corepack 问题,可直接安装:npm install -g [email protected]

  2. 如果构建因 @mastra/core 或 @mastra/memory 中已有的 DTS 错误而失败,请使用 --continue,以便下游包(包括 mastracode)仍能构建:

    COREPACK_ENABLE_STRICT=0 pnpm turbo build --filter ./mastracode --continue
    
  3. 如果单元测试因缺少 @mastra/core/workspace 而失败,请先运行 pnpm build:core。

配置自定义提供方(OpenRouter)

如果你没有直接的 Anthropic/OpenAI API 密钥,请将 OpenRouter 配置为自定义提供方:

  1. 编辑 ~/.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"
        }
      ]
    }
    
  2. 启动 mastracode 后,你可能还需要通过 /models → 选择“Custom” → “Activate”来激活自定义模型包。

  3. 检查底部状态栏是否显示正确的模型(例如 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 组件产生的末尾空行
  • 对于前后对比,内联模拟旧逻辑,以确认缺陷确实存在

这种方法能够发现肉眼难以察觉的缺陷,并提供明确的通过/失败证据。

测试线程状态隔离

线程状态测试的关键场景:

  1. 生成任务:明确要求模型使用 task_write 工具。某些模型(例如 minimax)可能不会自动调用它,你可能需要这样说:“请使用 task_write 工具创建一个包含 3 项的任务列表:修复登录漏洞、添加单元测试、更新文档”

  2. 验证任务可见:在状态行与编辑器输入框之间,查找带有 ○/▶/✓ 图标的“Tasks [0/N completed]”部分。

  3. 测试 /new:任务进度组件应完全消失。屏幕应仅显示“Ready for new conversation”和一个空输入框。

  4. 测试 /threads 切换:切换回原线程,消息和任务应能正确恢复。

  5. 测试 /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),以构建所有传递依赖项。
  • 未使用大模型渲染用户消息:按下 Enter 后,用户消息框会立即渲染,无需等待任何大模型响应。你可以在没有可用大模型连接的情况下测试渲染问题——只需提交一条消息并检查带边框的消息框。

运行单元测试

cd /home/ubuntu/repos/mastra
COREPACK_ENABLE_STRICT=0 pnpm --filter mastracode exec vitest run src/tui/__tests__/

更广泛的测试套件中可能存在一些既有测试失败;请重点关注与待验证功能相关的测试。

评论

支持 Markdown