验证命令
本页说明 Evolver 的命令验证器,不适用于桌面端所有工具。验证命令需要检验本次改动,并明确工作目录、运行时间、文件范围和秘密处理方式。该验证器默认每条命令超时 60 秒,最高 120 秒。
命令要求
- 使用明确的可执行文件和参数,避免把不受信任文本拼接进 shell。
- 固定工作目录,只读取本次验证需要的配置和依赖。
- 不在参数、输出或诊断包中打印 token、私钥和完整环境变量。
- 将退出状态与关键断言、文件差异或产物检查一起保存。
- 对会写数据库、发布产物或调用生产服务的“测试”单独审批。
平台隔离差异
Linux 按宿主建立的隔离边界执行,不是只凭操作系统名称决定。检查结果中的 isolationTier:
| 返回值 | 实际边界 |
|---|---|
read-only | 无网络、隐藏主目录、只读根文件系统,并使用 cgroup 资源限制 |
no-network | 私有文件系统根、只读工作副本、私有 HOME 与进程空间、无网络;没有聚合 cgroup 资源限制 |
none | 没有 namespace 隔离,只使用进程与路径加固 |
Windows 和 macOS 不具备这套 Linux namespace 边界,命令仍能访问网络和用户主目录。布尔字段 isolated 不能区分两档隔离强度;审核时保存 isolationTier。调用方要求隔离却无法达到最低档位时,验证器会在启动命令前拒绝。
验证记录
每次验证至少保存以下记录:
text
command / arguments
working directory
platform and versions
timeout
exit status
key assertions and redacted output
touched files or external effects
通过不等于已经验证目标
该沙箱执行入口为兼容既有行为,将空命令列表返回为 passed: true;这只表示没有命令需要执行。不能据此宣称测试通过或功能已经验证。开始前检查命令列表,完成后核对实际执行的 results、跳过项 skipped 和对应断言。
脚本不存在、位于允许根目录之外、经过符号链接或无法解析时,会留下跳过原因。需要证明的检查被跳过,应先修复路径或补齐脚本,不能把“没有执行”算成覆盖完成。沙箱建立或清理失败也属于失败,即使命令本身退出为 0。
失败处理
超时、信号终止或输出缺失都应记为未通过,不能自动转成成功。命令被脱敏流程修改后也不得继续执行或用于晋级,因为实际验证内容已经改变。
相关页面
EvoX 文档 · 安全 · 执行边界