这是一份为你提炼的“Agent 系统架构与工程实践”面试速记知识卡片,采用了标准 Markdown 格式呈现,紧扣高频考点,并补充了常考的深度扩展题,方便你复习和随时查阅。
📖 Agent 系统架构与工程实践面试速记卡片
一、 核心概念与技术选型
1. Tools vs. MCP (Model Context Protocol)
Tools(工具):Agent 可调用的具体功能函数(如 Python 爬虫、文本处理脚本)。属于业务逻辑层的最小执行单元。
MCP(模型上下文协议):一种标准化连接协议/规范(类似于 API 规范或 USB 接口标准)。
核心作用:将工具/资源解耦为独立的 MCP Server,使 Agent/客户端(如 Claude Desktop, Cursor 等)能够动态发现并跨平台调用。
选型策略(混合模式):
内置 Tools:低延迟、高耦合的基础逻辑(如 Markdown 格式化、文本解析)。
MCP 服务:独立性高、需要跨平台复用或定期维护的扩展逻辑(如 GitHub Trending 抓取服务、第三方 API 服务)。
2. Prompt vs. Skill vs. Workflow vs. Agent
| 概念 | 本质定位 | 控制权归属 | 适用场景 |
|---|---|---|---|
| Prompt | 单次交互的上下文/文本指令 | 人类控制 | 简单问答、单次文本生成 |
| Skill | 模块化的能力包(包含 Prompt + Tools + Context) | 人类预设 | 具有固定输出格式的标准化任务 |
| Workflow | 图形化或代码定义的确定性节点流程 | 开发者硬编码 | 确定性 SOP(如 OCR $\rightarrow$ 提词 $\rightarrow$ 跑脚本 $\rightarrow$ 存文件) |
| Agent | 具备自主规划与执行能力的智能体 | LLM 大脑动态决策 | 目标明确但路径未知、需要自我反思重试的复杂任务 |
核心原则:“能用 Workflow 解决的确定性业务,尽量不要全交给 Agent 动态决策”,以保证系统的稳定性、响应速度与成本控制。
二、 桌面端(Electron)高性能 Agent 架构设计
1. 进程架构:主进程 + Worker 池
- 主进程(Main Process):负责 UI 响应、窗口管理与任务调度。决不执行重度计算或阻塞式脚本,保证界面永远不假死。
- Worker 池(Worker Pool):预先创建并维护的子进程/线程池。
- 解耦隔离:耗时任务(Python 爬虫、AI 批量计算)在 Worker 中异步执行,即使 Worker 崩溃也不会影响主界面。
- 动态扩展:支持并发执行多个独立工具。
2. 高可用与健康度保障(Electron 关键机制)
安全的 IPC 通信:废弃
remote模块,使用contextBridge+preload.js实现进程间安全双向通信;针对大数据流引入 Backpressure(背压控制)机制防止消息队列阻塞。卡死检测与自愈:
借助
unresponsive和render-process-gone事件监听渲染进程异常。引入 Heartbeat(心跳检测) 机制主动监控渲染进程 JS 线程状态,检测到死循环/白屏时进行优雅重载或恢复。
守护进程(Watchdog):主进程管理 Worker 生命周期,监测到进程 Memory 泄漏或 Crash 时自动平滑重启(Self-Healing)。
三、 高频面试扩展题与解析
❓ Q1: 在 ReAct 模式下,Agent 出现死循环(Looping)或工具调用失败,如何进行降级与容错设计?
- 参考回答:
- 最大步数限制(Max Iterations):限制单次思考/调用的 Loop 上限(如最多 5~10 次),超时触发强制退栈。
- 工具反馈重试与格式修正:当 Tool 报错时,将 Traceback 或 Error 信息作为 Observation 回传给 LLM,提示其更改参数或更换候选工具。
- 兜底降级(Fallback):当连续 N 次调用同一工具失败后,降级为规则引擎/固定 Workflow 处理,或主动向用户发出确认提示(Human-in-the-loop)。
❓ Q2: 为什么大模型 Agent 在调用外部工具时容易产生“幻觉”参数?工程上如何解决?
- 参考回答:
- Schema 校验(Structured Outputs):基于 Pydantic 或 JSON Schema 严格限定参数类型,在发送给工具前通过代码层或 JSON Mode 进行校验。
- Few-Shot 示范:在 System Prompt / Tool Definition 中提供正确的历史调用示例(Positive & Negative Examples)。
- 自动修复节点(Self-Correction):捕获 Schema 校验失败错误,将其作为下一次 Prompt 的 Context 提示 LLM 修正语法格式后再二次输出。
❓ Q3: 像 Dify / Coze 这种平台,其 RAG(检索增强生成)与 Workflow 是如何结合的?
- 参考回答:
- 平台将 RAG 抽象为一个“知识库检索节点”。在 Workflow 流转到该节点时,先将输入文本进行 Embedding 向量化,在 Vector DB 中进行 Top-K 语义检索,并将召回的 Chunk(文本片段)注入到后续 LLM 节点的 Context 中作为参考资料,以增强回答的准确性。
❓ Q4: 在 Electron 中,如果 Worker 进程在执行 Python 爬虫时产生“孤儿进程”,该如何避免?
- 参考回答:
- 生命周期绑定:在 Node.js 中创建子进程时,监听主进程的
before-quit、will-quit以及exit事件,显式发送SIGTERM/SIGKILL终止所有子进程。 - IPC 管道握手:在 Python 子进程内部监听标准输入(
stdin)的关闭事件(EOF)。一旦主进程崩溃退出导致管道断开,Python 进程读取到 EOF 即可主动调用sys.exit()自尽。
