PermissionRule 把某个工具与具体的调用模式映射到三种行为之一:ALLOW、DENY、ASK。规则在每种权限模式下都以最高优先级评估:拒绝与询问规则最先,允许规则排在工具内置检查之后。
每条规则由下述字段组成。当权限引擎评估一条规则时,它会用 rule_content 与实际调用入参调用该工具的 match_rule() 方法,判断规则是否命中。
str
必填
规则适用的工具名:
"Bash"、"Read"、"Write"、"Edit",或任意自定义工具名。str | None
必填
匹配模式,语义随
tool_name 变化:- Bash:通配前缀模式(
npm run:*命中npm run build、npm run test) - Read / Write / Edit:glob 模式(
src/**/*.py命中src/下任意.py) - 其他工具:对 JSON 序列化后的参数做精确匹配
PermissionBehavior
必填
ALLOW、DENY 或 ASKstr
必填
规则来源:
"userSettings"、"projectSettings"、"session" 等。匹配模式示例
rule_content 由各工具的 match_rule() 方法消费,并由 ToolBase.generate_suggestions() 自动生成。由于这两个方法都属于工具接口的一部分,每个工具可以独立定义自己的模式语法与匹配逻辑。
AgentScope 内置工具的模式约定如下:
- Bash
- 文件类工具(Read / Write / Edit)
针对
command 参数做匹配。模式格式为 COMMAND_PREFIX:*:前缀是命令的首段 token,* 匹配后续任意参数。配置规则
规则通过两种途径进入引擎:初始化时静态配置,或运行时由用户接受建议规则动态加入。 初始化时:在创建智能体时把规则传入PermissionContext:
UserConfirmResultEvent.rules 中回传,智能体会自动写入引擎:
允许规则无法覆盖工具发出的安全 ASK(
bypass_immune=True),例如写入 ~/.ssh/ 的操作。详见安全检查契约。