← All Articles

别再只优化你的 Agent 了:构建智能体软件的五层系统工程

Ashpreet Bedi (Agno 创始人) · Original

一、核心论点

“Coding agents lowered the barrier to writing code, but they haven’t lowered the requirements of production software.”

AI 让写代码变容易了,但没让”写出能上生产的软件”变容易。前者是 craft,后者是 engineering discipline。Vibe coding 能做 demo,做不了产品。

作者借贝尔实验室 1940 年代的教训:无法通过优化单个组件来优化整个系统。整个系统的行为取决于组件间的交互方式,而非单个组件性能。Agent 软件生态正在重蹈覆辙——用 filesystem 做 memory、用 bash 做通用工具,然后再往上打补丁。

二、五层架构

核心职责 关键原则
Agent Engineering 模型、指令、工具、交接、上下文、可观测性 行为尽量确定,不确定处可观测
Data Engineering 记忆、存储、知识库 用数据库,别用文件系统
Security Engineering 认证、RBAC、审计、数据隔离 安全是系统属性,不是 prompt 指令
Interface Engineering REST / Slack / MCP / CLI 多端统一身份和权限
Infrastructure 容器、部署、水平扩展 95% 和传统服务一样

架构哲学:第 1 层是”非确定性业务逻辑”的容器,其余四层是围绕它的”确定性围墙”——用四圈确定性约束把中间那团不确定性围住。传统软件是 separation of concerns,agent 软件是 containment of non-determinism

三、关键设计

3.1 相同接口,不同权限(硬约束 vs 软约束)

Dash 的 Analyst 和 Engineer 用同类工具但连不同 DB engine:

原则:Agent 的能力差异化应通过工具配置实现,而不是通过 prompt 实现。Prompt 是软约束——模型被诱导后可能违规。配置是硬约束——系统层直接拒绝。

推广表:

软约束(prompt-level) 硬约束(config-level)
“只在 /tmp 下写文件” fs 工具 chroot 到 /tmp
“不要调用外部 API” container egress 防火墙白名单
“不要读取用户 B 的文件” DB query 强制注入 WHERE user_id = A

3.2 六层数据上下文

内容 性质
Table metadata schema, columns, relationships 自动拉取
Human annotations 指标定义、业务规则 人工写入
Query patterns 已验证的 SQL 查询 半自动积累
Institutional knowledge 文档、wiki 人工导入
Learnings 错误模式 + 修复方案 agent 自动积累
Runtime context 实时 schema 检查 每次调用动态

3.3 学习循环

Agent 跑 query → 遇到错误 → 诊断修复 → 保存 error pattern + fix → 下次碰到类似场景第一次就做对。

两个 agent 通过数据层异步协作:Engineer 创建 view → 录入 knowledge base → Analyst 下次搜索时自然发现。不需要”聊天”,共享不断丰富的数据层就够了。

“Query 100 is better than query 1, not because the model improved, but because the data layer got better.”

3.4 Runtime 动态组装 Instructions

系统指令从 table metadata + business rules 动态生成,不写死在代码里。Schema 变了 → agent 行为自动跟进,不用重新部署。等于把 instructions 也当数据管理,而不是代码。

3.5 操作三级审批

级别 操作类型 审批
自由执行 reads 无需确认
用户确认 writes 需用户 approve
管理员签字 sensitive operations 需 admin 签字

3.6 自动化安全评估

Eval suite 专门测 prompt injection 泄露凭证、破坏性 SQL、跨 schema 访问——每次部署跑一遍,持续验证安全边界。

四、原文 vs 中文转述差异

SenseAI 转述整体忠实,但有几处差异值得注意:

Discussion 补充(2026-04-12)

Takeaway 1:硬约束 vs 软约束判断框架

判断标准:agent 无人值守时做的操作(cron、后台 agent)必须用配置硬约束,不能靠 prompt。有人值守时(terminal 交互),soft constraint + permission 确认够用。

实证:2026-04-12 早上 AI 日报 cron 把通知发给了小虾的 TG 群组而非 CC 的——skill 自作主张选了错误的 target。通知目标应该是 cron 配置里写死的,不是 agent 运行时判断的。

Takeaway 2:“犯过的错”结构化存储

当前 memory 系统缺 Ashpreet 六层里的第 5 层(Learnings)。踩坑经验散落在日记、dev-patterns、procedures 里,没有 {场景, 错误, 根因, 修复} 的结构化存储。可以在现有信号驱动捕捉里增加一条路由:踩坑/错误 → dev-patterns.md 专门段落或独立文件,让 agent 能从历史错误中系统性学习。