来源:X @idoubicc
构建Agent基础设施时,仅将所有功能集成到一个进程中并非最佳实践。
OpenClaw的创新与局限
OpenClaw作为一款自托管的AI助理,在产品方向上展现了前瞻性,带来了多项创新,例如:
- 多端接入: 支持广泛的即时通讯工具,让Agent可以在用户常用的平台无处不在地提供服务。
- SOUL机制: 通过
SOUL.md配置文件定义Agent的人格、语气和价值观,使其具有“人味”,增强用户粘性并实现人设复制。 - 记忆检索: 结合长期摘要(
MEMORY.md)和每日明细文件,按需检索记忆,使Agent“越用越懂你”。 - 主动通知: 引入定时任务和心跳机制,让Agent从被动响应转变为主动服务,例如提供每日提醒或监测代码更新。
- 对话式安装: 用户可通过对话指令安装和配置技能,提供了“养成式”的Agent体验。
- 多Agent协作: 支持在单个Gateway进程内运行多个具备独立专长、工作区和会话历史的Agent,实现协同工作。
然而,OpenClaw的架构也存在显著不足,使其难以作为生产级多租户平台使用:
- 缺乏平台级多租户: 隔离粒度停留在Agent层面,而非用户或账户层面,导致难以安全高效地服务多个互不信任的用户。
- 单点故障: 所有组件运行在单一Node.js进程中,任何一个组件(如插件或通道)的问题都可能导致整个系统崩溃。
- Token消耗高: 默认上下文偏重,
SOUL.md、MEMORY.md等引导文件和对话历史会不断增加提示词长度,导致Token消耗失控。 - 资源占用大: Node.js环境和大量npm依赖导致内存占用较高,对硬件要求较高。
- 云原生不友好: 配置和状态主要存储在本地文件系统,难以实现水平扩展、动态伸缩和滚动更新等云原生特性。
- 依赖臃肿: 庞大的npm依赖树导致构建时间长,且依赖管理复杂。
- Web UI体验不佳: 虽然配置底层与CLI一致,但用户界面粗糙,配置体验不流畅。
- 安全模型不足: 主要针对单机单操作者设计,缺少多用户场景所需的沙盒隔离、密钥加密、租户级RBAC和注入防护机制。
FastClaw的设计原则与改进
FastClaw旨在解决OpenClaw的痛点,强调轻量、快速、云原生,并在其官方网站上提出“The fastest way to run your own AI agents”,并支持“Single binary”、“Any LLM”、“Multi-agent”、“Sandbox”和“Cloud-ready”等特性。
其核心设计包括:
1. 云原生优先
- 无本地配置文件: 通过环境变量管理Bootstrap参数,运行时配置存储于数据库,实现配置与代码分离。
- 灵活存储: 支持通过
FASTCLAW_STORAGE_DSN环境变量在SQLite(本地开发)和Postgres(生产环境)之间切换。 - 对象存储: 利用S3等对象存储(通过
FASTCLAW_OBJECT_STORE_*环境变量配置)共享Skills和文件,支持多Pod部署。
2. 多租户与RBAC
FastClaw采用四层配置继承机制,实现了灵活的多租户管理:
- Tenant (Client) > User > Agent > Session
- 内层配置自动覆盖外层,同名Provider配置整条替换。
- 管理员可设置默认配置,用户可覆盖自己的Key,Agent可指定特定模型,互不干扰。
3. 会话隔离
FastClaw通过将Session key定义为(user_id, agent_id, channel_type, chat_id)四元组,确保每个Session的记忆和历史独立,即使同一Agent被多人使用也互不影响。同时,X-Fastclaw-End-User Header允许SaaS层透传终端用户身份,实现零代码多租户接入。
4. 高并发支持
Go语言的goroutine使得FastClaw能高效处理并发会话。关键在于Session是无状态的,状态存储在数据库中,每次请求从DB加载上下文,处理后再写回,从而实现任意Pod处理任意请求和水平扩展。
5. 单二进制分发
FastClaw采用Go编译为原生机器码,无node_modules,无运行时依赖,无构建步骤,极大地简化了部署和分发。
6. 低内存占用
相较于OpenClaw(Node.js),FastClaw(Go)的闲置内存占用显著低于OpenClaw,且Go语言没有GC停顿和JIT预热,在相同硬件条件下能承载10倍以上流量。
7. 插件隔离
不同于OpenClaw插件在主进程中运行,FastClaw通过JSON-RPC子进程隔离插件,确保插件崩溃不会影响Gateway,并限制插件的文件系统访问权限。同时,提供了openclaw-plugin-bridge兼容OpenClaw的TypeScript插件生态。
8. 工具Provider的Fallback机制
FastClaw为Web Search、Image Gen、TTS等外部工具设计了统一的Provider和Fallback Chain架构。例如,主Web Search Provider(如Tavily)限流时,可自动切换到备用Provider(如SerpAPI),用户无感知,提高了系统鲁棒性。
FastClaw的架构设计与定位
FastClaw的核心架构决策是存算分离:计算层(Gateway)无状态可水平扩展,处理LLM调用、工具执行和会话管理;存储层(数据库和对象存储)作为唯一真相源,通过SQLite或Postgres持久化数据,S3存储二进制文件。
FastClaw还通过基于Scope的配置继承实现极高的灵活性,以及对所有外部依赖(LLM Provider、Tool Provider、Sandbox)的Fallback容错机制,确保系统在面临外部服务问题时仍能稳定运行。
FastClaw不仅是一个“更好的OpenClaw”,更具备以下四个递进定位:
- Assistant: 个人助理,可替代OpenClaw等用于日常的AI助手、Telegram Bot、飞书机器人等。
- Factory: Agent制造工厂,提供云平台创建个性化Agent,适合Skills创作者和提示词工程师。
- Runtime: Agent运行时,导出API供其他Agent产品使用,开发者可专注于前端交互,无需实现Agent Loop和Sandbox。
- Platform: Agent协作平台,可私有化部署作为团队版OpenClaw,共享知识库和技能。
多Agent框架设计经验总结
在开发FastClaw过程中,总结出以下关键经验:
- 先做单租户,但架构要预留多租户: 多租户并非功能,而是核心架构决策,越早考虑越能避免后续的重构。
- 存储决定一切: 避免文件系统存储状态数据,应使用数据库作为唯一真相源,以便实现多实例部署、水平扩展和数据备份。
- 隔离是可靠性的前提: 对于故障域不同的组件,应避免共享进程,通过子进程、沙盒或数据库事务进行隔离。
- Fallback是必需品: 生产级Agent必须对所有外部依赖(如LLM API、Web Search API)提供Fallback机制,以应对限流、宕机或涨价等情况。
- Token是钱,上下文是金: 精简SOUL文件,按需检索记忆,摘要长对话,分层说明工具,高效的上下文管理是节省Token和提升Agent性能的关键。
从单纯的开源项目到生产级平台,核心在于解决工程问题。在迭代之前,清晰地理解存算分离、多租户隔离和Fallback容错这三大原则,将大大减少开发过程中的弯路。FastClaw项目(见fastclaw.ai和GitHub仓库)正是这些经验的实践与结晶。