mcpField
C
cli-backend-testing

cli-backend-testing

github.com/lobehub测试与质量83.6k63 次安装今天更新
代码仓库

关于 cli-backend-testing

指导开发者使用 LobeHub CLI 对接本地开发服务器进行测试,涵盖隔离凭据、设备码登录、后端重启要求及常见测试流程。

主要功能

  1. 01本地服务器与 CLI 配置
  2. 02隔离的开发凭据
  3. 03Device Code Flow 身份验证
  4. 04后端重启指引
  5. 05任务、Agent、文档和提供商测试示例

适用场景

  1. 01端到端验证路由或服务变更
  2. 02检查后端变更后的 CLI 输出
  3. 03测试 API 字段和响应结构
  4. 04排查 CLI 与服务器间的数据流问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lobehub/lobehub --skill cli-backend-testing

安装后在 Claude Code 中输入/cli-backend-testing确认已加载。

详细介绍

CLI + 后端集成测试

使用 LobeHub CLI(lh)针对本地开发服务器验证后端更改的标准工作流。

适用场景

  • 端到端验证 TRPC 路由器、服务或模型更改
  • 测试新增 API 字段或响应结构更改
  • 验证后端修改后 CLI 命令的输出
  • 调试服务器与 CLI 之间的数据流问题

前置条件

要求详情
开发服务器localhost:3011(Next.js)
CLI 源码lobehub/apps/cli/
CLI 开发模式使用 LOBEHUB_CLI_HOME=.lobehub-dev 隔离凭据
身份验证使用 Device Code Flow 登录本地服务器

快速参考

所有 CLI 开发命令均从 lobehub/apps/cli/ 运行:

# Shorthand for all commands below
CLI="LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts"

工作流

步骤 1:确保开发服务器正在运行

检查开发服务器是否已在运行:

curl -s -o /dev/null -w '%{http_code}' http://localhost:3011/ 2> /dev/null
  • 如果可访问(返回任意 HTTP 状态):服务器正在运行。跳至步骤 2。
  • 如果无法访问:启动服务器:
# From cloud repo root
pnpm run dev:next

如需重启(应用服务器端代码更改):

lsof -ti:3011 | xargs kill
pnpm run dev:next

重要: 子模块(lobehub/src/server/、lobehub/packages/)中的服务器端代码更改需要重启服务器。Next.js 热重载可能不会应用子模块包中的更改。

步骤 2:检查 CLI 身份验证

检查开发凭据是否已存在:

cat lobehub/apps/cli/.lobehub-dev/settings.json 2> /dev/null
  • 如果文件存在且包含 "serverUrl": "http://localhost:3011":已完成身份验证。跳至步骤 3。
  • 如果文件不存在或指向错误的服务器:需要登录。请让用户运行:
! cd lobehub/apps/cli && LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts login --server http://localhost:3011

登录需要通过交互式浏览器授权(OIDC Device Code Flow),因此用户必须使用 ! 前缀自行运行。登录后,凭据会保存到 lobehub/apps/cli/.lobehub-dev/,并在会话之间保留。

步骤 3:使用 CLI 命令进行测试

CLI 从源码运行(bun src/index.ts),因此 CLI 端代码更改无需重新构建即可立即生效。

cd lobehub/apps/cli
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts <command>
步骤 4:清理测试数据

删除验证过程中创建的所有测试数据:

LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts task delete < id > -y
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts agent delete < id > -y

常见测试模式

任务系统
# List tasks
$CLI task list

# Create test data with nesting
$CLI task create -n "Root Task" -i "Test instruction"
$CLI task create -n "Child Task" -i "Sub instruction" --parent T-1

# View task detail (tests getTaskDetail service)
$CLI task view T-1

# View task tree
$CLI task tree T-1

# Test lifecycle
$CLI task edit T-1 --status running
$CLI task comment T-1 -m "Test comment"

# Clean up
$CLI task delete T-1 -y
Agent 系统
# List agents
$CLI agent list

# View agent detail
$CLI agent view <agent-id>

# Run agent (tests agent execution pipeline)
$CLI agent run <agent-id> -m "Test prompt"
文档和知识库
# List documents
$CLI doc list

# Create and view
$CLI doc create -t "Test Doc" -c "Content here"
$CLI doc view <doc-id>

# Knowledge base
$CLI kb list
$CLI kb tree <kb-id>
模型和提供商
# List models and providers
$CLI model list
$CLI provider list

# Test provider connectivity
$CLI provider test <provider-id>

开发测试周期

后端开发的标准周期:

1. Make code changes (service/model/router/type)
         |
2. Run unit tests (fast feedback)
   bunx vitest run --silent='passed-only' '<test-file>'
         |
3. Restart dev server (if server-side changes)
   lsof -ti:3011 | xargs kill && pnpm run dev:next
         |
4. CLI verification (end-to-end)
   LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts <command>
         |
5. Clean up test data
需要重启服务器的情况
更改位置是否重启?
lobehub/src/server/(路由器、服务)是
lobehub/packages/database/(模型)是
lobehub/packages/types/是
lobehub/packages/prompts/是
lobehub/apps/cli/(CLI 代码)否
src/(云端覆盖)是
无需重启服务器的情况

CLI 通过 bun src/index.ts 从源码运行,因此对 lobehub/apps/cli/src/ 的任何更改都会在下次调用命令时立即生效。

故障排除

问题解决方案
No authentication found运行 login --server http://localhost:3011
API 调用时出现 UNAUTHORIZEDToken 已过期;重新运行 login
ECONNREFUSED开发服务器未运行;使用 pnpm run dev:next 启动
CLI 显示旧数据/旧行为需要重启服务器以应用代码更改
端口 3011 上出现 EADDRINUSE服务器已在运行;使用 lsof -ti:3011 | xargs kill 终止
登录时打开了错误的服务器必须使用 --server http://localhost:3011 标志(环境变量不起作用)

凭据隔离

模式凭据目录服务器
开发lobehub/apps/cli/.lobehub-dev/localhost:3011
生产~/.lobehub/app.lobehub.com

这两个环境完全隔离。开发模式凭据已加入 gitignore。

评论

支持 Markdown