AI Agent 如何在安全边界内自我组装?认识 Rust 项目 Fantastic 的统一消息内核
把多个模型、脚本、文件系统和浏览器拼成一个 Agent 工作流,常会遇到两类麻烦:每种组件都有自己的调用接口,权限也散落在配置与提示词里。开源项目 Aisixteen Fantastic 尝试把这些对象统一为可寻址的 Agent,再以一套消息协议连接。它的 README 将项目称为 alpha 阶段的 Agent 内核;这意味着它适合研究和试验,不应未经评估就作为生产平台。
一个 send,连接不同能力
Fantastic 的基本交互是 send:向一个或多个目标发送 payload,得到带有进程 ID、状态和结果的响应。模型、程序、文件树、Shell、浏览器画布乃至键盘前的人,都可以处在同一棵 Agent 树里。每个 Agent 可通过 reflect 描述自身能力,通过 docs 暴露调用说明;项目希望模型能基于这些描述自行组合工作流,而不是依赖一套庞大的客户端 SDK。
README 给出的最小协议示例如下:
[{"target":"kernel","payload":{"type":"reflect","readme":true}}]
这条消息要求内核反射自身信息。项目说明,反射结果包含运行时 Agent 树和文档索引;从这里,人或模型再决定如何创建 Agent、发送消息或查询文档。它不是一个通用 HTTP API 的例子,而是 Fantastic 自己的消息协议示意。
把权限做成显式边界
统一调用并不意味着所有 Agent 互相开放。Fantastic 的 README 描述了双向调用门:调用者的 can_call 和目标的 callable_by 都允许时,调用才会通过。默认策略是拒绝;外部连接也被表示为 IO leg,例如文件、进程、浏览器或 MCP 服务,需要操作者显式开放。
项目还把文件访问限制在内核运行目录,并支持允许列表形式的命令执行桥接。凭据可以按引用管理,消息字段可标记为 secret,使记录和事件显示为 [secret]。这些是项目声明的设计机制,不等于已经经过独立安全审计;部署者仍需检查实际配置、运行用户、网络暴露和敏感数据流。
如何试用:先读文档模式
仓库面向 macOS 与 Linux 提供 fantastic CLI。README 的 Cargo 安装命令如下,构建依赖包括 Rust 1.88 及以上、C 编译器和 Go 1.21 及以上:
cargo install --locked --git https://github.com/aisixteen/fantastic fantastic-tui \ --features vllm,ollama,responses,anthropic
如果不需要所有 AI 后端,可以按 README 指引删减 feature;不指定 feature 时,二进制不包含 AI 后端。首次上手可先在项目目录运行 fantastic,并让编码 Agent 阅读其输出、解释用途,再由操作者决定是否启动内核。项目文档说明,无终端交互的启动方式会进入 doc mode:输出说明和命令清单,不启动服务,也不写入文件。这比一开始就开放浏览器、文件或进程桥接更稳妥。
CLI 还列出 fantastic canvas [--port N]、fantastic --headless、fantastic mcp 和 fantastic readme [key] 等入口。一个工作目录运行一个内核;因此试验不同配置时建议使用独立目录,并先阅读对应的 canvas、MCP 与 setup 文档,再开放任何 IO leg。
它的独特之处与限制
Fantastic 不只是模型代理封装。其 README 还列出递归 Agent 树、可持久化工作区、可查询和取消的任务、浏览器画布、跨内核连接,以及 Python、Rust、Swift 和 TypeScript 相关运行时。协议测试语料用于约束不同实现的一致性,模型驱动端到端测试则评估真实内核中的工作结果。具体可用功能仍应以当前版本文档和 CLI 自述为准,因为项目处于 alpha,多个运行时也可能存在成熟度差异。
这套抽象适合想研究 Agent 编排、权限边界和人机协作界面的开发者;若需求只是给单一模型加几个工具,直接使用现有 Agent SDK 往往更简单。Fantastic 的学习成本来自它要求理解自己的协议、Agent 树与 IO leg,而非只调用一个模型 API。AGPL-3.0-or-later 许可证也需要在集成、修改和分发前认真评估。
结语
Fantastic 的核心想法,是把“谁能调用谁”与“如何描述自己”纳入统一内核:send 负责传递消息,reflect 和 docs 负责发现能力,双向调用授权与默认关闭的 IO leg 则定义边界。这个方向值得关注,但 alpha 状态和较大的架构范围也意味着应从隔离目录开始,先验证一个低风险工作流,再逐步开放能力,而不是把“Agent 可以自我组装”误读成“无需治理”。