提权模式(/elevated 指令)

功能

  • /elevated on 在网关主机上运行,保留执行审批(和 /elevated ask 一样)。
  • /elevated full 在网关主机上运行,并且自动批准执行(跳过执行审批)。
  • /elevated ask 在网关主机上运行,保留执行审批(和 /elevated on 一样)。
  • on/ask 不会强制 exec.security=full;已配置的安全/ask 策略仍然适用。
  • 只有当代理是沙箱化的时候才会改变行为(否则执行本来就在主机上跑)。
  • 指令形式:/elevated on|off|ask|full/elev on|off|ask|full
  • 只接受 on|off|ask|full;其他值会返回提示且不改变状态。

控制什么(和不控制什么)

  • 可用性门控tools.elevated 是全局基准。agents.list[].tools.elevated 可以进一步限制每个代理的提权(两者都必须允许)。
  • 每会话状态/elevated on|off|ask|full 为当前会话 key 设置提权级别。
  • 内联指令:消息中的 /elevated on|ask|full 仅对该消息生效。
  • 群组:在群聊中,提权指令只在代理被 @ 时才会响应。绕过 @ 要求的纯命令消息被视为已 @。
  • 主机执行:提权强制 exec 在网关主机上执行;full 还会设置 security=full
  • 审批full 跳过执行审批;on/ask 在允许列表/ask 规则要求时仍然需要审批。
  • 非沙箱化代理:对位置来说是空操作;只影响门控、日志和状态。
  • 工具策略仍然适用:如果 exec 被工具策略拒绝,提权也用不了。
  • /exec 是分开的/exec 为授权发送者调整每会话默认值,不需要提权。

解析顺序

  1. 消息上的内联指令(仅对该消息生效)。
  2. 会话覆盖(通过发送纯指令消息设置)。
  3. 全局默认值(配置中的 agents.defaults.elevatedDefault)。

设置会话默认值

  • 发送一条只包含指令的消息(允许空白),比如 /elevated full
  • 返回确认回复(Elevated mode set to full... / Elevated mode disabled.)。
  • 如果提权访问被禁用或发送者不在批准的允许列表中,指令会回复可操作的错误信息且不改变会话状态。
  • 发送不带参数的 /elevated(或 /elevated:)可以查看当前提权级别。

可用性 + 允许列表

  • 功能门控:tools.elevated.enabled(默认可能通过配置关闭,即使代码支持)。
  • 发送者允许列表:tools.elevated.allowFrom,按提供商设置允许列表(如 discordwhatsapp)。
  • 无前缀的允许列表条目仅匹配发送者范围的身份值(SenderIdSenderE164From);接收者路由字段不会用于提权授权。
  • 可变的发送者元数据需要显式前缀:
    • name:<value> 匹配 SenderName
    • username:<value> 匹配 SenderUsername
    • tag:<value> 匹配 SenderTag
    • id:<value>from:<value>e164:<value> 可用于显式身份定位
  • 每代理门控:agents.list[].tools.elevated.enabled(可选;只能进一步限制)。
  • 每代理允许列表:agents.list[].tools.elevated.allowFrom(可选;设置后,发送者必须同时匹配全局 + 每代理允许列表)。
  • Discord 回退:如果省略 tools.elevated.allowFrom.discord,会使用 channels.discord.allowFrom 列表作为回退(旧版:channels.discord.dm.allowFrom)。设置 tools.elevated.allowFrom.discord(哪怕是 [])可以覆盖。每代理允许列表使用回退。
  • 所有门控必须通过;否则提权被视为不可用。

日志 + 状态

  • 提权执行调用在 info 级别记录日志。
  • 会话状态包含提权模式(如 elevated=askelevated=full)。