治理与安全策略
wescode 通过 wesgine 的治理系统控制 AI 的行为边界,保护你的系统安全。
治理模式
四种预设模式
| 模式 | 对应设置 | Yellow Zone | 适用场景 |
|---|---|---|---|
| 编程模式 | open | 允许 + 审计 | 日常编程(默认) |
| 助手模式 | open | 允许 + 审计 | 通用助手 |
| 锁定模式 | locked | 拒绝 | 金融合规 / 展示 |
| 基准模式 | open | 允许 | 评测基准 |
切换模式
在设置页 → 工具与配额 → 治理策略中选择。
三步治理管道
AI 每次执行操作时,经过三层检查:
Hardline → Sandbox → Zone
Hardline(灾难拦截)
永远拦截,不可覆盖:
| 类别 | 示例 |
|---|---|
| 系统破坏 | rm -rf /、fork bomb |
| 进程终止 | shutdown、kill engine |
| 权限提升 | 不当的 sudo 操作 |
共 18 条正则规则,对所有工具的 command / cmd / script / shell 字段生效。
Sandbox(数据边界)
控制 AI 可以访问的路径和网络:
| 设置 | 效果 |
|---|---|
| DenyPaths | 禁止读写的路径列表 |
| WorkDir 限制 | 写入限制在工作区范围 |
| NetworkPolicy | 控制网络访问(allow/deny/internal_only) |
网络命令检测
当 NetworkPolicy=deny 时,以下命令被拦截:
curl / wget / nc / ncat / netcat / ssh / scp / sftp / rsync
检测基于命令位置(行首 / 分隔符后),不会误杀 grep -r curl . 这样的搜索。
Zone(效果分类)
| Zone | 默认行为 | 说明 |
|---|---|---|
| Green | 允许 | 读取操作 |
| Yellow | 按模式决策 | 写入操作 |
| Red | 条件允许 | delegate_task 等 |
路径安全
DenyPaths
默认被保护的路径:
DenyPaths:
- hypervisor.db # 引擎注册表
- config.yaml # 用户配置
EnginePaths
引擎自动计算的安全路径(不需要手动配置):
- ArtifactDir:引擎产出目录
- ScratchDir:临时计算目录(Run 后自动清理)
写入限制
所有 AI 写操作必须落入:
- ArtifactDir(持久产出)
- HostPaths(工作区路径)
禁止写入 /tmp、Cell 外路径等。
exec 安全
三分类路由
| 分类 | 实现 | 用户可见 |
|---|---|---|
| 检索 | Go os/exec | 不可见 |
| 验证 | Go os/exec + mirrorSession | 只读终端 |
| 交互 | VSCode 集成终端 | 用户终端 |
进程安全
- 所有子进程通过
proc.Command统一管理 - 进程组隔离(
Setpgid) - 取消时 SIGKILL 整个进程组
WaitDelay限制Wait()时间
环境隔离
exec 子进程的环境变量经过两层清理:
- 静态模式表:移除已知敏感变量
SecretRef{source:env}登记:精确移除用户配置的密钥变量
循环检测
CycleDetector
检测 AI 是否陷入死循环(完全相同的操作 + 完全相同的结果):
| 类型 | 警告阈值 | 终止阈值 |
|---|---|---|
| 探索类工具 | 50 | 100 |
| 操作类工具 | 25 | 50 |
| 完全相同调用 | 4 | 7 |
两阶段终止
- 自愈:首次触发 → 注入纠正消息 → 重置计数器
- HITL:再次触发 → 询问用户 → 60s 超时自动终止
工具特定阈值
| 工具 | 警告 | 终止 |
|---|---|---|
| exec | 30 | 60 |
| exec:readonly | 50 | 100 |
| edit | 30 | 60 |
| write | 30 | 60 |
| plan | 15 | 30 |
ErrorStreakDetector
伪进展检测
当 AI 持续产生错误但看起来在工作时:
- 连续错误达到阈值
- HITL 询问用户是否继续
- 超时后自动终止
API Key 安全
SecretRef 三源
| 源 | 说明 |
|---|---|
inline | AES-256-GCM 加密存储 |
env | 环境变量引用 |
live | 运行时动态获取 |
inline 加密
API Key 明文
→ AES-256-GCM 加密
→ 写入 hypervisor.db
→ 密钥在 {DataDir}/secrets/spec.key (0600)
拷走数据库不带 key 文件 → 所有 Provider 失效。
配额管理
计算配额
| 配额 | 说明 |
|---|---|
| MaxConcurrentRuns | 同时运行的 Run 数 |
| TokensPerMinute | 每分钟 Token 限制 |
| TokensPerDay | 每日 Token 限制 |
外设配额
| 配额 | 说明 |
|---|---|
| MaxIMChannels | IM 渠道数 |
| MaxMCPServers | MCP 服务器数 |
| MaxCronJobs | 定时任务数 |
| MaxSkillsInstalled | 已安装技能数 |
超限行为
- 计算配额超限 → 429 响应
- 存储配额超限 → GC / 拒绝写入
- 外设配额超限 → 拒绝安装
最佳实践
日常开发
使用默认的编程模式即可,它提供:
- 完整的工具访问
- Hardline 灾难防护
- 审计记录
高安全场景
切换到锁定模式:
- 禁止 Yellow Zone 操作
- 严格网络控制
- 适合处理敏感代码
自定义治理
可以单独调整:
- DenyPaths:添加额外保护路径
- NetworkPolicy:控制网络访问
- CycleDetector 阈值:调整循环检测灵敏度