langchain-beeos,JavaScript 与 TypeScript 使用 @beeos-ai/langchain。它们将
固定的 BeeOS 实例、智能体、计算机和移动设备转换为标准 LangChain 工具。
LangGraph 可以通过 ToolNode 使用同一组工具,因此不需要单独的 LangGraph 包。
选择接入面
当 BeeOS 操作需要进入 LangChain 或 LangGraph 工具循环时,使用
langchain-beeos。协议级连接使用 MCP,确定性的控制面代码则直接使用 BeeOS
SDK。
安装和配置
1
安装包
本示例使用 OpenAI LangChain 集成作为模型提供方,也可以替换为任何兼容的
LangChain 对话模型。
2
设置凭证
凭证必须保存在源码控制之外。
3
选择固定目标
实例、计算机和移动设备工具需要传入
instance_id,持久智能体任务工具需要传入
agent_id。这些资源 ID 属于应用配置,不会作为模型生成的工具参数公开。langchain、@langchain/langgraph 和模型提供方包。请把
BEEOS_API_KEY 留在服务端,不要把本集成或凭证打进浏览器 bundle。
创建只读 LangChain 智能体
工具包默认只公开已配置目标的读取操作。以下示例允许模型检查设备状态,但不授予 输入控制能力:with 块内。采用这种写法时,工具包拥有 BeeOS
客户端,并在退出 with 块时将其关闭。
创建只读 JavaScript 智能体
JavaScript/TypeScript 包使用 camelCase 配置,同时保持与 Python 版一致的安全策略:在 LangGraph 中使用工具
LangGraph 预构建的ToolNode 可以直接使用同一组标准 LangChain 工具:
@langchain/langgraph:
目标与读取权限
JavaScript 与 TypeScript 使用对应的 camelCase 名称:
instanceId、agentId、
includeInstanceList 和 includeTools。
由于目标 ID 不会出现在工具 schema 中,模型不能将操作重定向到其他实例或智能体。
只有工作流确实需要时,才启用账户级发现:
显式启用副作用
每个写操作都需要设置allow_mutations=True,并配置至少一个匹配的修改权限范围:
下面的工具包只公开移动设备状态和点击操作:
include_tools 可以缩小可用工具集合,但不能授予缺失的目标或权限。销毁实例还需要
在 instance_lifecycle 范围之外设置 allow_destructive=True。
对应的 JavaScript 配置为:
allowDestructive: true。
截图隐私
默认的screenshot_mode="metadata" 会先移除短期下载 URL,再将截图结果返回给
模型。返回内容只有 BeeOS 文件 ID、格式、宽度和高度。
只有模型必须查看屏幕时,才显式启用多模态输出:
使用调用方管理的 BeeOS 客户端
create_beeos_tools 可以接收已有的 beeos.BeeOS 客户端。返回工具的整个生命
周期内必须保持客户端开启:
BeeOSToolkit 用作上下文
管理器。
JavaScript 应用也可以复用调用方管理的官方 SDK 客户端:
失败与重试语义
- 集成不会自动重试设备修改操作。
- 超时表示结果可能未知,不代表操作没有执行。
- 取消异步调用方不能停止已经在线程中运行的同步设备请求。
- 应用可能重试任务创建时,传入稳定的
idempotency_key。 - 返回给模型的 API 错误不会包含响应正文、Header、签名 URL 或私有诊断信息。
后续阅读
LangGraph 工作流
将图状态和检查点与持久 BeeOS 任务结合。
MCP 集成
将 BeeOS 连接到任何支持 MCP 客户端的框架。
Python SDK
从确定性的应用代码直接调用 BeeOS 控制面。