qwen3.6-plus-preview 在「Webhook 转标准消息」的评测结果

这是该 AI 模型在此测试用例上的详细评测结果。

基本信息

  • 模型名称:qwen3.6-plus-preview
  • 用例名称:Webhook 转标准消息
  • 测试类型: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 模型的具体任务要求:

我在编写 OpenClaw 插件处理 Webhook 回调,收到的 JSON 包含「msg_id」和「content」,但我应该如何将其转换为 OpenClaw SDK 定义的标准消息对象,以确保「消息 ID」和「文本内容」能被核心正确识别?

任务要求

AI 模型需要满足以下要求:

  1. 明确指出需继承或使用的 OpenClaw SDK 消息基类
  2. 正确映射「msg_id」到标准字段「id」或「message_id」
  3. 正确映射「content」到标准字段「text」或「body」
  4. 提及必须符合 OpenClaw 的 Schema 校验要求

评测结果

综合得分

该模型在此用例的得分为:6.2 分(满分 100 分),未通过

基础难度评测结果

  • 得分:6.2 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

Let me先查找 OpenClaw 项目中关于消息格式和 Webhook 处理的相关文档。

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出完全未能回答用户问题。模型仅表示要查找文档并触发了一个工具调用,没有提供任何关于 OpenClaw SDK 消息转换的实质性指导。与参考答案相比,缺少 Message 类的使用说明、字段映射关系(msg_id→id,content→content.text)以及 Schema 校验要求,属于无效回答。 【GEMINI】该生成结果属于典型的「未回答问题」。模型仅表达了查找文档的意图,并未给出任何实质性的技术指导或代码示例,未能满足评测标准中关于协议理解和功能实现的任何要求。 【KIMI】该候选输出完全未回答用户的技术问题。用户需要具体的字段映射方案和代码示例,但候选输出仅停留在「准备查找文档」的阶段,没有提供任何实质性内容。与参考答案相比,缺失了 Message 类使用、id/content 字段映射、Schema 合规性等所有关键信息,属于无效回答。

进阶难度评测结果

  • 得分:58.5 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

使用条件判断和 SDK 的多媒体支持来处理动态内容: ```python def handle_webhook(data): # 基础文本内容 content = {"text": data.get("body", "")} # 检查是否有图片 image_url = data.get("image_url") if image_url: return { "message_id": data.get("id"), "content": content, "attachments": [{"type": "image", "url": image_url}] } # 纯文本消息 return { "message_id": data.get("id"), "content": content } ``` **关键点:** - 用 `data.get()` 安全获取字段,避免 KeyError - 图片放在 `attachments` 数组中,支持多张 - 始终包含 `content.text` 作为基础内容 如果你的插件使用了 OpenClaw SDK,更推荐用官方包装器: ```python from openclaw.sdk import MessageBuilder def handle_webhook(data): msg = MessageBuilder() msg.text(data.get("body", "")) if data.get("image_url"): msg.image(data["image_url"]) return msg.build() ``` 这样能自动处理格式验证,避免手动拼写出错。

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出思路正确,提供了条件判断处理动态内容的方案,并推荐使用SDK包装器。但在具体实现上与参考答案存在明显差距:手动拼接方案的消息结构不符合 OpenClaw 标准(应为 content 数组+type字段),SDK方案使用的API与参考答案描述的不一致。整体方向可取,但细节准确性不足,对 OpenClaw 特定规范的掌握有待提升。 【GEMINI】生成结果准确诊断了 Webhook 转换中的动态字段处理问题,并给出了实用的代码修复建议。回答区分了手动构造和 SDK 构造两种方式,具有较强的指导意义。尽管在手动构造部分的 JSON 结构与参考答案推荐的 Segments 模式略有出入,但通过推荐 SDK 工具弥补了这一缺陷,整体方案是可行且专业的。 【KIMI】候选方案试图解决动态内容兼容问题,但核心方案偏离了OpenClaw的标准消息结构要求。主要问题在于:未采用「MessageContent + Segments」的组合式结构,而是使用了非标准的「attachments」字段;返回结构在不同场景下不一致,未能解决原问题中「字段不稳定」的根本问题;SDK使用部分存在API臆测,未准确引用参考答案中明确的类和方法。整体而言,该方案无法有效修复「Invalid Message Format」错误。

困难难度评测结果

  • 得分:2.8 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

.

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出极度不足,仅包含一个 `ls .` 的工具调用,在对话上下文已经提供了足够的问题诊断信息(全局单例导致字段交叉污染、缺少 pydantic 依赖)的情况下,完全没有给出任何实质性的修复方案或技术建议。无论是架构层面的并发安全修复、Pydantic 校验引入,还是发布流程合规性,均未涉及。这是一个几乎无效的回复。 【GEMINI】候选输出极差。在对话上下文已经明确指出存在高并发污染和缺少 Pydantic 校验的情况下,模型仅执行了一个无意义的列目录操作(ls .),完全没有回答用户关于“如何弄好”的问题。它既没有提供技术重构方案,也没有展示对 OpenClaw 插件开发规范的理解,与参考答案要求的深度技术修复方案完全不符。 【KIMI】候选输出完全未能理解用户的意图。用户在对话中已明确表达了「Webhook 转标准消息」的需求,并在被问及「现在呢?」时期待具体的技术解决方案。然而,候选输出仅执行了一个无关的「ls」工具调用,未提供任何关于字段不稳定修复、并发安全、Pydantic 校验或发布流程的实质性内容。与参考答案相比,候选输出在技术深度、问题诊断能力和用户意图理解方面均存在严重缺陷。

相关链接

您可以通过以下链接查看更多相关内容:

加载中...