CellSpec 引擎保护路径(EnginePaths)
wesgine 的 CellSpec.EnginePaths 声明引擎内部保护的路径,与 DenyPaths 配合实现完整的路径边界判定。
设计目的
EnginePaths 标识引擎自身需要保护的路径,这些路径由引擎自动设定,不需要消费方显式声明。典型包括:
- Cell 数据目录(
{CellDataDir}/) - 引擎数据库文件
- 内部状态文件
与 DenyPaths 的区别
| 字段 | 设定者 | 内容 | 作用 |
|---|---|---|---|
DenyPaths | 消费方声明 + Compliance 预设注入 | 敏感业务路径 | 禁止 Agent 读写 |
EnginePaths | 引擎自动设定 | 引擎内部路径 | 引擎内部保护 |
两者共同参与 internal/pathaccess/ 模块的路径边界判定。
路径边界判定流程
Agent read/write/exec 请求
↓
pathaccess.Check(path, denyPaths, enginePaths)
├── 命中 DenyPaths → ErrPathDenied
├── 命中 EnginePaths → ErrPathDenied
└── 均未命中 → 放行
与 File I/O 模型的关系
wesgine 的 File I/O 分三域:
| 域 | 路径 | 说明 |
|---|---|---|
| ArtifactDir | {CellDataDir}/workspace/{actor}/ | 持久产出目录 |
| ScratchDir | .scratch/{runID}/ | 临时计算目录(Run 结束后 GC) |
| HostPaths | AllowPaths 声明的路径 | 宿主文件系统(只验证边界) |
EnginePaths 保护的是 Cell 数据目录中不属于 workspace/ 和 .scratch/ 的部分(数据库、配置等)。
不变量
- INV-IO-02:write/edit/apply_patch 输出必须落入 ArtifactDir 或 HostPaths
- INV-IO-07:HostPaths 中的路径引擎只验证边界,不 MkdirAll、不 Chmod、不 GC
相关文档
- 禁止路径 →
cell-spec-deny-paths.md - 文件 I/O 模型 →
file-io.md(wesgine AGENTS.md INV-IO) - 治理管线 →
governance-pipeline.md