工具与 Skills
理解内置、自定义与 MCP 工具的形态、可见性权限、沙箱边界与跨团队共享
工具让 Agent 和工作流执行外部动作;Skill 把可复用指令与资源组织成可安装能力。工具按下图三类形态存在,其中自定义工具又有三种执行子类型。
工具的三类形态
| 形态 | 来源 | 归属与权限 |
|---|---|---|
| 内置工具(builtin) | 平台注册,随版本更新 | 无需创建,不可删除或共享;部分需功能开关或凭据 |
| 自定义工具(custom) | 团队创建,执行子类型为 http / code / database | 归属团队,可设可见性、可测试、可共享 |
| MCP 服务(mcp) | 接入外部 Model Context Protocol Server | 归属团队,按传输方式配置连接信息 |
内置工具
内置能力包括:当前时间与时间格式化(get_current_time、format_datetime)、计算与单位换算(calculate、unit_convert)、网页搜索(web_search)、网页抓取(fetch_webpage)、文档转换(markitdown)、订阅源读取(rss_feed_reader),以及沙箱中的 artifact、bash、edit、read、write。web_search 需要配置 TAVILY_API_KEY。
图片生成(generate_image)、视频生成(generate_video)与向用户提问(ask_user)虽由平台实现,但不会出现在可选工具列表中,它们由工作流媒体节点、Agent 提问开关等专门入口注入。内置文件解析器(markitdown)与 category=file 的自定义工具会一起出现在文件解析器选择中。
自定义工具
- HTTP API(
http):配置方法、URL、请求头、查询参数、正文模板、超时(默认30秒,1-300)和响应 JSON 路径。URL 必须是静态地址:含{{变量}}的 URL 会被执行器拒绝(http_tool_url_templates_not_supported),变量只能通过查询参数、请求头或正文模板传入。 - 代码工具(
code):在受限沙箱中运行 Python 或 JavaScript,可通过python_packages/js_packages安装精确固定版本的依赖(如requests==2.32.3),并在/workspace下声明产物。 - 数据库工具(
database):连接 PostgreSQL、MySQL、Redis 或 MongoDB,按配置保存连接信息与查询。查询超时默认15秒(1-120),最大返回记录数默认100(1-1000);保存前可用POST /api/v1/tools/database/test-connection校验连通性(需tool:create权限)。
自定义工具在保存前可先用测试接口试跑,参数以 JSON 传入,返回结果、日志、产物与耗时。
MCP
MCP 服务支持 stdio、sse 与 http 三种传输。保存前可调用 POST /api/v1/tools/mcp/list-tools 获取服务器工具列表,确认可达并检查工具名、说明与参数 Schema。stdio 配置命令、参数和环境变量;sse / http 配置 URL 与可选请求头。
可见性与权限
visibility = private:仅创建者可见可用,团队成员即使同队也看不到(tool_access_denied)。visibility = team:团队成员可查看与使用;编辑/写操作要求创建者本人或团队管理员,普通成员只读。- 删除工具需要团队管理员/所有者:删除接口调用
check_team_permission(..., "tool:delete", require_team_admin=True),且tool:delete属于团队管理权限集合。内置工具是平台只读资源,不在删除范围内。
沙箱边界
代码工具默认超时 30 秒,持久化配置允许 1-600 秒;直接执行接口限制 1-60 秒。默认磁盘 1024MB(范围 0-102400),标准输出和错误各 256KB(16-8192)。产物路径必须位于 /workspace,写到 /workspace 之外会被拒绝。沙箱的隔离机制(Bubblewrap 命名空间、只读系统根、内核要求)见代码沙箱。
共享
自定义工具可共享给其他团队,但有三条硬约束:
- 只有工具所属团队的管理员能发起共享(
require_admin=True)。 private工具不能共享(private_tool_cannot_be_shared),也不能共享给自己团队,重复共享返回tool_already_shared。- 权限只有两档:
read_only(可查看并使用工具)、read_execute(在read_only基础上还能查看执行结果)。接收团队通过GET /api/v1/tools/shared-with-me查看共享工具,其中is_owned=false并带share_permission。
内置工具不能共享;共享是单向的,由工具所有者团队用 POST /api/v1/tools/{id}/share 建立,用 DELETE /api/v1/tools/{id}/share/{team_id} 撤销。
出网安全(SSRF)
自定义 HTTP 工具、工作流 HTTP 节点、知识库 URL 导入与数据库连通性测试都经过统一的外网访问校验(app/core/network_security.py):解析目标 IP 后,若属于私有、回环、链路本地、保留、组播或未指定网段则直接拒绝,仅当目标在站点设置 ssrf_allowed_targets 允许列表中才放行。metadata.google.internal 等云元数据主机属于关键阻断项,即使配置也无法放行。
把内网服务暴露给工具调用时,先确认目标已在 ssrf_allowed_targets 中登记;否则表现为工具执行失败而不是配置校验失败,排查时容易被误判为「代码写错」。
相关内容:内置工具、自定义 HTTP 与代码工具、连接 MCP 服务、代码沙箱、Skills。
这篇文章对你有帮助吗?