OpenClaw / 09
面试与实习准备
你跑通了 Node → Workflow → Agent,改了 pi-mono,部署起了自己的 [你的名字]Claw。
这一节说怎么把这些变成面试竞争力。
Agent 方向面试考什么
2025 年 Agent 相关岗位(AI Engineer、LLM Application Engineer、Agent Developer)的面试通常分三层:
层 1:概念理解(筛选层)
考察你有没有真正用过、理解过 Agent,还是只是听说过。
常见问题:
- Workflow 和 Agent 的区别是什么?
正确答案的方向:Workflow 是有向路径,执行路径在开发时确定;Agent 在图内部有循环,执行路径由模型在运行时决定。
- 为什么 Agent 比 Chatbot 更难稳定?
正确答案的方向:Chatbot 每轮结果相对独立;Agent 有多轮工具调用,每一步的输出影响下一步,错误会累积。
- Tool Calling 的机制是什么?
正确答案的方向:模型输出结构化的
tool_callsJSON,应用层解析并执行对应函数,把结果追加进对话历史,模型再继续。 - RAG 是什么,什么时候用?
正确答案的方向:从向量数据库检索相关片段注入上下文,解决 LLM 上下文窗口不够放知识库的问题。
层 2:工程经验(核心层)
考察你有没有真正动手解决过问题。
常见问题:
- 你用过哪些工具框架,遇到过什么问题?
这里你应该能说出:LangChain 的过度抽象导致排查困难,以及你选择轻量级自定义方案的原因。
- Agent 的上下文管理怎么做?
短期上下文 + 长期压缩摘要。超出阈值时用 LLM 生成早期对话的摘要,保留近期的完整历史。
- 多 Agent 架构你怎么设计?
上下文隔离而非主从调度。每个子任务独立进程,避免上下文污染。可并行时用 ThreadPoolExecutor 并发执行。
- 如何评估 Agent 的质量?
这引出下面的 Eval 话题。
层 3:系统设计(高级层)
通常只有高级岗位或 Senior Intern 才会到这层。
- 设计一个能处理 10,000 文件代码库的 Coding Agent
- 如何让 Agent 在多个用户之间安全隔离
- Agent 的观测性(Observability)怎么做
项目怎么讲
面试官最害怕的是候选人的”项目”只是跑了个 Demo,改了改 Prompt。
你需要能讲清楚你做了什么判断,遇到了什么问题,怎么解决的。
STAR 格式
Situation: 我在用 LangChain 搭一个代码审查 Agent
Task: 需要处理大型代码库,上下文经常溢出
Action: 我把 LangChain 换成自定义的 Node/Flow 框架(60 行),
实现了 offset/limit 的文件读取和对话历史压缩
Result: 上下文使用量降低了约 60%,任务完成率从 73% 提升到 89%
数字是关键。哪怕是粗略的估计,也比”提升了很多”有说服力。
Eval(评估):面试中的加分项
能说清楚如何评估 Agent 的候选人非常少,这是显著的差异化点。
什么是 Eval
Eval 是一组有预期输出的测试用例,用来量化 Agent 的任务完成率。
{
"eval_id": 1,
"prompt": "在 src/auth.py 第 42 行有一个 SQL 注入漏洞,请修复它",
"expected_behavior": [
"读取 src/auth.py",
"定位第 42 行附近的 SQL 拼接",
"改为参数化查询",
"运行测试确认修复"
],
"assertions": [
"修改后文件不包含字符串拼接 SQL",
"测试通过"
]
}
简单的 Eval 框架
# eval/runner.py
import subprocess, json
def run_eval(eval_case: dict) -> dict:
"""运行一个 eval case,返回是否通过"""
result = subprocess.run(
["uv", "run", "python", "-m", "agent.main",
"--task", eval_case["prompt"]],
capture_output=True, text=True, timeout=300
)
passed = []
for assertion in eval_case["assertions"]:
# 用 LLM 判断断言是否满足(或者写规则匹配)
check = call_llm_simple(
f"判断以下断言是否被满足(只回答 yes/no):\n"
f"断言:{assertion}\n"
f"Agent 执行结果:{result.stdout}"
)
passed.append("yes" in check.lower())
return {
"eval_id": eval_case["eval_id"],
"pass_rate": sum(passed) / len(passed),
"details": passed
}
在面试中能说出”我的 Eval 集有 20 个 case,改了压缩策略之后 pass rate 从 70% 提升到 85%”,比大多数候选人的表述都更有说服力。
简历怎么写
推荐工具:rxresu.me
rxresu.me 是一个开源的在线简历生成器,支持中英文、PDF 导出、各种模板。
对程序员友好:可以把简历数据导出为 JSON,用 git 管理版本。
Agent 项目的描述模板
[你的名字]Claw — 个人 Coding Agent
- 从零实现 Node/Flow 核心框架(~60 行),不依赖 LangChain
- 基于 pi-mono 架构,接入 [Kimi/DeepSeek/GLM],部署于本地,通过飞书对话
- 实现对话历史压缩(超 20 轮时 LLM 生成摘要),上下文使用量降低约 60%
- 构建 20-case Eval 集,任务完成率 [X]%
- 工具集精简至 8 个,排除 bash 安全模式,支持代码审查和文件操作
把 X 填上真实数字,其余根据你的实际情况调整。
实习岗位方向
Agent 方向的实习通常在这几类公司里:
| 类型 | 代表公司 | 岗位名称 |
|---|---|---|
| AI 原生 | Kimi、智谱、百川、MiniMax | LLM Application Engineer |
| 大厂 AI 部门 | 阿里通义、腾讯混元、字节豆包 | AI Engineer Intern |
| Coding Agent 方向 | Cursor 类产品、IDE 插件团队 | Agent Developer Intern |
| 工具链 | 各类 DevTool 创业公司 | Full-Stack + AI |
准备材料清单:
□ GitHub 上有 OpenClaw / pi-mono fork 的改造版本(能跑)
□ README 写清楚:做了什么改动,解决了什么问题
□ 简历项目描述有数字(pass rate / 上下文降低比例)
□ 能流畅讲 Node → Workflow → Agent 的推导过程(5 分钟内)
□ 能回答"为什么不用 LangChain"(有自己的判断,不是背的)
一个最重要的建议
把 Agent 跑起来,跟它对话。
面试中被问到的任何细节——上下文溢出怎么办、工具调用出错怎么处理、怎么评估质量——如果你真的跑过,就会有真实的感受和判断。
如果你只是读了文档,这些问题很难回答得自然。
这套课程的最终目标:你有一个真正跑起来的、属于你自己的 Agent,用来辅助你的日常编程。其他的都是副产品。