Backend Engineering 与 Agent Engineering 的边界与协作
解释传统后端、Agent Runtime 与 LLM 推理层分别拥有哪些职责,以及它们如何组成可恢复、可审计、可扩展的生产 AI 系统。
#synthesis
#growing
#backend
#ai
[!info] related notes
Backend Engineering 与 Agent Engineering 的边界与协作
[!abstract] 核心结论 Backend 负责身份、权限、业务事实、事务和最终副作用;Agent Runtime 负责目标驱动的执行状态、模型/工具循环、Checkpoint 与恢复;LLM 负责语义理解、生成和受约束决策。三层协作,但不能互相替代。
一条完整请求
Client
→ Backend authenticates actor / tenant
→ Application loads business facts and constraints
→ Agent Runtime starts or resumes Run
→ Context Builder assembles state / evidence / memory / tools
→ Model proposes decision or tool call
→ Tool Runtime validates + authorizes + executes
→ Backend commits business effect
→ Runtime appends event / checkpoint / trace
→ Client receives stable event contract
职责表
| 层 | 负责 | 不应负责 |
|---|---|---|
| Backend | Auth、Authorization、Domain Rules、Transaction、API、Business DB | 让模型决定最终权限 |
| Agent Runtime | Run/Step、State、Event、Checkpoint、Interrupt、Retry、Tool Loop | 取代业务数据库 |
| LLM | 语义理解、规划候选、生成、分类 | 保存权威状态、直接执行危险副作用 |
| Tool Runtime | 参数解析、权限、幂等、超时、沙箱、结果归一化 | 盲信模型给出的 ID / Actor |
| Client | 展示过程、收集输入和审批 | 自己维护唯一 Run Truth |
为什么不能把模型当 Backend
模型输出具有概率性,且可能:
- 误解 ID、权限和当前状态;
- 受 Prompt Injection 影响;
- 输出 Schema 合法但业务非法的动作;
- 忘记上一轮已经执行过副作用;
- 在信息不足时给出看似合理的结论。
因此:
Model proposes
Backend / Tool Runtime disposes
最终动作必须经过确定性系统验证。
为什么 Backend 也不能代替 Runtime
普通请求处理通常是短生命周期调用;Agent Run 可能多步骤、跨时间、等待人类、调用多个工具并在重启后恢复。
Runtime 额外负责:
- Step 边界与状态机;
- Event / Trace;
- Checkpoint / Resume;
- Retry、Cancellation、Concurrency;
- Tool Observation 回流;
- Stopping Condition;
- Orphan Run Recovery。
把这些都塞进 Controller 或聊天消息表,会让恢复和审计失去清晰边界。
Workflow 与 Agent 如何组合
Deterministic workflow
→ 身份、审批、支付、状态迁移、发布门槛
Agentic node
→ 意图理解、信息提取、规划候选、搜索与总结
高风险且规则明确的路径应固定;语义空间开放的局部节点给模型自由。生产级系统通常是受控 Workflow 包住 Agentic Decision。
数据应该放在哪里
| 数据 | 主要位置 |
|---|---|
| User / Order / Assessment / Permission | Business Database |
| Run / Step / Interrupt / Resume Token | Runtime Store |
| Recovery Snapshot | Checkpoint Store |
| Execution History | Event / Trace Store |
| Long-term Preference / Experience | Memory Store |
| External Documents | Knowledge / RAG Store |
| Files / Images | Object Storage |
可以共用物理数据库,但逻辑 Schema 和职责仍应区分。
故障归属
Backend / Infrastructure
- HTTP、DNS、DB Deadlock、Cache、Queue、Permission;
- 由 timeout、transaction、idempotency、reliability 和 observability 处理。
Context / Model
- 上下文污染、证据缺失、结构化输出错误、错误工具选择;
- 由 Context Policy、Validation、Eval、Abstain 和 Guardrail 处理。
Runtime
- Resume 重复、Checkpoint 不一致、Run Lease 丢失、工具成功但状态未记录;
- 由 State Machine、CAS、Idempotency、Replay 和 Recovery 处理。
High-risk Decision
- Model 提出删除、付款、部署等动作;
- Backend / Policy Engine / Human Approval 拥有最终授权。
最小不变量
- 任何 Tool Call 都绑定真实 Actor、Tenant、Run 和 Request ID;
- Business Effect 由业务层验证,不从模型文本直接写库;
- Checkpoint 不被当作业务事实;
- Resume 不会重复执行已经完成的副作用;
- Client 断线不等于 Run 自动成功或失败;
- Trace 能还原“模型建议了什么,系统实际执行了什么”。
面试表达
我把生产级 Agent 分成三层:LLM 提供语义推理和决策候选,Agent Runtime 管理多步执行、状态、Checkpoint、Interrupt/Resume 和工具循环,Backend 则持有身份、权限、业务事实、事务与最终副作用。这样能把模型的不确定性限制在可控节点,同时让高风险操作仍由确定性系统和人类审批兜底。