mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-09-07 18:17:14 +00:00
76 lines
3.9 KiB
Markdown
76 lines
3.9 KiB
Markdown
# Agent 工具权限
|
|
|
|
Agent 配置页展示同一次运行中可能投射给 AgentRunner 的完整工具目录:
|
|
|
|
- 事件级工具由 Agent 选择的事件范围自动启用。
|
|
- `allowed_platform_tools` 管理需要 Agent 自行指定目标的平台级动作。
|
|
- `allowed_tools` 管理沙盒内置工具、MCP 工具、插件工具和技能工具。
|
|
|
|
Host 会按当前 Workspace 实时解析工具来源。未安装的插件、未连接的 MCP、不可用的 Box
|
|
沙盒以及名称存在歧义的工具不会进入可选目录。旧 Agent 若尚未保存 `allowed_tools`,继续
|
|
沿用运行器原有的工具策略;一旦在配置页保存,就转为明确的顶层白名单。
|
|
|
|
Agent 不直接持有平台适配器,也不能调用任意原始平台接口。每次运行时,Host 根据当前
|
|
事件自动加入兼容的事件级工具,并加入 `allowed_platform_tools` 中选择的平台级工具,
|
|
再与 AgentRunner 权限、当前适配器声明的 API、当前事件能够安全绑定的目标取交集,
|
|
得到 `ctx.resources.tools` 中 `tool_type=platform` 的最终工具集合。
|
|
|
|
## 两类工具
|
|
|
|
- 事件级工具以 `event_` 开头。用户、群组、消息或请求标识由 Host 从当前事件冻结,
|
|
Agent 只能填写回复文本、审核结果、禁言时长等动作参数。
|
|
- 平台级工具以 `platform_` 开头。Agent 可以填写目标用户、群组或消息标识,因此权限
|
|
更宽,配置页将其与事件级工具分开展示。
|
|
|
|
当前事件级工具包括:回复当前会话、删除当前消息、查询事件发起者或相关群组/成员、
|
|
禁言/解除禁言/移出相关成员、同意或拒绝好友请求、同意或拒绝入群邀请。
|
|
|
|
当前平台级工具包括:发送/查询/删除消息,查询群组、群列表、群成员,修改群名称,
|
|
禁言/解除禁言/移出成员、退出群组,以及查询用户和好友列表。
|
|
|
|
`call_platform_api` 不在 Agent 工具目录中。平台私有透传接口必须先在 Host 中定义为
|
|
具有固定名称、JSON Schema、风险级别和授权规则的语义工具,不能让 Agent 自行传入
|
|
原始 action 名称。
|
|
|
|
## 运行时投射
|
|
|
|
```text
|
|
current event type ── compatible event tools
|
|
Agent.allowed_platform_tools ── selected platform tools
|
|
│
|
|
├─ AgentRunner capability tool_calling is enabled
|
|
├─ AgentRunner manifest permissions.tools contains call
|
|
├─ current adapter.get_supported_apis()
|
|
└─ current event type and frozen target are compatible
|
|
│
|
|
▼
|
|
ctx.resources.tools[tool_type=platform]
|
|
│
|
|
├─ Local Agent: AgentRunAPIProxy.call_tool
|
|
└─ External AgentRunner: langbot_list_assets / langbot_get_tool_detail /
|
|
langbot_call_tool (MCP Asset Gateway)
|
|
│
|
|
▼
|
|
Host revalidates run_id, runner plugin identity, operation and frozen source
|
|
│
|
|
▼
|
|
current bot adapter semantic API
|
|
```
|
|
|
|
本地和外部 AgentRunner 因此使用同一个工具名、参数 Schema 和 Host 授权快照。外部
|
|
平台不会获得适配器对象或长期凭据;MCP 网关中的 run token 和 Host 中的 run session
|
|
都只对应当前运行。
|
|
|
|
## 失败语义
|
|
|
|
- Agent 未选择当前事件:不会触发运行,也不会生成事件级工具。
|
|
- 平台级工具未在 Agent 配置中选择:不进入运行资源。
|
|
- Runner 未启用 `tool_calling` 或没有 `tools.call` 权限:所有平台动作均不可用。
|
|
- 当前适配器不声明对应 API:该工具记入 `platform_capabilities.unavailable_tools`,不投射。
|
|
- 事件类型不匹配或缺少可冻结目标:事件级工具不投射。
|
|
- 调用期间机器人下线或适配器能力变化:Host 拒绝执行并返回具体错误。
|
|
- 参数包含 Schema 之外的字段:Host 拒绝执行。
|
|
|
|
这些规则保证配置白名单不是唯一防线;真正的执行授权始终由单次运行快照和执行时检查
|
|
共同决定。
|