安全策略 (命令行执行限制)
由于 Kesoku 是一个自主智能体,拥有在宿主机上运行命令行指令(如文件读写、编译环境检查、运行测试脚本等)的能力,因此对命令执行的安全审计至关重要。Kesoku 提供了基于正则表达式的严格命令过滤机制。
🔒 核心配置项 ([shell])
您可以在 config.toml 的 [shell] 分区中对安全过滤规则进行定义:
[shell]
enabled = true
use_shell = true
mode = "blocklist"
allowlist_patterns = ["^(echo|ls|pwd|cat|git|uv|grep|find|python|sed|awk)(\\s|$)"]
blocklist_patterns = ["(\\b|^)(rm|sudo|shutdown|reboot|mkfs|dd|chmod|chown)(\\b|\\s|$)"]
background_threshold_seconds = 300.0
[shell.forbidden_patterns]
"ping" = "Ping is not allowed for security reasons."
"curl.*evil\\.com" = "Access to evil.com is blocked."
参数详细说明:
-
enabled(布尔值,默认:true): 是否启用终端命令行执行工具。如果设置为false,Agent 将彻底失去调用系统命令行的能力。 -
use_shell(布尔值,默认:true): 是否通过系统 Shell 执行命令(即subprocess.Popen(..., shell=True))。启用后支持管道符(|)、重定向(>)以及环境变量展开。 -
mode(字符串,默认:"blocklist"):"blocklist"(黑名单模式):默认允许执行所有命令,除非命令匹配了blocklist_patterns中的正则表达式。"allowlist"(白名单模式):默认禁止执行所有命令,除非命令完全匹配allowlist_patterns中的任一正则表达式。
-
allowlist_patterns/blocklist_patterns(字符串列表): 用于审查完整命令字符串的正则表达式列表。 -
background_threshold_seconds(浮点数,默认:300.0): 允许命令在前台运行的最长时间(秒)。如果一条命令执行时间超过此阈值,系统会自动将其转为后台非阻塞任务,防止会话卡死。 -
forbidden_patterns(键值为正则表达式、Value 为错误信息的字典/映射表): 自定义禁止命令正则及其对应的错误信息。若匹配成功,命令将被拒绝,并直接返回配置的自定义错误信息。
⚙️ 命令审查过滤流程
当 Agent 尝试运行一条 Shell 指令时:
- 系统去除命令首尾的空白字符。
- 逐个用
forbidden_patterns的键(正则表达式)去匹配该命令。一旦匹配成功,命令会立即被拦截拒绝,并直接返回对应的自定义错误信息。 - 黑名单模式 (Blocklist Mode):
- 逐个用
blocklist_patterns里的正则去匹配该命令。 - 一旦任一正则匹配成功(例如命令中包含
sudo或试图运行rm删库),命令会立即被拦截拒绝,并向 Agent 返回安全警告。
- 逐个用
- 白名单模式 (Allowlist Mode):
- 逐个用
allowlist_patterns里的正则去匹配该命令。 - 如果没有任何正则能匹配该命令,命令会立即被拦截拒绝。
- 逐个用
- 如果命令通过安全检查,系统会在独立的子进程中执行该命令,并实时捕获其
stdout与stderr流。