开发与扩展测试与调试

测试与调试

需求

测试应与修改范围匹配。纯 TypeScript 单元测试不能替代 Fabric 服务端、BDS/LSE 或 Electron 原生模块的集成验证。

修改范围最低检查
Shared / Agent Coretypecheck + Vitest
Java AdapterGradle test;涉及世界行为时加真实服务端验证
Bedrock Adaptertypecheck + Vitest;涉及游戏 API 时加 BDS/LSE 验证
通信协议Agent Core 与两个 Adapter 的握手、注册、调用回归
文档站内链接检查 + web 生产构建

架构

测试分三层:

  1. 静态层:TypeScript 类型检查、Java 编译、MDX 构建;
  2. 模块层:Vitest / JUnit 单元与组件测试;
  3. 运行层:Electron、Fabric 服务端和 BDS 的真实连接与工具调用。

协议与工具扩展必须覆盖第三层,因为两端当前存在批量返回形状等实现差异。

执行

TypeScript 工作区

cd d:\McAgent
pnpm typecheck
pnpm test

只检查目标包:

pnpm --filter @mcagent/agent-core typecheck
pnpm --filter @mcagent/agent-core test
pnpm --filter @alice-mod/adapter-bedrock typecheck
pnpm --filter @alice-mod/adapter-bedrock test

Java Adapter

cd d:\McAgent\packages\adapter-java
.\gradlew.bat test
.\gradlew.bat remapJar

仓库的 Java build 在非 CI 环境可能触发 deployToServer,自动复制 JAR 到测试服务器。只需产物时使用 remapJar,避免无意覆盖本地实例。

Agent Core 原生模块

若测试和 Electron 使用不同 ABI:

cd d:\McAgent\packages\agent-core
pnpm rebuild:node
pnpm test
pnpm rebuild:native
pnpm dev

pretest 与 predev 也会调用 scripts/ensure-native.cjs。不要把为 Node 重建的二进制直接用于 Electron,反之亦然。

运行时联调清单

  1. 启动 Agent Core,确认 TCP 服务启动。
  2. 启动一个 Java 或 Bedrock 测试实例。
  3. 确认握手成功且 token 未出现在日志正文。
  4. 确认 register_tools 后工作区工具列表更新。
  5. 调用一个只读工具,再调用目标变更涉及的工具。
  6. 测试断线重连与重新注册。
  7. 协议变更同时测试单次与批量调用。

调试定位

现象优先检查
实例离线TCP 端口、Adapter 实际目标、实例 id 与 token、握手错误
实例在线但无工具register_tools 通知、Schema 归一化、工作区映射
单次成功、批量失败Java 裸数组与 Bedrock 包装返回差异
本地工具可见但执行失败是否同时注册 Schema 和本地 handler
Java 附属工具缺失Fabric entrypoint、同名冲突、注册阶段异常
Bedrock 工具缺失编译输出目录、默认导出 class、LSE require() 路径

文档检查

cd d:\McAgent\web
pnpm build

构建前还应检查相对链接目标是否存在,以及代码围栏、表格和 JSX 大括号是否闭合。