几乎每个第一次构建 AI Agent 的团队都会经历同一个时刻。演示效果很好,Agent 能回答问题、调用工具、记住上下文。你把它展示给利益相关方,他们印象深刻。然后有人问:"我们能把这个上生产吗?"
这个问题暴露了一个大多数团队都低估的鸿沟。演示版 Agent 是为了在受控环境下、有开发者盯着的情况下跑一次而构建的。生产版 Agent 需要在不可预测的条件下、无人值守地跑成千上万次。这两个要求之间的差距,正是大多数 AI Agent 项目卡壳的地方——也是运行时选择开始真正重要的地方。
演示陷阱
演示陷阱之所以诱人,是因为演示确实很容易构建。现代 AI 框架让接入语言模型、给它一些工具、让它回答问题变得轻而易举。难的不是让它跑起来——而是让它持续跑下去。
演示版 Agent 通常是无状态的。重启它什么都不会丢失,因为什么都没保存。它没有认证,因为跑演示的开发者是可信的。它没有限流,因为只有一个用户。它没有监控,因为开发者能直接看到发生了什么。它没有错误处理,因为演示只需要走通正常路径。
生产环境会把这些假设一个个打破。Agent 重启时用户丢失上下文。未授权用户找到了接口。有人一分钟内发了一千条消息。Agent 给出了错误答案但没人知道为什么。AI 服务商挂了,Agent 直接崩溃而不是优雅降级。这些故障模式都是可以预见的——每一个都需要有意识的架构决策来处理。
能顺利完成这个过渡的团队,是那些从一开始就把 AI Agent 当基础设施来对待的团队,而不是把它当成碰巧调用了 API 的脚本。
生产环境真正的要求
第一个要求是持久可靠的状态管理。生产版 Agent 要管理持续进行的对话、积累的用户偏好、任务队列和学到的上下文。这些状态需要在重启和崩溃后存活,出问题时能恢复。需要原子写入——不能有写了一半的内存条目破坏 Agent 的上下文。需要可检查,这样当 Agent 行为异常时,你能看到它当时知道什么、为什么做出那个决定。
ZeroClaw 用 WAL 模式的 SQLite 来处理这个问题:ACID 合规、单文件、断电也不会损坏。整个 Agent 状态就在一个文件里。备份是 `cp memory.db memory.db.bak`,恢复是 `cp memory.db.bak memory.db`。没有数据库服务器要管,没有连接池要配置,没有主从复制要搭建。对于 AI Agent 实际的访问模式——几千条记忆,不是几百万——SQLite 比分布式数据库更快,因为没有网络往返的开销。
第二个要求是不依赖信任的安全模型。生产版 Agent 处理真实的凭证,访问真实的文件系统,与会主动探测弱点的真实用户交互。安全模型不能是"相信插件开发者"或"假设用户行为良好"。它需要默认拒绝:每个工具、每个文件路径、每个网络端点,都必须在 Agent 访问之前被明确授权。审计日志需要记录每次工具调用的输入和输出,这样出问题时你有迹可查。
这正是 OpenClaw 架构在 2026 年失败的地方。WebSocket 信任模型、操作系统级别的技能权限、41.7% 存在漏洞的插件市场——这些不是 bug,而是在工具还是开发者玩具时做出的架构决策,当它被部署为处理真实凭证和真实数据的生产基础设施时,这些决策变成了负债。
第三个要求是可观测性。当 Agent 在生产环境给出错误答案时,"它用了错误的上下文"不是一个有用的诊断。你需要从收到消息到发出响应的全链路追踪,需要按对话和用户维度的 token 用量统计,需要带输入输出的工具调用日志,需要显示每次请求注入了哪些上下文的内存检索日志。没有这些,调试生产问题就是靠猜——凌晨两点出问题时靠猜的代价很高。
可靠性是第四个要求,而且比"不崩溃"更有讲究。生产意味着 7×24 的可用性预期,这意味着崩溃后自动重启、AI 服务商不可用时优雅降级、渠道断连时带指数退避的重连、供监控系统使用的健康检查接口。还意味着冷启动时间不能造成用户可感知的中断。一个重启需要 8 秒的 Agent,一年下来会积累数小时的不可用窗口。一个 10 毫秒就能重启的 Agent,用户永远不会注意到。
第五个要求是成本控制。失控的 AI Agent 烧 token 的方式很难预测。一个发现可以和你的 Agent 长聊的用户,一天就能产生几百美元的 API 费用。生产环境需要按用户和渠道设置 token 预算,需要限流防止滥用,需要模型路由——简单查询用便宜模型,复杂查询用贵的模型。没有这些控制,token 费用会让你大吃一惊。
大多数框架踩的坑
在没有为生产设计的框架中,这个模式是一致的:它们为演示优化,在其他所有方面投入不足。
正常路径得到了所有关注。"看,我的 Agent 能搜索网页和写代码!"错误处理得到了一个打印到控制台的 try-catch。重试逻辑留给读者自己实现。优雅降级是一条 TODO 注释。当 AI 服务商返回 429 时,Agent 直接崩溃而不是把请求排队然后带退避重试。这些不是边缘情况——它们是任何运行足够长时间的服务的正常运行条件。
资源效率被当作锦上添花而不是成本乘数。一个单个 Agent 实例就用 1GB 内存的框架,没有昂贵的基础设施就无法扩展到多租户部署。如果你想给每个企业客户一个专属的 Agent 实例——这通常是数据隔离的正确架构——你需要一台能同时运行数百个实例的服务器。每个实例 1GB,那是每月一万美元的基础设施账单。每个实例 4MB,那是一台每月 50 美元的 VPS。
安全是最常见的事后补救。本能是先构建功能,安全以后再加。但安全无法被改造到一个宽松的架构上——OpenClaw 危机在规模上证明了这一点。默认拒绝、内存安全和沙箱隔离需要从一开始就设计进去,因为事后添加意味着破坏那些基于宽松访问假设构建的东西。
ZeroClaw 的生产故事
ZeroClaw 从一开始就为生产设计,设计决策体现了这一点。单一二进制文件意味着部署就是复制一个 12MB 的文件——没有依赖解析,没有版本冲突,没有"在我机器上能跑"的问题。4MB 的内存占用意味着你可以在单台 1GB VPS 上运行 50 个 Agent 实例,让多租户部署在经济上可行。不到 10 毫秒的冷启动意味着重启对用户不可见,滚动更新零停机。
Rust 的内存安全在编译时消除了整类漏洞——缓冲区溢出、释放后使用、数据竞争是编译错误,不是运行时惊喜。默认拒绝的白名单模型意味着每个工具、文件路径和网络端点都必须在 config.toml 中明确授权才能访问。WAL 模式的 SQLite 给你单文件的 ACID 合规状态,不需要管理数据库服务器。无发行版 Docker 镜像只包含 ZeroClaw 二进制文件和必要的证书——没有 shell,没有包管理器,攻击面最小。
生产部署清单
对于把 AI Agent 推向生产的团队,清单与其说是关于功能,不如说是关于运营成熟度。在上线前明确定义工具权限——Agent 能访问什么,明确拒绝什么?在被账单惊到之前,按用户和渠道设置 token 预算。配置错误率和延迟百分位的监控和告警。设置内存数据库的自动备份。有意识地测试故障场景:AI 服务商挂了怎么办?渠道断连怎么办?磁盘满了怎么办?为终端用户记录 Agent 的能力和局限。在需要之前就建立 Agent 异常行为的应急响应流程。
演示和生产之间的差距是运营成熟度。你选择的框架决定了有多少成熟度是内置的,有多少是后来拼凑的。一个从第一天就为生产设计的运行时给你一个可以构建的基础。一个为演示设计、事后改造了生产特性的运行时给你一个随时间复利增长的维护负担。你一开始做的选择,影响着之后的一切。