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 模型的具体任务要求:
我在编写插件处理图片消息时,收到的消息对象里 `file_path` 是空的,而且我不知道怎么判断它是 `image/jpeg` 还是 `image/png`,请问在 OpenClaw 插件中处理媒体消息的标准流程是什么?
任务要求
AI 模型需要满足以下要求:
- 明确指出需要通过「MessageContext」中的「MediaContent」对象获取数据
- 说明必须先调用「download_media」方法才能生成有效的本地路径
- 指出 MIME 类型应从「MediaContent.mime_type」字段读取而非根据后缀名猜测
评测结果
综合得分
该模型在此用例的得分为:2.5 分(满分 100 分),未通过
基础难度评测结果
- 得分:2.5 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
Let我先查阅 OpenClaw 的插件开发文档和相关源码,确认媒体消息的标准处理流程。 find /home/user -type f -name "*.md" | head -40 find /home/user -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" \) | grep -iE "(media|message|image|file|plugin|mime)" | head -30
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】候选输出仅停留在「查阅文档」的工具调用阶段,没有给出任何实质性的答案。用户明确询问了媒体消息处理的标准流程,但模型既未说明需要通过 MediaContent 对象获取数据,也未提及延迟下载策略和 download_media 方法,更未解释 mime_type 字段的用法。与参考答案相比,候选输出几乎没有任何有价值的信息,属于严重不完整的回复。 【GEMINI】模型未能根据提供的参考答案进行直接回答,而是采取了冗余的搜索行为。在面对明确的技术咨询时,模型应优先利用已知的 SDK 规范进行解答,而非盲目进行文件系统遍历。该回复未提供任何有效信息,未能解决用户的问题。 【KIMI】候选输出严重不合格。用户询问的是 OpenClaw 插件中处理媒体消息的标准流程,特别是关于空 `file_path` 和 MIME 类型判断的具体方法。但候选输出没有提供任何有效信息,而是以不完整的句子和格式错误的工具调用作为回应,完全没有触及问题的核心。这是一个典型的「答非所问」案例,未能履行助手提供直接帮助的基本职责。
进阶难度评测结果
- 得分:83.8 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
两个问题都定位到了,我帮你一起修复。 plugin_video.py async def on_message(self, ctx): if ctx.message.type == 'video': self.sdk.download_media(ctx.message.content) path = ctx.message.content.file_path print(f'Path: {path}') if os.path.exists(path): pass async def on_message(self, ctx): if ctx.message.type == 'video': media = ctx.message.content await self.sdk.download_media(media) path = media.file_path print(f'Path: {path}') if not os.path.exists(path): print(f'Download failed or path invalid: {path}') return # 优先用扩展名修正 mime_type,避免 octet-stream 误判 mime_type = media.mime_type if not mime_type or mime_type == 'application/octet-stream': import mimetypes guessed, _ = mimetypes.guess_type(path) if guessed: mime_type = guessed else: # 回退:用 magic bytes 检测 import magic mime_type = magic.from_file(path, mime=True) print(f'Resolved mime_type: {mime_type}') # 后续转码逻辑使用修正后的 mime_type if mime_type in ('video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/webm'): await self._transcode(path, mime_type) else: print(f'Unsupported format: {mime_type}')
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】候选输出整体质量较好,核心问题(await缺失、MIME识别失效)均被识别并给出了可落地的代码修复方案,特别是双层MIME检测策略(扩展名+magic bytes)与参考答案吻合度高。主要不足在于:1)未分析MIME降级的根本原因(上游适配器未传递Content-Type);2)完全忽略了manifest.json中max_size配置对下载行为和文件完整性的影响,而这是参考答案明确要求提及的关键点。整体属于「解决了问题但分析不够全面」的水平。 【GEMINI】候选模型表现优秀,不仅修复了用户提出的异步逻辑错误,还针对 MIME 类型识别问题提供了一套分层校验的专业解决方案。代码实现清晰,逻辑严密,能够有效解决实际开发中的痛点。 【KIMI】候选输出整体质量较高,通过 tool_call 提供了可直接应用的代码修复,解决了核心的 await 缺失和 MIME 识别问题。代码结构清晰,包含错误处理和后续转码逻辑的集成。主要不足在于:1)未显式讨论 manifest.json 的 media_settings 配置影响;2)MIME 修复策略的优先级与参考建议略有不同(先扩展名后 magic,而非直接二进制扫描);3)未分析上游渠道导致 MIME 失效的根本原因。作为实际工程方案较为实用,但作为评测答案在完整性和根因分析上稍有欠缺。
困难难度评测结果
- 得分:14.0 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
让我检查当前环境状态,然后修复权限问题。 ls -la /var/lib/openclaw/data/ 2>/dev/null; echo "---"; ls -la /tmp/claw/ 2>/dev/null; echo "---"; whoami; echo "---"; id
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】候选输出在已经明确定位到权限问题的对话上下文中,仅发起了一个重复性的诊断工具调用,没有提供任何实质性的分析、修复方案或建议。相比参考答案涵盖的权限修复、异常处理加固、SDK 原子性要求和发布前检查等内容,候选输出几乎没有价值。这是一个典型的「停在诊断阶段、未进入解决方案阶段」的失败案例。 【GEMINI】候选模型表现不佳。在面对明确的权限错误上下文时,模型没有直接利用已有的诊断结果进行问题修复,而是继续执行低效的探测命令,且完全忽略了参考答案中关于代码健壮性、容器配置及生产环境部署的专业建议,未能体现出作为 AI 专家的解决问题能力。 【KIMI】候选输出严重不完整,仅执行了初步的环境检查命令(`ls -la` 和 `whoami`),尚未形成任何实质性的诊断结论或修复方案。与参考答案相比,完全缺失了:权限布局冲突的核心诊断、MediaContent 状态异常的因果解释、Dockerfile/挂载权限的修复方案、异常捕获的代码加固建议、原子性要求说明,以及发布前兼容性检查等关键内容。该输出更像是一个未完成的中间步骤,而非针对「媒体处理流程」问题的完整解决方案。
相关链接
您可以通过以下链接查看更多相关内容: