Skip to main content
當代理程式在沙箱內執行時,其 exec 命令會限制在沙箱環境中。提升模式可讓代理程式改為突破此限制,在沙箱外執行命令,並可設定核准閘門。
提升模式只會在代理程式處於沙箱中時改變行為。對於未使用沙箱的代理程式,exec 本來就會在主機上執行。

指令

使用斜線命令控制每個工作階段的提升模式: 亦可使用 /elev on|off|ask|full 傳送不含引數的 /elevated,即可查看目前層級。

運作方式

1

檢查可用性

必須在設定中啟用提升模式,且傳送者必須列於允許清單中:
2

設定層級

傳送僅含指令的訊息,以設定工作階段的預設值:
或以行內方式使用(僅套用至該訊息):
3

命令在沙箱外執行

啟用提升模式後,exec 呼叫會離開沙箱。有效主機預設為 gateway;若設定或工作階段的 exec 目標為 node,則為 node。在 full 模式下,若解析後的 exec 模式/主機核准原則已完全允許(security full、 ask off),便會略過 exec 核准;否則仍會套用一般核准原則。在 on/ask 模式下,一律套用已設定的核准規則。

解析順序

  1. 行內指令(僅套用至該訊息)
  2. 工作階段覆寫(透過傳送僅含指令的訊息設定)
  3. 全域預設值(設定中的 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> 項目。
  • 所有閘門都必須通過;否則會將提升模式視為不可用
允許清單項目格式:

提升模式不控制的項目

  • 工具原則:若工具原則拒絕 exec,提升模式無法加以覆寫。
  • 主機選擇原則:提升模式不會讓 auto 成為可任意跨主機覆寫的機制。它會使用設定或工作階段的 exec 目標規則,只有當目標已是 node 時才會選擇 node
  • /exec 分開/exec 指令會為已授權的傳送者調整每個工作階段的 exec 預設值(host、security、ask、node),且不需要提升模式。
bash 聊天命令(! 前置詞;/bash 別名)是獨立的閘門,除了其自身的 tools.bash.enabled 旗標外,還需要啟用 tools.elevated。停用提升模式也會封鎖 ! shell 命令。

相關內容

Exec 工具

由代理程式執行 shell 命令。

Exec 核准

exec 的核准與允許清單系統。

沙箱機制

閘道層級的沙箱設定。

沙箱、工具原則與提升模式

三個閘門在工具呼叫期間如何共同運作。