提權模式(/elevated 指令)

功能說明

  • /elevated on 在 Gateway 主機上執行,保留執行核准(與 /elevated ask 相同)。
  • /elevated full 在 Gateway 主機上執行,自動核准執行(跳過執行核准)。
  • /elevated ask 在 Gateway 主機上執行,但保留執行核准(與 /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 在 Gateway 主機上執行;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)。