OpenClaw 大模型面试题(附答案)
以下 30 道题覆盖基础概念、架构设计、记忆机制、工具调用、上下文管理、安全机制等核心维度,按难度递进排列。
一、基础概念篇(Q1-Q8)¶
Q1:OpenClaw 是什么?一句话说清楚它的定位。¶
答案: OpenClaw 是一个开源、本地优先的 AI Agent 框架,通过 WhatsApp、飞书、Telegram 等消息平台连接大模型,让 AI 不仅能“说”,还能真正“做”——执行 Shell 命令、操作文件、调用 API、控制浏览器等。
面试加分话术: “OpenClaw 和 ChatGPT 的本质区别在于——ChatGPT 是对话工具,OpenClaw 是执行框架。前者给你答案,后者帮你干活。”
Q2:OpenClaw 的前身是什么?为什么改名?¶
答案: 演变路径为:Warelay → Clawdbot → Moltbot → OpenClaw。改名主要是为了体现项目定位的演变——从一个简单的机器人框架成长为开放的 AI Agent 执行平台。
Q3:OpenClaw 和普通聊天机器人(如 ChatGPT)的核心区别是什么?¶
| 维度 | ChatGPT | OpenClaw |
|---|---|---|
| 能力边界 | 只输出文本 | 调用工具、执行命令、操作文件 |
| 交互方式 | 一问一答 | 多步自主循环(ReAct) |
| 部署方式 | 云端 SaaS | 本地优先,数据归用户 |
| 记忆机制 | 会话内记忆 | 长期记忆 + 混合检索 |
答案: OpenClaw 是“执行框架”,ChatGPT 是“对话工具”。
Q4:OpenClaw 支持哪些消息平台?¶
答案: 支持 20+ 平台,包括 WhatsApp(Baileys)、Telegram(grammY)、Discord(discord.js)、Slack(Bolt)、飞书、钉钉、Signal、iMessage、IRC、Matrix、Google Chat、Microsoft Teams、LINE 等。
Q5:OpenClaw 的开源许可证是什么?这意味着什么?¶
答案: MIT License。允许个人和商业使用、修改和再发布,对二次开发和商业化非常友好。
Q6:OpenClaw 的技术栈是什么?¶
答案:
-
核心运行时:Node.js v22+
-
开发语言:TypeScript
-
包管理:npm / pnpm / bun
-
消息通道:各平台 SDK(Baileys、grammY、discord.js、Slack Bolt 等)
-
底层推理引擎:Pi 内核(pi-mono)
Q7:什么是“本地优先”?OpenClaw 的数据存在哪里?¶
答案: 所有数据(记忆、会话、配置)默认存储在本地 ~/.openclaw/ 目录,以 Markdown 和 JSON 文件形式保存,不依赖云数据库。Workspace(~/.openclaw/workspace)存放 AGENTS.md、SOUL.md 等配置;State Dir(~/.openclaw/)存放凭证、会话历史。
Q8:OpenClaw 支持哪些大模型?¶
答案: 模型无关设计,支持 GPT、Claude、Gemini、DeepSeek、Llama、Minimax 等。模型通过 provider/model 格式配置,如 openai/gpt-4o、anthropic/claude-sonnet-4-20250514,也支持 OpenRouter 聚合接口。
二、架构设计篇(Q9-Q15)¶
Q9:OpenClaw 的五大核心组件是什么?各自职责是什么?¶
答案:
| 组件 | 职责 |
|---|---|
| Gateway(网关) | WebSocket 服务器(默认 localhost:18789),负责消息路由,不做推理 |
| Brain(大脑) | 核心推理引擎,编排 LLM 调用,运行 ReAct 循环 |
| Memory(记忆) | 两层记忆架构(短期 JSONL + 长期 Markdown),混合检索 |
| Skills(技能) | Markdown 格式的技能模板,存储于 SKILL.md 文件 |
| Heartbeat(心跳) | 主动执行机制,默认每 30 分钟触发一次巡检 |
Q10:Gateway 为什么不做推理?这种设计的优势是什么?¶
答案: Gateway 只负责消息路由——从各消息平台接收消息并分发给 Agent。不做推理是为了模块化解耦:消息通道和 Agent 逻辑分离,更换消息平台(如从飞书切到钉钉)不影响推理流程,便于维护和扩展。
Q11:如果要设计一个同时接入 Telegram、飞书、钉钉的 Agent 系统,你会怎么设计抽象层?¶
答案: 核心思路是适配器模式。三层设计:
-
统一消息模型:定义内部标准
MsgContext,包含 channelId、userId、content、attachments 等字段 -
Channel Adapter:每个渠道实现一个适配器,负责协议转换(如飞书的 webhook 格式转成统一格式)
-
Gateway 路由:Gateway 只与统一模型打交道,不关心底层渠道差异
Q12:Agent Runner 是如何工作的?一次 Agent 运行经历了哪些阶段?¶
答案: Agent Runner 是核心调度器,负责协调 LLM 调用、工具执行、错误处理。完整阶段:
-
排队:先入 session 级队列,再入全局队列
-
准备:解析 workspace、provider/model、thinking level
-
插件+Hook:加载插件,动态覆盖 provider 和 model
-
模型解析+鉴权:确定模型定义、上下文窗口大小,选 API Key
-
尝试执行:LLM 推理 + 工具调用循环
-
溢出降级:上下文超限时触发 compaction 压缩
Q13:一条用户消息从进入系统到收到回复,完整链路是怎样的?¶
答案:
text
用户发送消息 → Channel Adapter 接收原始消息 → 转换为统一 MsgContext → Gateway 入站补全(鉴权、限流、幂等去重)→ Routing 路由匹配(决定交给哪个 Agent)→ 斜杠命令检查(如 /new 重置会话)→ Agent Runner 启动→ LLM + 工具调用循环(ReAct)→ 投递回复到原渠道
Q14:OpenClaw 的多 Agent 模式是如何实现的?¶
答案: OpenClaw 支持多 Agent 模式,每个 Agent 互相独立,拥有专属配置(~/.openclaw/agents/<agentId>/)和独立记忆。通过 OPENCLAW_PROFILE=<name> 环境变量实现 Workspace 隔离,路径变为 ~/.openclaw/workspace-<profile>,用于多 Agent 环境隔离。
Q15:Pi 内核是什么?OpenClaw 与它的关系是怎样的?¶
答案: Pi 内核(pi-mono)是 OpenClaw 内嵌的通用轻量推理引擎,负责模型抽象、流式推理、Agent Loop 和工具执行。OpenClaw 通过 SDK 方式将 Pi 内核嵌入 Gateway,实现三层解耦:
-
Pi:负责“如何执行”(推理循环)
-
OpenClaw:负责“有哪些工具可用”(工具注入)
-
Skills:用户定义“如何组合工具解决具体问题”
三、记忆与上下文篇(Q16-Q21)¶
Q16:OpenClaw 的记忆系统分哪两层?分别怎么存储?¶
答案:
| 记忆类型 | 存储位置 | 内容 |
|---|---|---|
| 短期记忆(会话级) | ~/.openclaw/agents/ |
每轮对话原始记录,JSONL 格式 |
| 长期记忆(跨会话) | ~/.openclaw/workspace/MEMORY.md + memory/*.md | 用户偏好、重要决策、提炼的关键信息 |
短期记忆由系统自动追加;长期记忆通过 Memory Flush 机制自动提炼写入。
Q17:短期记忆和长期记忆之间是怎么转换的?¶
答案: 两种触发机制:
-
session-memory Hook:用户执行
/new重置会话时,自动将上一会话的关键内容转换为 Markdown 写入memory/YYYY-MM-DD.md -
Memory Flush:当会话接近 Context Window 上限时,系统发起静默回合,让 AI 将值得长期保留的内容写入 Memory 文件,然后清理历史——用户完全无感知
Q18:Memory 的索引是怎么建的?为什么用 SQLite 而不是向量数据库?¶
答案: Markdown 文件是记忆本体,SQLite 是加速层。建索引流程:
-
发现:监控 MEMORY.md 和 memory/*.md 变化,标记 dirty
-
切块:按语义将 Markdown 切成多个 chunk
-
双路索引:
- 向量索引(sqlite-vec):语义相似召回
-
全文索引(FTS5 + BM25):精确关键词匹配
-
存储:chunk、元信息、索引都存于
~/.openclaw/memory/paismart.sqlite
选择 SQLite 而非 ElasticSearch 等专用向量数据库,是因为本地优先理念——无需额外基础设施,单文件即开即用。
Q19:混合检索为什么比纯向量检索更优?¶
答案: 纯向量检索擅长“语义相似”,但不擅长“精确关键词匹配”。举例:
-
搜索
"nomic-embed-text"这个精确字符串,纯向量可能把“embedding 模型”“本地向量索引”等语义相关内容都捞出来,但关键字命中反而弱 -
搜索
"上次说过的那个文章写作偏好是什么来着?"则纯关键词检索不够用
OpenClaw 采用 FTS5 (BM25) + sqlite-vec 混合检索,融合精确匹配和语义相似,最后做结果融合排序,保证召回率和准确率。
Q20:Context Window 是 Agent 工程中最核心的约束之一,为什么?¶
答案: Context Window 是 LLM 单次请求能处理的最大 token 数。Agent 的上下文里塞了很多东西:
-
System Prompt
-
工具定义列表(每个工具 JSON Schema)
-
完整对话历史
-
每次工具调用的入参和返回结果
-
模型回复预留空间
一次 Agent 可能运行多轮,每轮结果都追加到历史,context 会越来越大。超过窗口上限会导致:
-
推理失败(直接报错)
-
早期关键信息被截断
-
Token 成本飙升
Q21:当对话历史太长、裁剪也不够用时,OpenClaw 的 Compaction 策略是怎样的?¶
答案: Compaction 是用 LLM 把一大段对话历史压缩成精炼摘要,替换原始消息。核心流程:
-
分块(Chunking):按 token 预算切分消息,最近几轮对话保留原文
-
逐块摘要:每个 chunk 发给 LLM 生成摘要。超大消息走降级路径(跳过,标注被忽略)
-
合并摘要:多段局部摘要再调一次 LLM 融合成一份连贯的最终摘要
-
替换:用摘要替换原始消息块,释放上下文空间
四、工具调用与 Skills 篇(Q22-Q25)¶
Q22:Tool Calling 的完整链路是怎样的?¶
答案: 核心四步:
| 阶段 | 说明 |
|---|---|
| 定义工具 | JSON Schema 格式,包含 name、description、参数类型约束 |
| LLM 决策 | 收到用户消息后,判断需调用工具,返回 tool_use 消息 |
| 系统执行 | 解析工具名,找到本地注册函数,传参执行 |
| 结果回传 | 执行结果包装成 tool_result 追加到对话历史,发回 LLM |
LLM 根据结果判断:信息够了则生成最终回答,不够则继续 tool_use → tool_result 循环。
Q23:OpenClaw 的 Skills 是什么?存储格式是怎样的?¶
答案: Skills 是存储为 Markdown 文件的提示词模板,每个 Skill 一个文件夹,内含 SKILL.md。格式:
markdown
---name: weekly-reportdescription: 自动生成周报---# 指令内容你需要根据用户的对话记录,生成一份周报...
目前 ClawHub 技能市场已有 5000+ 社区贡献的 Skills。
Q24:工具调用返回超大结果(如代码搜索返回 50KB)会带来什么问题?OpenClaw 怎么处理?¶
答案: 三个直接问题:Token 爆炸、挤占上下文空间、延迟飙升。
OpenClaw 两层防护:
-
单条截断:每条 tool result 设字符上限,截断时检测尾部错误信息,采用 head + tail 分割,中间加省略标记
-
全局预算守卫:每次发 LLM 请求前,计算所有消息总 token 数,超过阈值时从最早的 tool result 开始用 placeholder 替换
Q25:System Prompt 在 Agent 系统中承载了哪些职责?太长怎么处理?¶
答案: 五类职责:
-
角色定义和行为准则
-
工具使用规范和约束
-
输出格式要求
-
安全与权限控制
-
上下文信息补充
处理策略:拆、选、扔
-
拆:按职责拆成独立模块
-
选:根据当前任务只注入相关模块
-
扔:把稳定不变的知识移出 prompt,放到外部文件,让 Agent 需要时通过工具读取
五、高级机制与面试加分篇(Q26-Q30)¶
Q26:Heartbeat(心跳)机制是什么?和普通定时任务有什么区别?¶
答案: Heartbeat 让 Agent 从“被动响应”变成“主动执行”,默认每 30 分钟触发一次,检查所有 Agent 文件,判断是否有需要主动处理的任务(如定时查邮件、每天早上发天气摘要)。
与普通定时任务的关键区别:Heartbeat 在主会话中运行,具有完整的对话上下文和记忆,能智能判断是否需要行动,而不是机械执行固定脚本。
Q27:OpenClaw 的 Workspace Bootstrap 文件有哪些?各自作用是什么?¶
答案: 位于 ~/.openclaw/workspace/:
| 文件 | 作用 |
|---|---|
| AGENTS.md | 行为规范、会话流程、内存管理、安全规则 |
| SOUL.md | 人格语气、核心价值观(拒绝“讨好型 AI”) |
| TOOLS.md | 工具说明、环境特定配置 |
| BOOTSTRAP.md | 首次运行引导,完成后可删除 |
| IDENTITY.md | Agent 名称、风格、表情符号 |
| USER.md | 用户偏好、项目背景、操作习惯 |
空文件会跳过,大文件会截断。
Q28:OpenClaw 的浏览器自动化为什么比传统截图识别更省 Token?¶
答案: 基于 Playwright 开发,采用语义快照(Semantic Snapshot)技术——基于页面可访问性树(Accessibility Tree)生成文本化表征,而非图像截图。优势:
-
文本大小不足 50KB(截图通常 5MB+)
-
模型能通过
[ref=1] button "Sign In"这类标识精准定位页面元素 -
极大节省 Token 消耗,提升推理效率
Q29:OpenClaw 的安全机制有哪些?如何防止沙箱逃逸?¶
答案:
-
最小权限原则:Agent 只拥有显式授予的权限
-
Sandbox 安全限制:初始化时只复制 Workspace 内的普通文件;指向 Workspace 外部的 symlink 或 hardlink 被忽略,防止沙箱逃逸
-
Shell 分级执行:沙箱(Docker,高风险)、本地宿主机(常规)、远程设备(跨设备)
-
敏感信息过滤:凭证独立存储于
~/.openclaw/credentials/,不在会话中明文记录
Q30:面试官问“你在项目中用过 OpenClaw 吗?”——没有实际项目经验怎么回答?¶
答案: 即使没有生产级项目经验,可以从以下角度展示能力:
-
源码研究:“我研究过它的源码结构,理解了 Channel Plugin 接口设计,知道如何新增一个消息平台适配器”
-
本地部署实践:“我在 Windows 11 上完成过本地部署,配置了飞书接入,遇到过接口调用失败的问题,通过调试配置文件解决”
-
概念理解:“我理解 OpenClaw 解决的核心问题是‘让 AI 拥有执行能力’,它的混合检索、Compaction 机制、Heartbeat 主动巡检等设计,对我理解 Agent 工程化很有启发”
-
扩展思考:“如果要接入企业业务系统,我认为关键在于工具定义——需要把内部 API 封装成符合 OpenClaw Tool Schema 的接口”
总结:OpenClaw 面试高频考点地图¶
text
┌─────────────────────────────────────────────────────────┐│ OpenClaw 面试考点地图 │├─────────────────────────────────────────────────────────┤│ 基础定位 │ 与 ChatGPT 区别 / 本地优先 / 开源协议 │├─────────────────────────────────────────────────────────┤│ 架构设计 │ 五组件 / Gateway 路由 / Agent Runner 流程 │├─────────────────────────────────────────────────────────┤│ 记忆机制 │ 两层记忆 / Memory Flush / 混合检索原理 │├─────────────────────────────────────────────────────────┤│ 上下文管理│ Context Window / Compaction / Tool 截断策略 │├─────────────────────────────────────────────────────────┤│ 工具调用 │ Tool Calling 链路 / Skills 格式 │├─────────────────────────────────────────────────────────┤│ 安全机制 │ 沙箱隔离 / 最小权限 / 敏感信息保护 │├─────────────────────────────────────────────────────────┤│ 主动能力 │ Heartbeat / 浏览器语义快照 │└─────────────────────────────────────────────────────────┘
祝面试顺利!🦞