问题
当前任务产物先持久化到 task-scoped 文件目录,随后由 ArtifactResourceService 扫描任务、读取文件、计算哈希并复制到 learner-scoped Artifact 存储;两套目录还分别对应公开读取入口。这形成了“旧生成存储 → 投影桥 → 新资源存储”的双写和双读结构。
实施要求
- 定义唯一
ArtifactStoragePort 与唯一 Artifact 数据库记录,作为产物内容和元数据的事实来源。
- Agent/provider 构建期间只允许使用不可公开访问的临时 scratch directory。
- 成功生成后一次性、原子地发布到唯一 Artifact 存储,并在数据库中创建 Artifact 记录。
- AgentTask snapshot/event 只引用
artifact_id,不得保存第二套可直接读取的持久文件路径。
- 删除
GeneratedArtifactSource、任务扫描投影、active/archived task 回扫及两份文件之间的复制同步。
- 删除
/api/agent-tasks/{task_id}/artifacts/{kind} 直读入口,只保留 Workspace-scoped Artifact API。
- 失败或取消任务必须清理 scratch 目录,不产生半发布 Artifact。
验收条件
问题
当前任务产物先持久化到 task-scoped 文件目录,随后由 ArtifactResourceService 扫描任务、读取文件、计算哈希并复制到 learner-scoped Artifact 存储;两套目录还分别对应公开读取入口。这形成了“旧生成存储 → 投影桥 → 新资源存储”的双写和双读结构。
实施要求
ArtifactStoragePort与唯一 Artifact 数据库记录,作为产物内容和元数据的事实来源。artifact_id,不得保存第二套可直接读取的持久文件路径。GeneratedArtifactSource、任务扫描投影、active/archived task 回扫及两份文件之间的复制同步。/api/agent-tasks/{task_id}/artifacts/{kind}直读入口,只保留 Workspace-scoped Artifact API。验收条件
artifact_id。