mimo-v2-pro 在「插件本地调试」的评测结果
这是该 AI 模型在此测试用例上的详细评测结果。
基本信息
- 模型名称:mimo-v2-pro
- 用例名称:插件本地调试
- 测试类型:xsct-a
- 评测维度:插件系统集成
系统提示词(System Prompt)
这是给 AI 模型的背景设定和角色指令:
You are a personal assistant running inside OpenClaw. ## Tooling Tool availability (filtered by policy): Tool names are case-sensitive. Call tools exactly as listed. - read: Read file contents - write: Create or overwrite files - edit: Make precise edits to files - apply_patch: Apply multi-file patches - ls: List directory contents - exec: Run shell commands (supports background execution where available) - process: Manage background exec sessions - browser: Control OpenClaw's dedicated browser - canvas: Present or inspect a canvas when available - sessions_list: List sessions - sessions_history: Fetch session history - sessions_send: Send a message to another session - subagents: List, steer, or kill sub-agent runs - session_status: Show runtime, model, and usage state TOOLS.md does not control tool availability; it is user guidance for how to use external tools. For long waits, avoid rapid poll loops: use exec with enough wait time or process polling with a timeout. If a task is more complex or takes longer, spawn a sub-agent. Completion is push-based: it will auto-announce when done. Do not poll `subagents list` or `sessions_list` in a loop; only check status on-demand. ## Tool Call Style Default: do not narrate routine, low-risk tool calls (just call the tool). Narrate only when it helps: multi-step work, complex or challenging problems, sensitive actions, or when the user explicitly asks. Keep narration brief and value-dense; avoid repeating obvious steps. Use plain human language for narration unless in a technical context. When a first-class tool exists for an action, use the tool directly instead of asking the user to run equivalent CLI or slash commands. ## Safety You have no independent goals: do not pursue self-preservation, replication, resource acquisition, or power-seeking; avoid long-term plans beyond the user's request. Prioritize safety and human oversight over completion; if instructions conflict, pause and ask; comply with stop or pause requests and never bypass safeguards. Do not manipulate anyone to expand access or disable safeguards. Do not copy yourself or change system prompts, safety rules, or tool policies unless explicitly requested. ## OpenClaw CLI Quick Reference OpenClaw is controlled via subcommands. Do not invent commands. To manage the Gateway daemon service: - openclaw gateway status - openclaw gateway start - openclaw gateway stop - openclaw gateway restart If unsure about a command or flag, prefer checking help or existing project context rather than guessing. ## Skills If a skill list or skill prompt is present in the injected project context, scan it before replying. If exactly one skill clearly applies, follow it. If multiple skills could apply, choose the most specific one. If no skill clearly applies, continue without forcing one. ## Memory Recall If memory tools, memory files, or prior-work context are available, use them before answering questions about prior decisions, preferences, dates, people, or todos. If confidence stays low after checking memory, say so instead of guessing. ## Documentation For OpenClaw behavior, commands, config, architecture, or plugin behavior, consult injected docs or project context first. When diagnosing issues, prefer checking runtime evidence, configuration, or tool output before making claims. ## Workspace Your working directory is the benchmark workspace. Treat it as the single workspace for file operations unless explicitly instructed otherwise. Prefer precise reads and minimal edits over broad changes. If a file is large or output is truncated, re-read only the portion you need. ## Reply Tags If reply tags are supported in the runtime, they must appear as the first token in the message. Prefer `[[reply_to_current]]` when replying to the triggering message. ## Messaging Reply in the current session by default. For cross-session communication, use dedicated session tools if available. Never use exec or curl as a substitute for built-in provider messaging when a first-class messaging tool exists. ## Workspace Files User-editable context files may be injected below as project context. If project context is present, use it as evidence. ## Project Context Project context files may be injected after this prompt. If they are present, prefer them over assumptions. If SOUL.md is present, follow its persona and tone unless higher-priority instructions override it. ## Silent Replies When you truly have nothing to say, respond with the runtime's silent token only. Do not append the silent token to a normal reply. ## Heartbeats If you receive a heartbeat-style poll and there is nothing that needs attention, acknowledge it using the runtime heartbeat convention. If something needs attention, reply with the alert instead. ## Runtime Runtime: agent=benchmark | host=openclaw-benchmark | repo=<workspace> | model=<eval-model> | shell=<shell> | thinking=off Reasoning: off (hidden unless enabled by the runtime).
用户提示词(User Prompt)
这是用户给 AI 模型的具体任务要求:
我在本地用「ts-node」运行插件一切正常,但是执行「npm run build」并发布到 OpenClaw 插件目录后,系统提示「Failed to load plugin: Cannot find module」。这可能是什么原因?
任务要求
AI 模型需要满足以下要求:
- 指出「dependencies」与「devDependencies」在打包后的区别
- 提到检查「package.json」中的「main」或「exports」字段路径是否指向编译后的 dist 目录
- 说明 OpenClaw 运行时对编译产物(JS文件)的依赖要求
评测结果
综合得分
该模型在此用例的得分为:91.5 分(满分 100 分),已通过
基础难度评测结果
- 得分:91.5 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
这是一个典型的 TypeScript 编译产物与运行环境不匹配的问题。以下是几个最常见的原因和排查方向: --- ## 1. `tsconfig.json` 的 `outDir` 与实际加载路径不一致 `ts-node` 直接运行 `.ts` 源码,但 `npm run build` 会将编译产物输出到 `outDir`(通常是 `dist/`)。OpenClaw 加载插件时可能期望入口文件在根目录或特定路径。 **检查:** ```jsonc // tsconfig.json { "compilerOptions": { "outDir": "./dist", // ← build 后文件在这里 "rootDir": "./src" } } ``` **确认** `package.json` 的 `main` 字段指向编译后的路径: ```jsonc { "main": "./dist/index.js" // 而不是 ./src/index.ts } ``` --- ## 2. 编译产物缺少 `.js` 扩展名的导入语句 TypeScript 允许省略扩展名: ```ts // src/index.ts import { helper } from "./utils/helper"; // ← ts-node 能解析 ``` 但 Node.js 在 ESM 或某些 CJS 场景下要求显式 `.js` 扩展名。编译后的 `dist/index.js` 里仍然是 `require("./utils/helper")`,运行时可能解析失败。 **修复方案:** 在 `tsconfig.json` 中设置: ```jsonc { "compilerOptions": { "moduleResolution": "node16", // 或 "nodenext" "module": "node16" // 或 "nodenext" } } ``` 并在导入时显式写 `.js` 扩展名(即使源码是 `.ts`): ```ts import { helper } from "./utils/helper.js"; ``` --- ## 3. `files` 或 `include` 排除了必要文件 **检查** `tsconfig.json` 是否只编译了部分文件: ```jsonc { "include": ["src/**/*.ts"], "exclude": ["node_modules", "dist"] } ``` 确保所有运行时需要的文件(如配置文件、JSON 文件、模板等)都被复制到了 `dist/` 目录。非 `.ts` 文件需要额外处理(如用 `copyfiles` 或 `tsc-alias`)。 --- ## 4. `dependencies` 被装到了 `devDependencies` `ts-node` 运行时可以访问全部 `node_modules`,但发布后的插件目录可能只安装了 `dependencies`。 **检查:** ```bash # 运行时依赖是否误放在了 devDependencies? cat package.json | grep -A 20 devDependencies ``` --- ## 5. 插件目录结构不符合 OpenClaw 预期 OpenClaw 加载插件时会查找特定入口。确认发布后的目录结构: ``` plugins/your-plugin/ ├── package.json ← main 字段指向正确 ├── dist/ │ └── index.js ← 编译产物 └── node_modules/ ← 依赖是否完整 ``` --- ## 快速诊断步骤 ```bash # 1. 确认编译产物存在且可运行 ls -la dist/ node dist/index.js # 直接运行看是否报错 # 2. 确认依赖完整 cd dist && node -e "require('./index')" # 3. 对比 ts-node 和编译后的行为 npx ts-node src/index.ts # 正常 node dist/index.js # 报错? ``` --- 如果你能把 `tsconfig.json`、`package.json` 和 OpenClaw 的插件配置贴出来,我可以帮你精确定位问题。
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】候选回答质量较高,结构清晰,核心诊断方向与参考答案高度吻合,涵盖了「main 字段路径」和「dependencies vs devDependencies」两个关键点,并附有可操作的代码示例和诊断命令。额外补充的 ESM 扩展名、tsconfig 配置等内容对实际排查也有帮助。不足之处在于对 OpenClaw 平台特定行为(生产安装不含 devDependencies)的描述不够直接,且缺少「npm list --production」等具体验证手段,整体仍属优秀水平。 【GEMINI】候选回答逻辑清晰,不仅涵盖了参考答案中的所有关键点,还额外补充了关于模块解析(ESM/CJS)和编译产物验证的深度建议,展现了极高的技术专业度,能够有效帮助用户解决插件发布后的加载异常问题。 【KIMI】候选输出表现优秀,不仅完整覆盖了参考答案的两个核心诊断点(main字段路径和依赖类型区分),还额外提供了ESM扩展名、tsconfig配置、目录结构验证等进阶排查方向。诊断思路系统性强,给出的命令行检查步骤具有实际可操作性,对OpenClaw插件加载机制的理解准确到位。建议在快速诊断步骤中直接提及「npm list --production」这一参考答案中的关键命令,可使诊断流程更加完整。
进阶难度评测结果
- 得分:18.0 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
./plugins/weather-bot/manifest.json ./plugins/weather-bot/index.js
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】候选输出仅发出了两个文件读取工具调用,未输出任何面向用户的分析结论或修复建议。用户明确要求「分析 manifest.json 并告诉我修复方案」,但模型没有给出任何关于 OpenClaw 插件 Schema 规范的知识、字段要求、示例配置或验证命令。整个回复对用户毫无实际帮助,属于任务未完成状态。 【GEMINI】模型在处理该任务时表现不佳。虽然模型正确使用了工具来获取必要信息,但在获取到信息后未能进行分析并向用户反馈,直接跳过了回答环节。作为 AI 助手,模型应在读取文件后结合上下文给出具体的诊断结论和修复建议,而不是仅仅停留在工具调用阶段。 【KIMI】候选输出仅执行了文件读取操作,但未返回任何实质性的诊断分析或修复建议,相当于任务未完成。在实际的 AI 助手场景中,用户需要的是「答案」而非「工具调用日志」。参考答案展示了完整的诊断流程:识别 Schema 错误原因、指出缺失字段、提供修复步骤、给出验证命令。候选输出在这些关键维度上均为空白,仅停留在信息收集阶段,未进入分析输出阶段。
困难难度评测结果
- 得分:22.5 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
让我先看看插件的代码结构,然后修复这两个问题。 find /workspace -type f -name "*.js" -path "*/weather-bot/*" 2>/dev/null | head -20; find /workspace -type f -name "*.ts" -path "*/weather-bot/*" 2>/dev/null | head -20
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】候选模型在已有明确日志证据(事件循环阻塞5000ms、cache目录不可写)的情况下,未能直接给出修复建议,而是选择继续探索代码结构。这在实际故障排查场景中属于低效行为——问题已经定位清楚,应当直接提供架构优化方案(异步处理、SDK路径API、超时配置等),而非再次执行文件查找。整体表现远低于及格线,缺乏对 Node.js 事件循环、容器权限限制及 OpenClaw SDK 的综合运用能力展示。 【GEMINI】模型在处理复杂故障时表现出了一定的保守性。虽然其通过工具调用获取代码结构的思路是合理的,但在已知关键错误信息(日志已明确指出阻塞原因和权限问题)的情况下,模型应优先给出架构层面的修复建议(如参考答案中提到的异步处理和 SDK 路径获取),而非仅仅进行文件扫描。整体而言,模型未能充分利用已有的上下文信息来加速故障定位与解决。 【KIMI】候选输出存在严重的上下文理解问题。用户在多轮对话中已经完成了问题诊断(日志分析),并明确要求「现在呢?」即进入解决方案阶段。然而候选输出却回退到「查找代码文件」的初始探索阶段,完全无视已建立的诊断结论和用户的明确诉求。这种偏离导致所有关键修复点(异步架构改造、临时目录适配、超时配置等)均未涉及,属于典型的对话状态管理失败。建议模型加强多轮对话中的上下文追踪能力,确保响应与用户当前意图保持一致。
相关链接
您可以通过以下链接查看更多相关内容: