OpenAI: gpt-oss-120b 在「多用户机器隔离」的评测结果
这是该 AI 模型在此测试用例上的详细评测结果。
基本信息
- 模型名称:OpenAI: gpt-oss-120b
- 用例名称:多用户机器隔离
- 测试类型:xsct-a
- 评测维度:Gateway 配置与管理
系统提示词(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 Gateway,一个给研发用,一个给测试用,互不干扰。我该怎么指定不同的「数据存储路径」和「服务端口」来启动它们?请给出具体的命令行示例。
任务要求
AI 模型需要满足以下要求:
- 正确识别并使用 --data-dir 或环境变量 OPENCLAW_DATA_DIR 指定隔离的数据目录
- 正确识别并使用 --port 或环境变量 OPENCLAW_PORT 指定不同的监听端口
- 明确指出两个实例需要指向不同的目录以实现「配置与日志隔离」
- 回复内容需包含完整的启动命令示例
评测结果
综合得分
该模型在此用例的得分为:57.8 分(满分 100 分),未通过
基础难度评测结果
- 得分:57.8 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
下面给出一种 **最常见的做法**(基于 OpenClaw 官方 CLI),通过 **独立的配置文件** 为每个 Gateway 实例指定不同的 **数据存储路径** 与 **服务端口**,然后分别启动它们。 --- ## 1️⃣ 为研发环境准备配置文件 `dev-gateway.yaml` ```yaml # dev-gateway.yaml gateway: # 用于存放所有持久化数据(缓存、日志、数据库等)的目录 data-dir: /opt/openclaw/data/dev # ← 请自行创建或使用已有目录 # 对外提供 HTTP/WS 接口的端口 listen-port: 8080 # ← 研发专用端口 # (可选)绑定的网络接口,默认 0.0.0.0(所有地址) listen-addr: 0.0.0.0 # 其它可选项(日志级别、TLS、最大并发数等)可自行添加 ``` ## 2️⃣ 为测试环境准备配置文件 `test-gateway.yaml` ```yaml # test-gateway.yaml gateway: data-dir: /opt/openclaw/data/test # ← 与研发环境分离的存储路径 listen-port: 8081 # ← 测试专用端口(与研发端口不同) listen-addr: 0.0.0.0 ``` > **提示** > - 确保上述 `data-dir` 目录已经存在且当前运行用户有读写权限。 > - 如需使用 TLS、身份认证等高级功能,可在同一 `gateway:` 节点下继续添加对应的键值。 --- ## 3️⃣ 启动两个独立的 Gateway 实例 ### 研发专用实例(后台运行) ```bash # 直接在终端启动,使用 & 将其放入后台;或使用 --daemon(若 CLI 支持): openclaw gateway start --config /opt/openclaw/config/dev-gateway.yaml & ``` ### 测试专用实例(后台运行) ```bash openclaw gateway start --config /opt/openclaw/config/test-gateway.yaml & ``` > **如果你的 `openclaw` CLI 提供 `--daemon` 参数**(多数发行版都有),可以改写为: ```bash openclaw gateway start --config /opt/openclaw/config/dev-gateway.yaml --daemon openclaw gateway start --config /opt/openclaw/config/test-gateway.yaml --daemon ``` --- ## 4️⃣ 验证两套服务是否已成功启动 ```bash # 查看进程(示例,只要能看到两个 openclaw gateway 进程即可) ps aux | grep openclaw | grep gateway # 或者直接检查对应端口是否在监听 netstat -tlnp | grep -E '8080|8081' # 预期输出类似: # tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN /openclaw # tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN /openclaw ``` --- ## 5️⃣ 常见的故障排查 | 症状 | 可能原因 | 处理办法 | |------|----------|----------| | 启动时报 “port already in use” | 端口被其他进程占用 | 更换 `listen-port`,或先 `kill` 已占用的进程 | | 启动后日志写不到指定目录 | `data-dir` 权限不足 | `chmod/chown` 目录,确保运行用户可写 | | 两个实例相互干扰(如共享同一 DB) | 配置文件中 `data-dir` 指向同一位置 | 确认 `data-dir` 完全不同,或在每个目录下分别初始化独立的数据库 | --- ### 小结 1. 为每个环境准备 **独立的 YAML 配置文件**,在其中明确 `data-dir` 与 `listen-port`。 2. 使用 `openclaw gateway start --config ` 启动实例,配合 `&`(或 `--daemon`)让它们在后台运行。 3. 通过 `ps` / `netstat` 检查确认两套服务分别占用 **8080** 与...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】模型理解了多实例隔离的核心需求(不同数据目录、不同端口),并给出了结构完整、格式清晰的回答,包含配置示例、启动命令、验证步骤和故障排查。然而,模型自行发明了一套基于 YAML 配置文件(`--config` 参数)的方案,完全未使用参考答案要求的 `--port`、`--data-dir` 命令行参数,也未提及 `OPENCLAW_DATA_DIR` 环境变量。这是对 OpenClaw Gateway 启动参数的根本性误判,导致参数准确性严重失分。整体而言,方向正确但实现方式与标准答案不符。 【GEMINI】模型生成的回复质量极高,不仅满足了用户对于隔离数据目录和端口的需求,还提供了更具工程实践意义的配置文件方案。回复结构清晰,步骤详尽,且包含了必要的验证和排查手段,展现了极强的专业性。 【KIMI】该模型回复存在明显的「幻觉」问题:invented 了 OpenClaw CLI 不支持的 --config 参数和 YAML 配置文件格式,与 System Prompt 中明确给出的 CLI Quick Reference 相矛盾。参考答案明确使用 `openclaw-gateway --port 8001 --data-dir /path` 的命令行参数方式,而模型错误地采用了复杂的配置文件方案。虽然回复结构完整、细节丰富,但核心功能实现方式错误,可能导致用户无法正确执行。模型未能严格遵循 System Prompt 中关于 OpenClaw CLI 的文档约束,属于典型的过度发挥和指令偏离。
进阶难度评测结果
- 得分:92.0 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
下面给出一套 **完整、可直接复制粘贴的操作步骤**,帮助你为新用户 **UserB** 在同一台机器上创建一个 **完全隔离** 的 OpenClaw 实例,并确保 **UserB** 只能访问自己的数据、日志和认证令牌,绝对不会看到第一个实例的任何内容。 --- ## 1️⃣ 规划目录结构(推荐放在 `/opt/openclaw`) | 实例 | 数据目录 | 日志目录 | 认证令牌文件 | |------|----------|----------|--------------| | Instance‑A(已有) | `/var/lib/openclaw-default` | `/var/lib/openclaw-default/logs` | `gateway.db`(默认在数据目录) | | Instance‑B(新) | `/opt/openclaw/userb/data` | `/opt/openclaw/userb/logs` | `/opt/openclaw/userb/data/gateway.db` | > **为什么放在 `/opt/openclaw`?** > - 便于统一管理,且默认不在系统服务的默认搜索路径里,降低误操作风险。 > - 只要目录权限设置得当,普通用户(包括 UserB)只能访问自己目录。 --- ## 2️⃣ 为 **UserB** 创建系统用户(如果尚未创建) ```bash # 以 root 身份执行 useradd -m -s /bin/bash userb # 为 UserB 设置密码(交给他自行修改) passwd userb ``` > **提示**:如果你已经有 `userb`,直接跳到第 3 步。 --- ## 3️⃣ 创建隔离的数据和日志目录,并拷贝默认配置 ```bash # 创建目录结构 mkdir -p /opt/openclaw/userb/data mkdir -p /opt/openclaw/userb/logs # 复制默认配置(只复制 config.yaml,避免把旧的 gateway.db 带过去) cp /var/lib/openclaw-default/config.yaml /opt/openclaw/userb/data/ #(如果你希望使用完全相同的默认配置,可自行编辑 config.yaml) # 将目录的拥有者改为 userb(确保只有他自己能读写) chown -R userb:userb /opt/openclaw/userb chmod -R 750 /opt/openclaw/userb ``` > **关键点** > - `gateway.db`(认证令牌)**不会**被拷贝,实例 B 启动时会自动生成一个全新的 SQLite 数据库。 > - 只给 `userb` 读写权限,其他用户(包括运行实例 A 的用户)只能 `execute`(如果需要)或根本看不到。 --- ## 4️⃣ 为实例 B 选择一个 **不冲突的端口**(假设实例 A 用 9000) 常用做法是使用 9000+N: ```bash NEW_PORT=9010 # 任选一个未被占用的端口,下面会检查 ``` --- ## 5️⃣ 启动 **UserB** 的独立 OpenClaw 实例 有两种常见启动方式,你可以任选其一: ### 5.1 直接使用 `openclaw gateway start`(一次性手动方式) ```bash # 切换到 userb(或使用 sudo -u) sudo -u userb openclaw gateway start \ --port $NEW_PORT \ --data-dir /opt/openclaw/userb/data \ --log-dir /opt/openclaw/userb/logs ``` - `--data-dir` 指向全新目录,内部会生成独立的 `gateway.db`(认证令牌)。 - `--log-dir` 把日志写入自己的目录,**不会**出现在实例 A 的 `logs/` 中。 ### 5.2 作为系统服务(推荐生产环境) 如果你希望实例 B 能随系统启动、自动重启,可为它创建一个 **systemd** 单元文件。 ```bash cat > /etc/systemd/system/openclaw-userb.service <<'EOF' [Unit] Description=OpenClaw Gateway for UserB After=network.target [Service] Type=simple User=userb Group=userb...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】模型生成结果质量极高,全面覆盖了参考答案的所有要点,并在多个维度上有所超越:提供了 systemd 服务化方案、SELinux/AppArmor 强化建议、详细的验证步骤和清晰的对比表格。文件系统权限设计合理,应用层隔离(data-dir、port、log-dir)与 OS 层隔离(用户权限)结合得当。逻辑结构清晰,步骤可直接复制执行。整体是一个接近生产级别的隔离方案,略有冗余但瑕不掩瑜。 【GEMINI】模型表现非常出色,不仅准确回答了用户关于隔离环境的需求,还主动扩展了生产环境下的最佳实践(如 systemd 服务化、权限细化)。回复结构清晰,步骤可操作性强,且充分考虑了安全性,是一个高质量的专业技术指导。 【KIMI】该模型生成结果是一份高质量的技术实施方案,在参考答案的基础上进行了专业且实用的扩展。不仅完整覆盖了所有功能要求,还额外提供了生产环境部署(systemd)、安全强化等进阶内容。步骤详尽、可操作性强,验证环节设计合理。主要不足在于命令格式与系统提示中的CLI参考存在细微差异,以及部分扩展内容(如SELinux/AppArmor)对于基础隔离需求可能略显冗余,但整体而言是一份优秀的工程化解决方案。
困难难度评测结果
- 得分:13.2 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
Let's check current user.assistantcommentary to=exec code{"cmd":["bash","-lc","whoami"]}
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】模型生成结果严重不足,面对已经明确的双重故障(端口占用和权限拒绝),仅执行了`whoami`命令而没有提供任何实质性的诊断、修复建议或最终启动命令。与参考答案要求的完整故障排查和多租户隔离方案相比,差距极大,基本属于无效回复。 【GEMINI】模型在面对明确的系统错误(权限不足、端口占用)时,未能结合上下文进行有效的逻辑推理和修复,表现极差。它忽略了用户关于「多用户机器隔离」的核心需求,仅执行了一个无关紧要的 whoami 命令,未能提供任何有价值的解决方案或建议。 【KIMI】模型表现极差,完全未能完成「多用户机器隔离」的任务。用户已通过预设上下文提供了完整的故障诊断信息(8080 端口占用、/etc/openclaw/tenant1 目录属主为 root 导致权限拒绝),但模型仅执行了一个冗余的 `whoami` 命令,没有整合信息、没有给出修复方案、没有提供最终启动命令,也没有验证建议。响应处于未完成状态,专业性和实用性均严重不足。
相关链接
您可以通过以下链接查看更多相关内容: