提權模式(/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為授權發送者調整單一工作階段的預設值,不需要提權。
解析順序
- 訊息上的行內指令(僅套用於該則訊息)。
- 工作階段覆寫(透過傳送僅包含指令的訊息設定)。
- 全域預設值(設定中的
agents.defaults.elevatedDefault)。
設定工作階段預設值
- 傳送僅包含指令的訊息(允許空白),例如
/elevated full。 - 會收到確認回覆(
Elevated mode set to full.../Elevated mode disabled.)。 - 如果提權存取已停用或發送者不在核准的允許清單中,指令會回覆可操作的錯誤訊息,且不改變工作階段狀態。
- 傳送
/elevated(或/elevated:)但不帶參數可查看目前的提權等級。
可用性 + 允許清單
- 功能門檻:
tools.elevated.enabled(預設可能透過設定關閉,即使程式碼支援)。 - 發送者允許清單:
tools.elevated.allowFrom,含每個供應商的允許清單(例如discord、whatsapp)。 - 未加前綴的允許清單條目僅比對發送者範圍的身份值(
SenderId、SenderE164、From);收件者路由欄位不會用於提權授權。 - 可變的發送者元資料需要明確的前綴:
name:<value>比對SenderNameusername:<value>比對SenderUsernametag:<value>比對SenderTagid:<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=ask、elevated=full)。