BoxLang AI 3.6 发布:智能体现已拥有眼睛、耳朵和声音
Ortus Solutions 宣布推出 BoxLang AI 3.6,这一版本将 AI 框架连接到 BoxLang 生产力平台的其他部分。你的智能体现在可以通过 bx-playwright 驱动真实浏览器,通过 bx-audio 进行语音输出和音频母带处理,以逐 token 的方式流式输出文本转语音,通过 stdio 与任意 MCP 服务器通信——并且全部使用它们一贯熟悉的流畅 BoxLang 语法完成。
生产力平台走向成熟
BoxLang 是一个软件生产力平台,让开发者和 AI 智能体协同构建、现代化改造和运行应用。平台的每个组件都以连接为设计目标,而 3.6 是这些连接变得更加紧密的版本。
与 3.6 一同发布的两个主要模块:
- bx-playwright 1.0 —— 由 Microsoft Playwright 提供支持的 BoxLang 真实浏览器自动化与测试。可驱动 Chromium、Firefox 和 WebKit,测试完整用户旅程,并让智能体拥有一个实时浏览器来验证其构建的应用。
- bx-audio 1.0 —— JVM 上的 83 个音频函数:合成、混音、母带处理、语音、视频配乐、游戏音频与分析。无需安装任何原生依赖。
BoxLang AI 3.6 将两者都接入智能体框架。以下是实际意义。
智能体获得眼睛:通过 stdio 使用 bx-playwright
bx-playwright 附带一个 MCP 服务器,只需一条命令即可启动:
BoxLang AI 3.6 新增了 stdio MCP 客户端,可将任意 MCP 服务器作为子进程启动,并通过 stdin 和 stdout 与其通信——无需配置 HTTP 服务器,也无需管理端口。可直接将 bx-playwright 接入智能体:
智能体会通过 listTools() 自动发现 browser_visit、browser_snapshot、browser_click、browser_fill、browser_screenshot 等工具。它可以构建登录页并立即打开,像用户一样点击浏览,并证明其正常工作——全部在一次运行中完成。
这就是缺失的一环:构建、运行、浏览、断言、修复——原生支持 BoxLang,运行在 JVM 上,无需在旁边再附加一个 JavaScript 测试项目。
stdio 客户端如何工作
进程在首次工具调用时启动。BoxLang AI 处理 MCP 初始化握手、版本协商和保活。一个后台线程读取 stdout,并将每个 JSON-RPC 响应路由回等待其 id 的调用方,因此多个工具调用可以共享一个服务器。服务器失效后会自动重启,最多重启 maxRestarts 次。当模块卸载或 JVM 关闭时,已打开的客户端会被干净地关闭。
内置安全控制。模块设置 mcp.stdio.allowedCommands 限制可启动的可执行文件名称。空数组(默认值)允许任意可执行文件。在生产环境中,请使用显式允许列表,并优先使用固定二进制文件。请注意,allowedCommands 验证的是可执行文件名称,而不是完整参数列表,因此像 npx 这样的命令仍可通过后续参数选择包。如需更严格的控制,请使用验证完整命令数组的命令守卫。不使用 shell;命令以数组形式传递,而不是 shell 字符串。
智能体获得声音:bx-audio 与流式语音
bx-audio 在模块加载时立即在全局工具注册表中以 name@bxaudio 注册 26 个音频工具。任何 BoxLang AI 智能体都可以立即使用它们:
或者把整个工作室交给智能体:
安全机制内置于 bx-audio 一侧:每个路径都会根据 ai.allowedPaths 进行验证,符号链接和 ../ 无法逃逸这些路径,工具绝不会覆盖现有文件或其自身输入。
流式文本转语音:aiSpeakStream()
3.6 新增 aiSpeakStream()——一个由 IAiSpeechStreamService 接口和 speechStream 提供方能力支持的新 BIF。音频在生成时逐块流式传输,因此你可以实时将其转发到浏览器、游戏或语音界面,而无需等待完整渲染:
回调会接收带类型的事件:{ type: "audio", data, format, sampleRate, sequence }、{ type: "timestamps", ... },以及最终的 { type: "done", chunks, bytes }。从回调返回 false 可提前停止。目前由 OpenAI、ElevenLabs、Cartesia、Mistral 和 Gemini 支持。
或使用链式构建器:
Cartesia:新的音频提供方
3.6 新增 Cartesia,作为文本转语音和转录的完全支持提供方。设置 CARTESIA_API_KEY,并在任何调用 aiSpeak() 或 aiSpeakStream() 的地方使用它:
Cartesia 支持 mp3、wav、pcm、mulaw 和 alaw 输出,并在流式路径上支持词级时间戳。
MCP stdio:任意服务器、任意工具、任意语言
stdio 客户端并不限于 bx-playwright。任何支持 stdio 传输的 MCP 服务器都可以工作——通过 npx 运行的 Node.js 服务器、通过 uvx 运行的 Python 服务器,或你自己的 BoxLang MCP 服务器:
MCP() BIF 现在返回 IMCPClient——要么是 MCPHttpClient(现有),要么是新的 MCPStdioClient。使用该 BIF 的代码无需更改即可工作。直接构造 MCPClient 的代码必须迁移到 MCP( url )。
分页工具发现
HTTP 客户端新增 listTools( cursor ),用于从对工具列表进行分页的服务器读取工具——新客户端会自动逐页读取(最多五页、100 个工具):
MariaDB 向量记忆
3.6 新增 MariaDBVectorMemory——在 MariaDB 11.7+ 上使用原生 VECTOR(n) 类型、HNSW 索引以及 VEC_DISTANCE_COSINE / VEC_DISTANCE_EUCLIDEAN 函数进行向量存储和语义搜索。排序在数据库中运行。需要 bx-mariadb 模块。
MariaDB 加入了 ChromaDB、Pinecone、PostgreSQL、OpenSearch、MySQL 以及其他向量记忆方案的行列。选择适合你基础设施的方案——你的智能体代码保持不变。
3.6 中还有什么
跨所有提供方的标准化推理。 所有具备推理能力的模型(Claude 扩展思考、OpenAI reasoning effort、DeepSeek、Ollama)现在都在同一个键上暴露其思考内容——流式传输时为 choices[].delta.reasoning,同步时为 choices[].message.reasoning——无论提供方在通信协议中如何称呼它。你的代码永远不需要按提供方分支。推理内容绝不会被并入记忆,也不会被回传给模型。
默认模型已更新。 OpenAI 升级到 gpt-5.6-luna,Claude 升级到 claude-sonnet-5,Groq 从已弃用的 llama-3.1-8b-instant 迁移到 openai/gpt-oss-20b。
默认超时提高到 90 秒。 之前的 45 秒对于负载下较慢的提供方来说过于紧张,会产生令人困惑的 JSON 解析错误,而不是清晰的超时错误。仍可按请求或按提供方覆盖。
${ context } 现在默认会自动加上防护边界。 你通过 options.context 或 ${ context } 传入的任何内容都会自动包裹在防篡改边界标记中。这可以防止间接提示注入——攻击者将指令隐藏在你的智能体检索到的知识库文档或网页中。无需配置;如需按消息退出该保护,可使用 aiMessage().setContextTrust( true )。
OutputGuardMiddleware 现在覆盖推理内容。 机密信息和 PII 会在模型的思考内容以及回答到达你的应用之前,从二者中脱敏。
平台,逐个组件来看
你的智能体过去只能对文本进行推理并调用数据 API。借助 3.6,它还可以打开浏览器并点击操作 UI、大声说出响应、对音频文件进行母带处理、创作配乐,并通过它已经在使用的同一套工具调用机制完成所有这些事情。平台负责连接。你编写领域逻辑。
开始使用
要求: BoxLang 1.18+、Java 21+。使用 npx 的可选 MCP 示例需要 Node.js/npm,而使用 uvx 的示例需要 uv。
完整设置请参阅 BoxLang AI 文档 和 AI BootCamp。
*** ** * ** ***## 资源
- 📖 BoxLang AI 文档 | 发布历史
- 🎭 bx-playwright 1.0 发布公告 | bxplaywright.boxlang.io
- 🎵 bx-audio 1.0 发布公告 | bxaudio.boxlang.io
- 🐙 BoxLang AI GitHub
- 🎓 AI 训练营
- 📦 ForgeBox
- 💬 社区 Slack
- 💼 BoxLang+ 方案
你的智能体可以编写代码、浏览应用、朗读结果并为其评分。🎙️