Tools
提升權限模式
當代理程式在沙箱內執行時,其 exec 命令會限制在沙箱環境中。提升模式可讓代理程式改為突破此限制,在沙箱外執行命令,並可設定核准閘門。
指令
使用斜線命令控制每個工作階段的提升模式:
| 指令 | 功能 |
|---|---|
/elevated on |
在已設定的主機路徑上於沙箱外執行,並保留核准流程 |
/elevated ask |
與 on 相同(別名) |
/elevated full |
在已設定的主機路徑上於沙箱外執行,且當模式/主機核准原則已允許時略過核准 |
/elevated off |
返回僅限沙箱內的執行 |
亦可使用 /elev on|off|ask|full。
傳送不含引數的 /elevated,即可查看目前層級。
運作方式
檢查可用性
必須在設定中啟用提升模式,且傳送者必須列於允許清單中:
{ tools: { elevated: { enabled: true, allowFrom: { discord: ["user-id-123"], whatsapp: ["+15555550123"], }, }, },}設定層級
傳送僅含指令的訊息,以設定工作階段的預設值:
/elevated full或以行內方式使用(僅套用至該訊息):
/elevated on 執行部署指令碼命令在沙箱外執行
啟用提升模式後,exec 呼叫會離開沙箱。有效主機預設為
gateway;若設定或工作階段的 exec 目標為
node,則為 node。在 full 模式下,若解析後的 exec
模式/主機核准原則已完全允許(security full、
ask off),便會略過 exec 核准;否則仍會套用一般核准原則。在
on/ask 模式下,一律套用已設定的核准規則。
解析順序
- 行內指令(僅套用至該訊息)
- 工作階段覆寫(透過傳送僅含指令的訊息設定)
- 全域預設值(設定中的
agents.defaults.elevatedDefault)
可用性與允許清單
- 全域閘門:
tools.elevated.enabled(必須為true) - 傳送者允許清單:
tools.elevated.allowFrom,包含各頻道的清單 - 每個代理程式的閘門:
agents.entries.*.tools.elevated.enabled(只能進一步限制;全域與每個代理程式的閘門都必須為true) - 每個代理程式的允許清單:
agents.entries.*.tools.elevated.allowFrom(傳送者必須同時符合全域與每個代理程式的清單) - 頻道提供的備援允許清單:當未設定
tools.elevated.allowFrom.<provider>時,頻道外掛可選擇透過 SDK 介面卡掛鉤提供備援允許清單。目前沒有任何內建頻道實作此掛鉤,因此實際上目前每個提供者都需要明確的tools.elevated.allowFrom.<provider>項目。 - 所有閘門都必須通過;否則會將提升模式視為不可用
允許清單項目格式:
| 前置詞 | 比對項目 |
|---|---|
| (無) | 傳送者 ID、E.164 或 From 欄位 |
name: |
傳送者顯示名稱 |
username: |
傳送者使用者名稱 |
tag: |
傳送者標籤 |
id:、from:、e164: |
明確指定身分 |
提升模式不控制的項目
- 工具原則:若工具原則拒絕
exec,提升模式無法加以覆寫。 - 主機選擇原則:提升模式不會讓
auto成為可任意跨主機覆寫的機制。它會使用設定或工作階段的 exec 目標規則,只有當目標已是node時才會選擇node。 - 與
/exec分開:/exec指令會為已授權的傳送者調整每個工作階段的 exec 預設值(host、security、ask、node),且不需要提升模式。
相關內容
Was this useful?