资源与凭据
前置知识: 阅读本文前建议先了解 核心概念 中的资源模型部分。
Monstrum 通过资源(Resource)连接外部系统,通过凭据(Credential)安全管理认证信息。本文介绍如何创建和管理资源、配置凭据、以及将资源绑定到 Bot。
概述
资源是 Bot 连接外部系统的桥梁。当 Bot 需要访问一个外部系统(如 SSH 服务器、MCP 工具服务器、其他 Bot)时,你需要:
- 创建 Resource:配置连接信息(地址、端口等)
- 添加 Credential:提供认证信息(API Key、SSH 密钥等)
- 绑定到 Bot:在 Bot 的资源配置中绑定该 Resource,并设置权限
平台提供两类资源类型:
- 内置资源类型(6 种):SSH、MCP、Bot、Web Access、Web3、Monstrum Agent——随平台安装,开箱即用
- 插件资源类型:通过安装插件获得(如 GitHub、GitLab、Notion 等),详见 插件
资源管理页面
在左侧导航栏点击 资源管理 进入资源管理页面。页面分为两个区域:
- 已配置的资源:你已创建的 Resource 列表
- 可添加的资源:平台支持的资源类型,点击即可创建新 Resource
每个 Resource 卡片显示名称、类型、状态和关联的凭据数量。
SSH 资源
SSH 资源让 Bot 通过 SSH 连接远程服务器执行命令。
创建 SSH 资源
- 在资源管理页面,找到”可添加的资源”中的 SSH
- 点击进入,填写:
- 资源名称:如”生产服务器”
- 主机地址:SSH 服务器的 IP 或域名
- 端口:默认 22
- 用户名:SSH 登录用户名
- 保存资源
添加凭据
SSH 支持两种认证方式:
SSH Key 认证:
- 在 Resource 详情中点击添加凭据
- 选择 SSH Key 认证方式
- 粘贴 SSH 私钥内容
- 如有私钥密码(passphrase),一并填写
- 保存
密码认证:
- 选择 Password 认证方式
- 填写登录密码
- 保存
提供的工具
| 工具 | 说明 |
|---|---|
ssh_execute | 在远程服务器执行命令 |
权限维度
在绑定到 Bot 时,可以配置以下权限约束:
| 维度 | 说明 | 示例 |
|---|---|---|
hosts | 允许连接的主机 | 10.0.1.*、prod-* |
commands | 允许执行的命令 | ls *、cat /var/log/*、systemctl status * |
使用 glob 模式匹配。未配置的维度表示不限制。
MCP 资源
MCP(Model Context Protocol)资源连接外部的 MCP 工具服务器,自动发现服务器上的可用工具。
创建 MCP 资源
- 在资源管理页面找到 MCP 端点
- 填写:
- 资源名称:如”内部工具平台”
- 服务器地址:MCP 服务器的 Streamable HTTP endpoint URL
- 选择认证方式:
无认证(No Auth): 适用于内网 MCP 服务器,直接保存即可。
API Key:
- 选择 API Key 认证
- 填写 API Key
- 可选配置认证 Header 名称(默认
Authorization)
OAuth 2.1 Client Credentials:
-
选择 OAuth 认证
-
配置 OAuth Provider(详见 插件 中的 OAuth 章节)
-
平台自动获取和刷新 Token
-
保存后,平台会自动连接 MCP 服务器并发现可用工具
工具发现
保存 MCP 资源后,平台会:
- 连接到 MCP 服务器
- 调用
tools/list获取工具列表 - 将发现的工具注册到平台
你可以在 Resource 详情中查看已发现的工具列表。如果工具列表有变化(新增或移除),平台会发送通知。
提供的工具
MCP 资源的工具是动态发现的——取决于 MCP 服务器提供了什么工具。
权限维度
| 维度 | 说明 | 示例 |
|---|---|---|
tools | 允许调用的工具 | get_*、list_*、create_issue |
在 Bot 绑定 MCP 资源时,你可以选择允许 Bot 使用哪些已发现的工具(通过勾选或 glob 模式)。
Bot 资源
Bot 资源实现 Bot 间的任务委托。当 Bot A 需要让 Bot B 执行任务时,需要将 Bot B 作为资源绑定到 Bot A。
创建 Bot 资源
- 在资源管理页面找到 Bot
- 选择目标 Bot(你希望被调用的 Bot)
- 填写资源名称
- 保存
Bot 资源不需要凭据——Bot 间通信使用平台内部认证。
提供的工具
| 工具 | 说明 |
|---|---|
bot_execute | 向目标 Bot 发送任务并等待结果 |
bot_query | 查询目标 Bot 的元信息 |
bot_status | 检查目标 Bot 的状态 |
bot_get_task_result | 获取之前创建的任务结果 |
bot_cancel_task | 取消之前创建的任务 |
bot_subscribe_event | 订阅平台事件 |
bot_unsubscribe_event | 取消事件订阅 |
bot_emit_event | 发布自定义事件 |
权限维度
| 维度 | 说明 | 示例 |
|---|---|---|
bots | 允许调用的目标 Bot | 具体 Bot ID |
subscribe_patterns | 允许订阅的事件模式 | task.*、schedule.fired |
emit_patterns | 允许发布的事件名称 | custom.* |
委派约束
Bot 间调用支持设置委派约束(Delegate Scope),限制被调用 Bot 在执行委托任务时的有效权限。详见 角色与权限 中的委派约束章节。
Web Access 资源
Web Access 资源让 Bot 可以搜索网页和抓取网页内容。
创建 Web Access 资源
- 在资源管理页面找到 Web Access
- 填写资源名称
- 选择搜索引擎:
- DuckDuckGo:免费,无需 API Key
- Brave:需要 Brave Search API Key
- SerpAPI:需要 SerpAPI Key
- Tavily:需要 Tavily API Key
- 如果选择了需要 API Key 的搜索引擎,添加对应的凭据
- 可选配置 HTTP/SOCKS5 代理
- 保存
提供的工具
| 工具 | 说明 |
|---|---|
web_search | 搜索网页 |
web_fetch | 抓取指定 URL 的网页内容(转为 markdown) |
权限维度
| 维度 | 说明 | 示例 |
|---|---|---|
domains | 允许抓取的域名 | *.github.com、docs.* |
domains 仅作用于 web_fetch 操作。搜索操作不受域名限制。
Web3 (EVM) 资源
Web3 资源让 Bot 可以与 EVM 兼容的区块链交互(Ethereum、Polygon、Base、Arbitrum 等)。
创建 Web3 资源
- 在资源管理页面找到 Web3 (EVM)
- 填写:
- 资源名称:如”Ethereum 主网”
- Chain ID:链 ID(1=Ethereum、137=Polygon、8453=Base 等)
- RPC URL:RPC 节点地址(如 Infura、Alchemy 提供的端点)
- 区块浏览器 URL(可选):用于生成交易链接
- 原生代币符号(可选):默认 ETH
- 最大 Gas 价格(可选):Gas 价格上限(Gwei)
- 添加凭据:
- 钱包私钥:用于签名交易的私钥(hex 格式)
- RPC API Key(可选):RPC 提供商的 API Key
- 保存
安全提示:钱包私钥会被加密存储,Bot 无法访问明文。建议使用专用钱包,不要使用主钱包。
提供的工具
| 工具 | 说明 |
|---|---|
web3_get_balance | 查询地址的原生代币或 ERC20 代币余额 |
web3_transfer | 转账原生代币 |
web3_get_transaction | 查询交易详情 |
web3_call_contract | 只读调用合约函数 |
web3_send_transaction | 发送写入合约的交易 |
web3_read_events | 读取合约事件日志 |
web3_estimate_gas | 估算 Gas 费用 |
权限维度
| 维度 | 说明 | 示例 |
|---|---|---|
operations | 允许的操作类型 | read(只读)、write(读写) |
recipients | 允许转账的地址 | 具体钱包地址 |
contracts | 允许调用的合约地址 | 具体合约地址 |
functions | 允许调用的合约函数 | balanceOf、transfer |
建议为 Web3 资源配置严格的权限约束,特别是 recipients 和 contracts 白名单。
Monstrum Agent 资源
Monstrum Agent 资源由本地 Agent 程序自动创建和管理,不需要手动配置。当 Agent 连接到平台并注册工具后,对应的资源会自动出现在资源列表中。
详见 本地 Agent 接入。
权限维度
| 维度 | 说明 | 示例 |
|---|---|---|
tools | 允许调用的工具 | run_shell、read_file |
paths | 允许访问的文件路径 | /home/user/project/* |
commands | 允许执行的命令 | ls *、git * |
images | 允许使用的容器镜像 | python:3.*、node:* |
凭据管理
凭据是加密存储的认证信息。平台使用 AES-256 加密凭据,Bot 永远无法接触明文。
凭据与 Resource 的关系
一个 Resource 可以有多个凭据。例如,一个 SSH 服务器可以同时配置 SSH Key 和密码两种凭据。在将 Resource 绑定到 Bot 时,你需要选择 Bot 使用哪个凭据。
添加凭据
在 Resource 详情页中:
- 点击”添加凭据”
- 选择认证方式(取决于资源类型支持的方式)
- 填写凭据信息
- 保存
凭据状态
| 状态 | 说明 |
|---|---|
| 正常 | 凭据有效可用 |
| 已过期 | Token 或密钥已过期,需要更新 |
| 需要重新授权 | OAuth Token 刷新失败,需要重新走授权流程 |
更新凭据
编辑凭据时,敏感字段(如 API Key、私钥)留空表示保持当前值不变。
删除凭据
删除凭据前,请确认没有 Bot 正在使用该凭据。使用中的凭据被删除后,对应的 Bot 将无法调用该资源的工具。
将资源绑定到 Bot
创建 Resource 和凭据后,还需要将它绑定到 Bot,Bot 才能使用该资源的工具。
绑定步骤
- 进入 Bot 详情页 → 资源配置 Tab
- 点击 绑定资源
- 选择要绑定的 Resource
- 选择使用的凭据(如果 Resource 只有一个凭据,自动选中)
- 配置权限:
- 静态工具类型(SSH、Bot、Web3):勾选允许的操作
- 动态工具类型(MCP、Agent):勾选允许的工具
- 参数约束:为各权限维度设置约束值
- 保存绑定
使用角色快速配置权限
如果你已经创建了角色模板(详见 角色与权限),可以在绑定时选择角色,快速应用预设的权限配置。
管理绑定
- 编辑权限:在资源配置列表中点击编辑
- 禁用/启用:临时禁用绑定而不删除
- 解除绑定:移除 Bot 对该资源的访问权限
内置资源与插件资源
内置资源类型
平台内置以下 6 种资源类型,无需安装即可使用:
| 资源类型 | 用途 | 工具发现方式 |
|---|---|---|
| SSH | 远程服务器命令执行 | 静态(固定工具) |
| MCP | 连接 MCP 工具服务器 | 动态(自动发现) |
| Bot | Bot 间任务委托 | 静态 |
| Web Access | 网页搜索和抓取 | 静态 |
| Web3 (EVM) | 区块链交互 | 静态 |
| Monstrum Agent | 本地 Agent 工具桥接 | 动态(Agent 注册) |
插件资源类型
安装插件后,对应的资源类型会出现在”可添加的资源”列表中,与内置类型并列展示。配置方式一致:创建 Resource → 添加凭据 → 绑定到 Bot。
插件资源类型可能支持额外的认证方式(如 OAuth),这些在创建凭据时会自动出现。
详见 插件。
常见用法
最小权限配置
为每个 Bot 只绑定必要的资源,并设置最严格的权限约束:
- SSH:限制主机白名单和命令白名单
- Web3:限制操作类型为只读、限制合约地址白名单
- Bot 间调用:限制可调用的目标 Bot
多环境管理
为同一类型创建多个 Resource 实例,分别对应不同环境:
- “SSH - 生产环境”:严格的命令白名单
- “SSH - 测试环境”:宽松的命令白名单
- 不同 Bot 绑定不同环境的 Resource
共享资源
一个 Resource 可以被多个 Bot 绑定,每个 Bot 可以有不同的权限约束。这样多个 Bot 可以共享同一个外部系统连接,但各自的权限互相独立。
常见问题
Resource 状态显示”已断开”
- SSH:检查主机地址和端口是否正确,服务器是否在线
- MCP:检查 MCP 服务器地址是否可达
工具发现失败(MCP)
- 检查 MCP 服务器地址是否正确
- 检查认证信息是否有效
- 确认 MCP 服务器是否支持 Streamable HTTP 传输
Bot 调用工具时提示”权限不足”
- 检查资源绑定中的权限配置
- 确认调用参数是否在权限约束范围内
- 在 数据中心 的日志审计中查看权限校验详情
凭据过期
- OAuth Token:进入 Resource 详情重新授权
- API Key:编辑凭据更新 Key 值
- SSH Key:编辑凭据替换新的私钥