# MissionBay：基于BASE3框架的声明式智能体工作流编排引擎

> 本文介绍MissionBay，一个为BASE3框架设计的PHP智能体编排插件。它通过JSON声明式定义工作流，支持HTTP、OpenAI、RAG、嵌入等多种节点类型，提供资源对接和事件驱动机制，为构建分布式智能体自动化系统提供灵活可扩展的技术基础。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-23T00:14:43.000Z
- 最近活动: 2026-04-23T00:23:40.950Z
- 热度: 118.8
- 关键词: MissionBay, BASE3 Framework, Agent Orchestration, Workflow Engine, PHP, RAG, Embedding Pipeline, MCP, OpenAI, Declarative Workflow
- 页面链接: https://www.zingnex.cn/forum/thread/missionbay-base3
- Canonical: https://www.zingnex.cn/forum/thread/missionbay-base3
- Markdown 来源: ingested_event

---

# MissionBay：基于BASE3框架的声明式智能体工作流编排引擎\n\n## 项目背景与定位\n\n随着AI智能体(Agent)技术的快速发展，如何将多个智能体协调起来完成复杂任务成为关键挑战。现有的智能体框架往往过于重量级，或局限于特定语言生态。MissionBay应运而生，它是一个为BASE3 PHP框架设计的模块化智能体流引擎，旨在提供一种轻量级、声明式的智能体工作流编排方案。\n\nMissionBay的核心理念是"配置即代码"——通过JSON定义工作流结构，开发者无需编写大量命令式代码即可构建复杂的智能体协作逻辑。这种设计使得工作流可以被版本控制、动态加载，甚至由非技术人员参与设计。\n\n## 核心架构设计\n\n### 声明式工作流定义\n\nMissionBay的工作流完全通过JSON描述，包含三个核心要素：\n\n**节点(Nodes)**：工作流的基本执行单元，每个节点有唯一ID、类型和输入配置。\n\n**连接(Connections)**：定义节点间的数据流向，指定从哪个节点的哪个输出连接到哪个节点的哪个输入。\n\n**资源(Resources)**：可复用的服务对象，如日志记录器、嵌入模型、向量存储等，通过"对接(Docking)"机制与节点关联。\n\n示例工作流定义：\n```json\n{\n  \"nodes\": [\n    { \"id\": \"get\", \"type\": \"httpgetnode\", \"inputs\": {\n      \"url\": \"https://api.example.com/data\"\n    }},\n    { \"id\": \"parse\", \"type\": \"jsontoarraynode\" }\n  ],\n  \"connections\": [\n    { \"from\": \"get\", \"output\": \"body\", \"to\": \"parse\", \"input\": \"json\" }\n  ]\n}\n```\n\n### 执行上下文与内存\n\nMissionBay引入了`AgentContext`概念，为工作流执行提供共享状态：\n\n- **全局运行时变量**：通过`setVar()`/`getVar()`在节点间传递数据\n- **内存访问**：通过`IAgentMemory`接口实现持久化存储，支持`NoMemory`(无状态)等实现\n- **依赖注入**：可通过上下文注入`ILogger`等服务\n\n这种设计使得工作流既可以是纯函数式的(给定输入产生确定输出)，也可以是有状态的(利用内存实现多轮对话、长期记忆等)。\n\n### 资源对接机制\n\n资源是MissionBay的一大特色。与节点不同，资源是独立配置、可复用的服务对象。节点通过"对接端口"声明自己需要什么类型的资源，运行时系统自动完成匹配。\n\n示例：日志资源对接\n```json\n{\n  \"resources\": [\n    {\n      \"id\": \"log-res\",\n      \"type\": \"loggerresource\",\n      \"config\": {\n        \"scope\": { \"mode\": \"fixed\", \"value\": \"MyApp\" }\n      }\n    }\n  ],\n  \"nodes\": [\n    {\n      \"id\": \"telegram\",\n      \"type\": \"telegramsendmessage\",\n      \"inputs\": { \"message\": \"Hello!\" },\n      \"docks\": { \"logger\": [\"log-res\"] }\n    }\n  ]\n}\n```\n\n资源配置支持多种解析模式：固定值、默认值、上下文变量、环境变量、配置项、继承值。这种灵活性使得同一工作流可以在不同环境(开发、测试、生产)中复用，只需调整资源配置。\n\n## 节点类型与功能\n\nMissionBay提供了丰富的内置节点类型，覆盖智能体工作流的常见需求：\n\n### 基础节点\n- **HttpGetNode/HttpRequestNode**：HTTP客户端，支持GET/POST等方法\n- **JsonToArrayNode/ArrayGetNode/ArraySetNode**：JSON数据处理\n- **StaticMessageNode**：输出静态消息\n- **TestInputNode**：返回测试数据\n\n### AI能力节点\n- **SimpleOpenAiNode**：基础OpenAI对话调用\n- **OpenAiResponseNode**：带状态的多轮对话\n- **AiAssistantNode**：支持工具调用的智能助手，集成内存和日志\n- **AiEmbeddingNode**：完整的嵌入流水线(提取→解析→分块→嵌入→存储)\n\n### 控制流节点\n- **SwitchNode**：多分支选择(类似switch语句)\n- **IfNode**：布尔条件分支\n- **ForEachNode**：列表迭代\n- **LoopNode**：通用循环结构\n- **DelayNode**：延时等待\n- **SubFlowNode**：嵌套子工作流\n\n### 上下文操作节点\n- **SetContextVarNode/GetContextVarNode**：上下文变量的读写\n- **GetConfigurationNode**：读取BASE3框架配置\n- **LoggerNode**：日志记录\n\n## RAG与嵌入流水线\n\nMissionBay对检索增强生成(RAG)场景提供了原生支持，通过专用节点和资源实现完整的嵌入流水线：\n\n### 典型嵌入流程\n\n1. **内容提取(Content Extractor)**：从数据库、HTTP接口、文件等来源获取原始内容\n2. **内容解析(Parser)**：根据内容类型选择解析器(如Docling、纯文本)，输出标准化格式\n3. **文本分块(Chunker)**：将长文本切分为适合嵌入的片段\n4. **向量嵌入(Embedding)**：调用嵌入模型(如OpenAI)生成向量\n5. **向量存储(Vector Store)**：持久化存储向量及元数据\n\n### 去重机制\n\n流水线内置基于内容哈希的重复检测，通过`existsByHash()`接口在向量存储层面避免重复处理。\n\n### 测试资源\n\n项目提供了多种测试资源实现：\n- **DummyExtractorAgentResource**：静态文本列表，用于测试\n- **NoParserAgentResource**：纯文本透传\n- **NoChunkerAgentResource**：单块策略\n- **MemoryVectorStoreAgentResource**：内存向量存储(非持久化)\n- **OpenAiEmbeddingModelAgentResource**：OpenAI嵌入API适配器\n\n## OpenAI兼容的MCP接口\n\nMissionBay提供了一个符合OpenAI规范的MCP(Model Context Protocol)接口，使外部系统(包括ChatGPT)能够通过标准OpenAPI 3.1发现并调用智能体功能。\n\n### 接口能力\n\n- **功能发现**：返回完整的OpenAPI 3.1规范，包含所有可用函数\n- **函数调用**：通过POST请求执行特定函数\n- **安全保护**：基于Token的访问控制\n\n### 应用场景\n\n- 聊天机器人集成：让ChatGPT能够调用自定义智能体功能\n- 自动化工作流：外部系统触发结构化智能体动作\n- 跨系统集成：不同服务间的标准化互操作\n\n示例函数定义：\n```json\n{\n  \"openapi\": \"3.1.0\",\n  \"paths\": {\n    \"/functions/reverse_string\": {\n      \"post\": {\n        \"operationId\": \"reverse_string\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"text\": { \"type\": \"string\" }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n## 扩展开发\n\n### 自定义节点\n\n创建新节点只需实现`IAgentNode`接口或继承`AbstractAgentNode`：\n\n```php\nclass UpperCaseNode extends AbstractAgentNode {\n  public static function getName(): string {\n    return 'uppercasenode'; }\n  public function getInputDefinitions(): array {\n    return [new AgentNodePort(name: 'text', type: 'string')];\n  }\n  public function getOutputDefinitions(): array {\n    return [new AgentNodePort(name: 'result', type: 'string')];\n  }\n  public function execute(array $inputs, AgentContext $ctx): array {\n    return ['result' => strtoupper($inputs['text'] ?? '')];\n  }\n}\n```\n\n### 支持配置与对接\n\n如需支持节点配置和资源对接：\n\n```php\npublic function setConfig(array $config): void {\n  $this->prefix = $config['prefix'] ?? '';\n}\n\npublic function execute(array $inputs, array $resources, AgentContext $ctx): array {\n  $loggers = $resources['logger'] ?? [];\n  foreach ($loggers as $logger) {\n    if ($logger instanceof ILogger) {\n      $logger->log('node', $this->prefix . $inputs['text']);\n    }\n  }\n  return ['result' => strtoupper($inputs['text'])];\n}\n```\n\n## 项目状态与路线图\n\n### 已完成功能\n- 稳定的JSON工作流架构\n- 配置、上下文、日志、内存集成\n- 资源与对接系统\n- RAG和嵌入流水线\n- MCP接口\n\n### 进行中功能\n- 子工作流(Subflows)\n- 工作流验证\n- 可视化工具\n\n## 技术栈与依赖\n\n- **PHP 8.1+**：最低版本要求\n- **PSR-4自动加载**：标准PHP包管理\n- **BASE3框架集成**：依赖注入、配置管理、类映射\n- **GPL 3.0许可证**：开源协议\n\n## 适用场景\n\nMissionBay适合以下应用场景：\n\n1. **企业自动化**：将多个内部系统的API调用编排成自动化工作流\n2. **AI客服系统**：结合OpenAI节点和上下文内存构建多轮对话系统\n3. **文档处理流水线**：利用RAG节点实现文档的自动解析、嵌入和检索\n4. **数据同步任务**：定时从多个数据源提取、转换、加载数据\n5. **智能体协作**：多个专业化智能体通过工作流协调完成复杂任务\n\n## 总结\n\nMissionBay为PHP生态提供了一个轻量级但功能完备的智能体工作流编排方案。其声明式JSON配置、灵活的资源对接机制、丰富的节点类型以及对RAG场景的原生支持，使其成为构建分布式智能体自动化系统的有力工具。对于已经在使用BASE3框架或寻求PHP生态AI解决方案的开发者，MissionBay值得深入探索。
