OpenClaw vs Claude Code 面试题:陷阱题与全链路 10 问
这是”框架理解自检”系列的最后一篇,共 5 篇。本篇覆盖 Q41-Q50 : 5 道陷阱题测试常见误解, 5 道综合题串联完整处理链路。
前四篇测的是”知道什么、为什么、怎么设计”。这一篇测的是你会不会被常见的错误直觉骗到,以及能不能把所有知识串成一条完整的链路。
陷阱题的规则:每题给你一个看起来合理的说法,你来判断对不对、为什么。
Q41 :”代码量 70 倍 = 功能 70 倍?”
“OpenClaw 14,700 个文件 vs Claude Code 200 个文件,所以功能强 70 倍。”
错。
OpenClaw 14,700 个文件中,大量是 20+ Provider 的适配代码(同样的逻辑为每个 Provider 写一遍)、 20+ Channel 的适配代码、 143 个插件扩展。这些是广度不是深度。
Claude Code 约 200 个文件高度浓缩——单个核心文件可以有 3,000+ 行。在共同的编程领域, 200 个文件实现的功能深度远超 14,700 个文件。
代码量反映的是产品范围( scope ),不是功能深度( depth )。一个做 20 件事做得浅,一个做 1 件事做到极致。
Q42 :”Claude Code 没有记忆系统?”
完全错误。 Claude Code 有至少 5 层记忆机制:
它不只有记忆系统,它的记忆系统还比大多数框架更精巧——写入端用 Agent 判断该不该存,读取端用 Sonnet 做智能召回。
Q43 :”Sub Agent 就是开一个新进程?”
只有一种形态接近这个描述。
query(),用独立的上下文做状态隔离。query(),继承父的完整上下文。claude 进程,在独立终端 pane 中运行。“开新进程”只适用于 Tmux/iTerm2 后端的 Teammate 。其他三种都是进程内的逻辑隔离。
Q44 :”框架不干预工具选择?”
“Tool 是模型自己选择的,框架不干预。”
不完全正确。 框架在多个层面干预:
禁止使用: Plan Mode 禁止写操作; Sub Agent 有 ALL_AGENT_DISALLOWED_TOOLS 黑名单;异步 Agent 只允许白名单内工具;alwaysDeny 规则可以完全禁止特定工具; feature flag 可以编译时移除工具。
强制使用:tool_choice: { type: "tool", name: "xxx" } 可以强制模型用特定工具; stop hooks 返回阻塞错误时系统注入错误消息让模型重新考虑; token budget continuation 注入 nudge 让模型继续工作。
模型选择工具,但框架划定了选择的边界。
Q45 :”向量数据库比 Markdown 高级?”
“OpenClaw 用向量数据库做记忆,比 Claude Code 的 markdown 文件高级。”
不合理。 “高级”取决于场景。
向量数据库的优势是大规模模糊语义搜索——适合存数万条记忆。但 Claude Code 的 Sonnet 召回比向量检索更精准(能做否定推理),文件人可读可编辑可 git 跟踪,零基础设施依赖。
Claude Code 的 200 文件上限对编程助手完全够用。它只存不可推导的高价值知识,代码库知识交给 Read/Grep 实时获取。向量数据库在这个量级下的规模优势没有意义,反而增加了 embedding 模型和数据库基础设施的复杂度。
工具没有高低,只有适不适合。
Q46 :从输入到编辑文件的完整链路
用户输入 “fix the bug in auth.ts” 后,经过的关键模块:
<system-reminder> 注入getSystemPrompt() 构建 system prompt → appendSystemContext() 追加 git 状态 → prependUserContext() 前置 CLAUDE.md → 组成 messages 数组Read(auth.ts),StreamingToolExecutor 边流边执行Edit(auth.ts, old_string, new_string) → 验证(是否已 Read 过) → 权限检查 → 执行替换从输入到编辑至少经过 2 轮 API 调用:第一轮读文件,第二轮改文件。
Q47 :数据流中哪些是网络请求?
System Prompt 组装 .......... [本地]Messages 数组组装 ............ [本地]normalizeMessagesForAPI ..... [本地]buildSystemPromptBlocks ..... [本地]anthropic.messages.create() . [★ 网络请求]流式响应接收 ................. [★ 网络 SSE]提取 tool_use blocks ........ [本地]工具执行(Read/Edit/Bash)... [本地文件系统]构建 tool_result ............ [本地]下一轮 API 调用 ............. [★ 网络请求]
涉及网络的只有 API 调用。 Side query ( memory recall 、 extract agent )也是 API 调用。所有工具执行都是本地操作。
Q48 :两个框架的启动流程对比
Claude Code(相对轻量, 1-2 秒):设置引导 → 加载 settings → 初始化 feature flags → 连接 MCP servers → 构建 system prompt → 加载 tools + skills → 等待输入。
OpenClaw(明显更重): Gateway 守护进程启动 → 加载 20+ Channel 适配器 → 建立各平台连接 → 初始化 Agent Runtime → 加载 Provider 配置 → 初始化 LanceDB 向量数据库 → 启动 Cron 调度器 → 加载 143 个插件 → 等待消息。
Claude Code 是 CLI 随开随关, OpenClaw 是常驻服务需要初始化整个基础设施。
Q49 :同一个任务的不同实现路径
任务:”读取 GitHub PR diff → 分析 bug → 写评论”。
Claude Code:Bash("gh pr view 123 --json diff") 获取 diff → 模型直接在上下文中分析 → 可能派 Explore 子 agent → Bash("gh pr review 123 --comment --body '...'") 写评论。全程终端内,单会话。
OpenClaw:通过 Channel Gateway 接收消息(可能来自 Slack ) → exec("gh pr view ...") 获取 diff → 可能 spawn 子 session 并行分析 → exec("gh api ...") 写评论 → 结果通过原通道回复 → 还能设 Cron 定时检查新 PR 。
Claude Code 的 Edit/Grep 精调工具让 diff 分析更精准; OpenClaw 的多通道让触发方式更灵活。
Q50 :为什么不能直接调 API ?
直接调 API 就像给你一部电话,但没有通讯录、没有自动拨号、没有留言、没有转接。
AI Agent 框架解决的核心问题是:让 LLM 能持续、自主地完成多步骤任务。
直接调 API 只能一问一答。但真实的编程任务是:读文件 → 理解代码 → 决定改哪里 → 修改 → 测试 → 发现新问题 → 再修改。这个循环需要:
框架的价值就是把这些”围绕 API 的工程问题”全部解决,让你只需要说 “fix the bug”,而不是手动编排 20 次 API 调用。
评分参考
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
这个系列到这里就结束了。 50 道题覆盖了 Claude Code 和 OpenClaw 从核心概念到架构设计的方方面面。如果你全部答对了——恭喜,你对这两个框架的理解已经到了可以做技术分享的水平。如果有些题答不上来,正好说明还有值得重新深入的领域。
夜雨聆风