治理管线(Governance Pipeline)
wesgine 的治理系统通过三步管道对工具调用进行效果分类和访问控制。
三步管道
工具调用
↓
Hardline(灾难命令拦截)
↓
Sandbox(数据边界)
↓
Zone(效果分类 + Mode 决策)
↓
Allow / Deny / Audit
第一步:Hardline
18 条正则匹配灾难命令,恒 Deny,不可覆盖:
| 类别 | 示例 |
|---|---|
| 系统销毁 | rm -rf /、mkfs、dd if=/dev/zero |
| Fork 炸弹 | :(){ :|:& };: |
| 系统控制 | shutdown、reboot、init 0 |
| 引擎攻击 | kill <engine_pid> |
跨工具检测(INV-GOV-01)
Hardline extractCommand 不限于 exec 工具:
- 对所有工具检查
command/cmd/script/shellJSON 字段 - 覆盖 MCP 代理工具
- 防止通过 MCP proxy 绕过治理
第二步:Sandbox
数据边界控制:
DenyPaths
禁止访问的路径列表:
hypervisor.db(引擎数据库)- 配置文件路径
- 其他敏感路径
WorkDir 写入限制
写操作限制在允许的目录内:
- ArtifactDir(Cell 产物目录)
- HostPaths(宿主允许路径)
NetworkPolicy(INV-GOV-02)
| 策略 | 行为 |
|---|---|
allow | 允许所有网络访问 |
internal_only | 只允许内网 |
deny | 禁止所有网络 |
deny / internal_only 时,exec 命令中的网络工具被拦截:
检测对象:curl、wget、nc、ncat、netcat、ssh、scp、sftp、rsync
检测位置:
- 行首
;|&分隔符后- 引号与
$()子 shell sudo/env等 wrapper 后
参数位置的同名词(如 grep -r curl .)不误杀。
第三步:Zone
效果分类为三个区域:
| 区域 | 效果级别 | 示例 |
|---|---|---|
| Green | 只读/无副作用 | read、grep、search |
| Yellow | 有副作用但可逆 | write、edit、exec |
| Red | 重大副作用 | delegate_task(INV-GOV-03) |
GovernMode 决策
| Mode | Yellow Zone 行为 |
|---|---|
open(默认) | Allow + Audit |
locked | Deny |
Green → 总是 Allow Red → 总是需要条件审批
Compliance 预设
一键装配 GovernMode + NetworkPolicy + Redactor:
| 预设 | Mode | Network | Redactor | 适用 |
|---|---|---|---|---|
StandardPreset() | open | allow | 无 | wescode/wesclaw/wescraft |
RegulatedPreset() | locked | internal_only | 按场景 | financial/pii/healthcare |
ReadonlyPreset() | locked | deny | 无 | 展示/demo |
ComplianceClass
语义标签,自动映射到预设:
| Class | 预设 |
|---|---|
standard | StandardPreset |
financial | RegulatedPreset |
pii-strict | RegulatedPreset |
healthcare | RegulatedPreset |
Compliance 与 DenyPaths 解耦
INV-GOV-COMPLIANCE-02:
- Compliance 只决定
RedactorRules+GuardrailsRequired DenyPaths由 preset 注入 + 显式CellSpec.DenyPaths管理UpdateSpec(Compliance:)热切只 swap RedactorRules- 创建时用 preset 注入的 DenyPaths 不随 compliance 生命周期变化
治理链不产生 HITL
治理链做出 Allow/Deny 决策,不触发人工审批。
HITL 仅用于:
- Agent 主动交互(
ask_user) - 浏览器等待(
browser_wait_for_user) - CycleDetector 自愈失败
delegate_task 归类
delegate_task 工具归类为 ZoneRed(非 ZoneYellow):
- 子 Agent 启动必须经过完整审计
- 不受 GovernMode open/locked 简单切换
运行时修改
PUT /cells/{id}/config/governance
{
"mode": "locked",
"deny_paths": ["/etc/passwd"],
"network_policy": "deny"
}
修改立即生效。
相关文档
- CellSpec 治理 →
cellspec-governance.md - Exec 安全模型 →
exec-security-model.md - HITL →
hitl.md - Compliance 预设 →
governance-presets.md