Skip to main content
PermissionRule 把某个工具与具体的调用模式映射到三种行为之一:ALLOWDENYASK。规则在每种权限模式下都以最高优先级评估:拒绝与询问规则最先,允许规则排在工具内置检查之后。 每条规则由下述字段组成。当权限引擎评估一条规则时,它会用 rule_content 与实际调用入参调用该工具的 match_rule() 方法,判断规则是否命中。
str
必填
规则适用的工具名:"Bash""Read""Write""Edit",或任意自定义工具名。
str | None
必填
匹配模式,语义随 tool_name 变化:
  • Bash:通配前缀模式(npm run:* 命中 npm run buildnpm run test
  • Read / Write / Edit:glob 模式(src/**/*.py 命中 src/ 下任意 .py
  • 其他工具:对 JSON 序列化后的参数做精确匹配
PermissionBehavior
必填
ALLOWDENYASK
str
必填
规则来源:"userSettings""projectSettings""session" 等。

匹配模式示例

rule_content 由各工具的 match_rule() 方法消费,并由 ToolBase.generate_suggestions() 自动生成。由于这两个方法都属于工具接口的一部分,每个工具可以独立定义自己的模式语法与匹配逻辑。 AgentScope 内置工具的模式约定如下:
针对 command 参数做匹配。模式格式为 COMMAND_PREFIX:*:前缀是命令的首段 token,* 匹配后续任意参数。

配置规则

规则通过两种途径进入引擎:初始化时静态配置,或运行时由用户接受建议规则动态加入。 初始化时:在创建智能体时把规则传入 PermissionContext
运行时通过建议规则:当权限系统返回 ASK 时,会基于本次调用自动生成建议规则。把已接受的规则附在 UserConfirmResultEvent.rules 中回传,智能体会自动写入引擎:
允许规则无法覆盖工具发出的安全 ASKbypass_immune=True),例如写入 ~/.ssh/ 的操作。详见安全检查契约