Skip to main content
在规则与模式之外,每个工具还会在运行时通过两个接口方法分析真实的调用入参:check_read_only() 支撑只读快速通道,check_permissions() 执行工具自身的安全分析。AgentScope 内置工具覆盖三类检查: 工作目录自动放行始终从属于安全检查:工作目录内的危险操作仍会询问或拒绝。

自定义工具

自定义工具通过实现 check_permissions() 添加自己的权限逻辑。如果工具的只读性取决于输入(比如 Bashls 是只读,rm 不是),还应该覆写 check_read_only()

安全检查契约

安全检查(safety check)是工具自己发出、认为太危险而不能被静默放行的 ASK,例如写入 ~/.bashrcWrite、执行 rm -rf /Bash。在决策上设置 bypass_immune=True,即使命中了允许规则或处于会自动放行的模式,引擎也仍然把 ASK 呈现给用户。 适用于「一次错误调用就会造成用户几乎肯定不想发生的破坏」的场景。例如:自定义的 DeployTool 在目标是 prod-* 时返回 bypass_immune=True,那么为预发环境配置的 allow_rules["DeployTool"] = ["*"] 也不会意外授权生产部署。 各模式下的具体处理: 普通 ASK(bypass_immune=False,默认值)可以被 DEFAULT / ACCEPT_EDITS 下命中的允许规则覆盖,在 BYPASS 下被兜底放行。

只读命令

常见的只读 bash 命令在没有任何规则的情况下也会被自动放行,在所有模式(包括 DEFAULT)下都生效。复合命令(&&||;|)只有在所有子命令都只读时才视为只读。输出重定向(>>>)会让命令立即失去只读属性。被标记为命令注入风险的命令(如 ls $(rm -rf /)视为只读,因此不会在此自动放行,而是落到工具的安全检查上。

危险路径保护

针对以下路径的操作在 DEFAULTACCEPT_EDITSDONT_ASK 下触发不可绕过的 ASK(DONT_ASK 下转为 DENY)。BYPASS 模式按设计跳过此检查;如果在 BYPASS 下仍需要危险路径保护,请为具体路径添加拒绝规则。