permissions=,智能体的内置文件系统工具将遵守这些规则。
:::python
权限需要
deepagents>=0.5.2。权限需要
deepagents>=1.9.1。ls、read_file、glob、grep、write_file、edit_file、delete)。访问文件系统的自定义工具和 MCP 工具不受此限制。权限也不适用于 沙盒后端,后者通过 execute 工具支持任意命令执行。
::!
:::js
权限仅适用于内置文件系统工具(ls、read_file、glob、grep、write_file、edit_file)。访问文件系统的自定义工具和 MCP 工具不受此限制。权限也不适用于 沙盒后端,后者通过 execute 工具支持任意命令执行。
::!
基本用法
:::python 将一系列 @[FilesystemPermission] 规则传递给 @[create_deep_agent]。规则按声明顺序评估。第一个匹配的规则生效。如果没有规则匹配,则允许操作。
FilesystemPermission 规则传递给 createDeepAgent。规则按声明顺序评估。第一个匹配的规则生效。如果没有规则匹配,则允许操作。
规则结构
:::python 每个FilesystemPermission 有三个字段:
规则使用先匹配者胜出评估:第一个
operations 和 paths 与当前调用匹配的规则决定结果。如果没有规则匹配,调用将被 允许(宽松默认)。
::!
:::js
每个 FilesystemPermission 有三个字段:
规则使用先匹配者胜出评估:第一个
operations 和 paths 与当前调用匹配的规则决定结果。如果没有规则匹配,调用将被 允许(宽松默认)。
路径必须是绝对路径(以 / 开头),不能包含 .. 或 ~。无效路径在智能体构建时抛出异常。
::!
:::python
需要人工批准
"interrupt" 模式需要 deepagents>=0.6.8。mode="interrupt" 设置为需要人工批准,而不是直接允许或拒绝匹配操作。当智能体在匹配中断模式规则的路径上调用内置写入工具(write_file、edit_file、delete)时,create_deep_agent 会引发人工参与中断,而不是运行工具,并且审阅者可以批准、编辑或拒绝调用。
interrupt_on 合并,因此您以与工具调用中断相同的方式处理和恢复它们。参见 人工参与 以了解恢复流程。
删除目录是全有或全无操作:
delete 检查目标及其所有后代路径的 write 权限,如果其中任何一个是拒绝的,则拒绝整个操作,而不是删除部分树。delete 对现有空目录也应用相同的保守检查,因为它仍然是目录而不是确认的叶目标。删除普通文件是一个精确匹配的情况:delete以与write_file和edit_file相同的方式解析目标,使用先匹配胜出的评估方式,因此一个更早、更窄的allow规则会胜过一个较晚的通用deny规则。deepagents>=0.7.3对此精确匹配行为是必需的。示例
:::python隔离到工作区目录
仅允许在/workspace/下读写,并拒绝其他所有操作:
保护特定文件
只读内存
允许智能体读取内存文件,但阻止其修改它们。这对于需要仅由应用代码更新的组织级策略或共享知识库很有用。参见只读与可写内存以获取更多背景。拒绝所有访问
阻止所有读写。这是一个限制性的基线,你可以在其上叠加更具体的允许规则:规则顺序
由于先匹配胜出,规则顺序很重要。将更具体的规则放在更广泛的规则之前:隔离到工作区目录
仅允许在/workspace/下读写,并拒绝其他所有操作:
保护特定文件
只读内存
允许智能体读取内存文件,但阻止其修改它们。这对于需要仅由应用代码更新的组织级策略或共享知识库很有用。参见只读与可写内存以获取更多背景。拒绝所有访问
阻止所有读写。这是一个限制性的基线,你可以在其上叠加更具体的允许规则:规则顺序
由于先匹配胜出,规则顺序很重要。将更具体的规则放在更广泛的规则之前:子智能体权限
:::python 子智能体默认继承父智能体的权限。要给子智能体不同的权限,在其规范中设置permissions字段。这完全替换了父智能体的规则。
permissions字段。这完全替换了父智能体的规则。
permissions: []。空数组用无限制覆盖父规则。省略permissions则继承自父智能体。
:::
组合后端
:::python 在使用带有沙盒默认值的 @[CompositeBackend]时,每个权限路径都必须限定在已知路由前缀下。沙盒支持任意命令执行,因此仅基于路径的权限无法阻止通过 shell 命令的文件系统访问。将权限限定在路由特定的后端可避免此冲突。
NotImplementedError:
CompositeBackend带有沙盒默认值时,每个权限路径都必须限定在已知路由前缀下。沙盒支持任意命令执行,因此仅基于路径的权限无法阻止通过 shell 命令的文件系统访问。将权限限定在路由特定的后端可避免此冲突。
官方原文:src/oss/deepagents/permissions.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。