File I/O 三域模型
wesgine 文件系统的三个域:ArtifactDir、ScratchDir、HostPaths。
三域概览
| 域 | 用途 | 生命周期 | 出现在系统提示词 |
|---|---|---|---|
| ArtifactDir | 持久产出 | 跟随 Cell | ❌ |
| ScratchDir | 临时计算 | Run 结束后 GC | ❌ |
| HostPaths | 宿主文件系统 | 应用层管理 | ✓(PrimaryRoot) |
ArtifactDir(INV-IO-01、INV-IO-04)
引擎从 (CellDataDir, Actor, AgentID) 推算,不从外部传入。
{CellDataDir}/workspace/{actor}/
- 物理在 Cell 目录下 → 满足 AX-1 隔离 + Export 可移植
- 不出现在系统提示词的"项目"列表中
ScratchDir(INV-IO-06)
{CellDataDir}/.scratch/{runID}/
Run 结束后引擎 GC(os.RemoveAll)。
HostPaths(INV-IO-07)
宿主文件系统中的路径(如 VS Code 项目根)。
引擎只验证边界,不做:
MkdirAllChmod- GC
- Export
PrimaryRoot(INV-IO-09)
Agent 认知的"主工作上下文",出现在系统提示词标为 active project。
声明
CellSpec.AgentDefaults.Workspace.PrimaryRoot
Fallback 链
显式声明 > AllowPaths[0] > ArtifactDir
约束
必须在 AllowPaths ∪ {ArtifactDir} 内。
写入边界(INV-IO-02)
write / edit / apply_patch 输出必须落入:
ArtifactDir ∪ HostPaths
禁止:
/tmp- ScratchDir
- 任何 Cell 外路径
exec CWD 优先级(INV-IO-03)
显式 cwd 参数 > PrimaryRoot > ScratchDir > ArtifactDir
编程场景下 PrimaryRoot = VS Code 项目根。
Workspace Handle(INV-IO-05)
cell.Workspace()
与 cell.Memory() 对等:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /workspace/files | 文件列表 |
| GET | /workspace/file | 下载文件 |
| POST | /workspace/upload | 上传文件 |
| DELETE | /workspace/file | 删除文件 |
| GET | /workspace/stats | 使用统计 |
| POST | /workspace/gc | 触发 GC |
| DELETE | /workspace/delete-by-prefix | 按前缀批量删除 |
所有端点接受 ?actor= 参数。
Export 行为(INV-IO-08)
Cell Export 默认包含 workspace/:
ExportOpts{SkipWorkspace: true} // 可排除
.scratch/ 永不包含在 Export 中。
相关文档
- Cell 生命周期 →
cell-lifecycle.md - CellSpec 总览 →
cellspec-overview.md - 数据韧性 →
data-resilience.md