Skip to main content
BashToolset 属于未发布能力,PyPI 1.1.13 不包含此工具。体验本页功能可安装以下已核验源码版本;运行智能体示例还需配置模型,直接文件读取不需要模型凭证

功能说明

BashToolset 是一组只读文件系统工具集,提供十个常见 Shell 命令的读取能力,但不启动 Shell 进程,也不接受命令行选项。所有工具使用 Python 标准库实现,在配置的权限范围内安全地读取文件和目录。 导入路径:from veadk.tools.builtin_tools.bash_toolset import BashToolset
BashToolset 仅支持 Linux 和 macOS。所有工具均为只读操作,不执行写入、删除或命令执行。

何时使用

当智能体需要读取工作目录中的文件、浏览目录结构、搜索文件内容或比较文件差异时,使用 BashToolset。与代码沙箱不同,BashToolset 在本地进程内执行,不依赖远端沙箱,适合需要快速、安全地读取本地文件的场景。
BashToolset 提供的是应用层访问控制,而非操作系统级沙箱。主机仍需控制允许目录内的文件重命名、硬链接和挂载操作,防止权限绕过。超时会取消调用方并协作停止读取工作线程,但被阻塞的文件系统调用无法被 Python 线程强制中断。

使用示例

bash_toolset_agent.py

参数

构造参数

默认排除项为:.env、.env.*、.ssh、.aws、*.pem、*.key。传入空列表 [] 可显式清除全部排除项,使所有匹配权限范围的文件可被读取。
权限检查同时应用于请求路径和解析后的符号链接目标。递归操作跳过符号链接、排除的条目和特殊文件(如命名管道)。

返回格式

所有工具返回一个字典,包含以下字段:

工具说明

cat

读取指定路径的文本文件内容。

pwd

返回工具集的工作目录,不接收参数。

ls

列出目录下的子项,不跟随符号链接。

find

按文件名通配符递归查找文件或目录,不跟随符号链接。

grep

按字面文本搜索文件内容,返回匹配行及其路径和行号。不支持正则表达式。 读取文件开头若干行。

tail

读取文件末尾若干行。

wc

统计文件的换行符数、空格分隔词数和字节数,返回 JSON 格式结果。

stat

返回文件或目录的类型、大小、权限和修改时间,返回 JSON 格式结果。

diff

使用统一差异格式比较两个文本文件,每个文件最多读取 2000 行。

配置多个允许目录

BashToolset 支持配置多个允许访问的根目录,使智能体能够跨目录读取文件:
bash_toolset_multi_root.py

安全说明

  • BashToolset 的权限控制在创建时固定,后续修改传入的列表不会影响已创建的工具集。
  • 应用层访问控制不能替代操作系统级沙箱。主机需要控制允许目录内的文件重命名、硬链接和挂载操作。
  • 超时取消调用方并协作停止读取工作线程;被阻塞的文件系统调用无法被 Python 线程强制中断。

不调用模型的本地验证

此示例在临时目录创建测试文本,读取后输出 hello,随后自动删除临时目录。读取工具本身不修改文件,文件准备由示例应用完成
多目录场景中,相对路径始终以 working_directory 为基准;访问其他允许目录时使用绝对路径。自定义 exclude_patterns 会替换默认排除项,不能假定与默认值合并。输出有 error 时,即使 output 非空也可能只是部分结果
最后修改于 2026年9月19日