提权模式(/elevated 指令)

它做什么

  • /elevated on 在 gateway 主机上运行并保持 exec 批准(与 /elevated ask 相同)。
  • /elevated full 在 gateway 主机上运行并且自动批准 exec(跳过 exec 批准)。
  • /elevated ask 在 gateway 主机上运行但保持 exec 批准(与 /elevated on 相同)。
  • on/ask 强制 exec.security=full;配置的 security/ask 策略仍然适用。
  • 仅在代理是沙箱化时才改变行为(否则 exec 已经在主机上运行)。
  • 指令形式:/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 为当前会话密钥设置提权级别。
  • 内联指令/elevated on|ask|full 在消息内部仅适用于该消息。
  • 群组:在群组聊天中,仅当代理被提及时才执行提权指令。绕过提及要求的纯指令消息被视为已提及。
  • 主机执行:提权强制 exec 到 gateway 主机;full 也设置 security=full
  • 批准full 跳过 exec 批准;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 带有每个 provider 的白名单(例如 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(甚至是 [])以覆盖。每代理白名单使用回退。
  • 所有门必须通过;否则提权被视为不可用。

日志记录 + 状态

  • 提权 exec 调用以 info 级别记录。
  • 会话状态包括提权模式(例如 elevated=askelevated=full)。