边缘安全加速平台 EO Agent 框架使用

context.tools 是面向 LLM 的工具清单视角,已经按 framework 做了适配,业务代码不需要再做格式转换。

相关产品
边缘安全加速平台 EO 产品页,含版本规格、价格与购买入口。

一、平台内置工具清单

工具按能力原子化,每个工具一一对应到底层 sandbox 方法。LLM 通过工具名 + 描述的语义匹配选工具,业务也能按工具名细粒度配置允许调用范围。

工具名 入参 说明
commands cmd, cwd?, env?, timeout? 执行一次性 shell 命令。
files_read path 读文件。
files_write path, content 写文件(不存在则创建,存在则覆盖)。
files_list path 列目录,条目仅含 name / type / path。
files_exists path 检查文件或目录是否存在。
files_remove path 删除文件或目录。
files_make_dir path 创建目录。
browser_fetch url 用真实 Chromium 导航并获取页面元信息与 HTML。
browser_screenshot url?, fullPage? 截图,返回 { base64Image }。
browser_click selector 点击当前页面元素。
browser_type selector, text 在当前页面元素中输入文本。
browser_evaluate script 在当前页面上下文执行 JavaScript。
code_interpreter language, code, timeout? 代码执行。
web_search query, maxResults?, site? 轻量级网页搜索;返回 title / href / snippet/ snite/ date。

二、工具选择快捷方法

context.tools 提供以下选择方法,返回值都是当前 framework 适配后的工具对象数组或单个工具对象:

方法 返回值 适用场景
all() 所有内置工具 允许模型使用完整 sandbox 能力。
get(name) 指定名称的单个工具 精确注册或手动调用某个原子工具。
files() files_read、files_write、files_list、files_exists、files_remove、files_make_dir 快速注册文件能力。
browser() browser_fetch、browser_screenshot、browser_click、browser_type、browser_evaluate 快速注册浏览器能力。

示例:只给 Agent 文件和浏览器能力,不开放 shell 命令与代码解释器:

const safeTools = [ …context.tools.files(), …context.tools.browser(),]

如需进一步禁用写入或删除类能力,可以在分组结果上继续过滤:

const readonlyFileTools = context.tools.files() .filter((tool) => !['files_write', 'files_remove', 'files_make_dir'].includes(tool.name))

三、支持的框架

context.tools.* 的输出格式由 framework 决定,在 edgeone.json 中配置:

{ "agents": { "framework": "claude-agent-sdk" } // claude-agent-sdk / openai-agents-sdk / langgraph / crewai / deepagents}

framework 输出格式
claude-agent-sdk { name, description, input_schema, execute }(含 toClaudeMcpServer() helper)。
openai-agents-sdk Node:轻量 function-tool 兼容对象;Python:agents.FunctionTool。
langgraph Node:lightweight wrapper;Python:LangChain StructuredTool。
deepagents Node:lightweight LangChain-like wrapper;Python:LangChain StructuredTool。
crewai Node:lightweight wrapper;Python:CrewAI BaseTool。

注意:说明:

注意:平台不会默认安装 langchain-core / @langchain/core/tools,需要真实框架 tool 对象时,优先使用下面的 helper 方法注入框架 class / factory。

四、框架 helper 方法

这些 helper 可以在 Makers Agent Runtime 注入的 context.tools 上直接调用。

框架 Node Python 说明
LangGraph / DeepAgents / LangChain context.tools.toLangChainTools(toolFactory, names?) ctx.tools.to_langchain_tools(StructuredTool, names=None) 返回 LangChain 兼容工具,names 可传工具名或工具名数组。
OpenAI Agents SDK – – 无需 helper 方法。
CrewAI context.tools.toCrewAITools(baseToolOrFactory, names?) ctx.tools.to_crewai_tools(BaseTool, names=None) 返回 CrewAI 兼容工具,支持传 BaseTool 类或兼容 factory。
Claude Agent SDK context.tools.toClaudeMcpServer(name?, options?) ctx.tools.to_claude_mcp_server(name=None, options=None) 返回 MCP bundle,name / tools / allowedTools。

五、Claude Agent SDK-toClaudeMcpServer

把 sandbox 内置工具转成 Claude Agent SDK 的 MCP server bundle,业务代码再传给 createSdkMcpServer / create_sdk_mcp_server 即可注册。

六、参数

参数 说明
name MCP server name,会同步成 mcp__<name>__<tool> 前缀。
options.alwaysLoad / options.always_load 默认会标记 anthropic/alwaysLoad,传 { alwaysLoad: false } 不会写入 anthropic/alwaysLoad metadata。

七、返回值

返回 MCP bundle 对象。

八、TS 示例

import { createSdkMcpServer } from '@anthropic-ai/claude-agent-sdk'export async function onRequest(context: any) { const edgeoneMcp = context.tools.toClaudeMcpServer() // 自定义 server name const customMcp = context.tools.toClaudeMcpServer('sandbox') const mcpServers = [ createSdkMcpServer({ name: edgeoneMcp.name, tools: edgeoneMcp.tools, }), ] const allowedTools = edgeoneMcp.allowedTools // 将 mcpServers / allowedTools 传给 Claude Agent SDK}

九、Python 示例

from claude_agent_sdk import create_sdk_mcp_serverasync def handler(ctx): edgeone_mcp = ctx.tools.to_claude_mcp_server() # 自定义 server name # custom_mcp = ctx.tools.to_claude_mcp_server('sandbox') mcp_servers = [ create_sdk_mcp_server( name=edgeone_mcp.name, tools=edgeone_mcp.tools, ) ] allowed_tools = edgeone_mcp.allowed_tools # 将 mcp_servers / allowed_tools 传给 Claude Agent SDK

十、OpenAI Agents SDK

无需 helper,把 context.tools.all() 传给 OpenAI Agents SDK 即可,仅暴露部分工具可以用 context.tools.files() / context.tools.browser() / context.tools.get(name) 组装即可,输出形态保持一致。

十一、TS 示例

import { Agent } from '@openai/agents'const agent = new Agent({ name: 'Assistant', instructions: 'Use sandbox tools.', tools: context.tools.all(), model,})

十二、Python 示例

from agents import Agent, Runneragent = Agent( name="Assistant", instructions="Use sandbox tools.", tools=context.tools.all(),)

十三、LangGraph-toLangChainTools

toLangChainTools / to_langchain_tools 接受框架自身的 tool factory,返回真实 LangChain 工具对象。

十四、参数

参数 说明
toolFactory / StructuredTool 模板自己 import 的 LangChain tool 函数(Node)或 StructuredTool 类(Python)。
names 工具名称。

十五、返回值

LangChain 兼容工具数组(Python 是 StructuredTool 实例,Node 是 tool(…) factory 调用结果)。

十六、TS 示例

import { tool } from '@langchain/core/tools'import { createReactAgent } from '@langchain/langgraph/prebuilt'const allTools = context.tools.toLangChainTools(tool)const agent = createReactAgent({ llm: model, tools: allTools })

十七、Python 示例

# requirements.txt: pages-agent-toolkit, langchain-core, langgraphfrom langchain_core.tools import StructuredToolfrom langgraph.prebuilt import create_react_agentall_tools = ctx.tools.to_langchain_tools(StructuredTool)agent = create_react_agent(model, tools=all_tools)

十八、DeepAgents-toLangChainTools

DeepAgents 基于 LangGraph,工具形态同 LangChain,复用 toLangChainTools / to_langchain_tools 即可,helper 参数与返回值与 LangGraph 一致,仅 agent 构造入口不同。

十九、参数

同 LangGraph:传入 LangChain tool factory(Node)或 StructuredTool 类(Python),可选 names。

20、返回值

LangChain 兼容工具数组,可直接作为 create_deep_agent(tools=…) / createDeepAgent({ tools, … }) 的入参。

21、TS 示例

import { createDeepAgent } from 'deepagents'import { tool } from '@langchain/core/tools'const tools = context.tools.toLangChainTools(tool, ['web_search'])const agent = await createDeepAgent({ model, tools, systemPrompt: 'Use web_search for public web discovery.',})

22、Python 示例

from deepagents import create_deep_agentfrom langchain_core.tools import StructuredTooltools = ctx.tools.to_langchain_tools(StructuredTool, names=['web_search'])agent = create_deep_agent( tools=tools, system_prompt='Use web_search for public web discovery.',)

23、CrewAI-toCrewAITools

toCrewAITools / to_crewai_tools 接受框架的 BaseTool 类(或兼容 factory),把 sandbox 内置工具包装成 CrewAI 工具实例。

24、参数

参数 说明
baseToolOrFactory / BaseTool CrewAI BaseTool 类,或返回 BaseTool 实例的 factory。
names 工具名称。

25、返回值

CrewAI 兼容工具数组(Python 是 BaseTool 子类实例,Node 是兼容对象)。

26、TS 示例

const allTools = context.tools.toCrewAITools(CrewBaseToolOrFactory)const researcher = new Agent({ role: 'Researcher', goal: 'Use sandbox tools to gather information.', tools: allTools,})

27、Python 示例

from crewai import Agentfrom crewai.tools import BaseToolall_tools = ctx.tools.to_crewai_tools(BaseTool)researcher = Agent( role='Researcher', goal='Use sandbox tools to gather information.', tools=all_tools,)

28、本地调试日志

调试日志默认关闭。开启后会把沙箱实例获取成功事件与沙箱工具执行日志输出到本地 CLI 的 stderr。

开启方式:在运行环境变量中加入 MAKERS_AGENT_TOOLKIT_DEBUG=1 开启。

MAKERS_AGENT_TOOLKIT_DEBUG=1

日志会对敏感字段(token / auth / password / secret / key)做脱敏;截图结果不会打印完整 base64Image,只打印摘要:

[pages-agent-toolkit] tool.execute.start {"tool":"browser_screenshot","operation":"browser_screenshot","args":{"fullPage":true}}[pages-agent-toolkit] tool.execute.success {"tool":"browser_screenshot","operation":"browser_screenshot","durationMs":123,"result":{"base64ImageLength":193882,"savedToFile":false}}

赞 (0)
上一篇 4天前
下一篇 4天前