Gumloop v8.2.0 引入 Artifacts 系统,使 Agent 在对话中生成的文件自动导出到云存储、版本化、生成预览并展示为富媒体卡片。然而,这些文件的生命周期与对话绑定——对话结束,文件虽然保留在 Artifacts 中可查看,但 Agent 在新对话中无法直接访问它们。用户需要手动下载旧对话的文件再上传到新对话,打断了工作流的连续性。
v8.5.0 "Pemberton" 的 Persistent Agent Workspace 解决了这一问题。它引入了 /home/user/.workspace/ 作为 Agent 沙箱中的特殊目录,该目录下的文件会跨越对话边界持久保留。Agent 在任一会话中将文件写入该目录后,下次对话中同一 Agent 可直接读取和使用这些文件。
┌──────────────────────────────────────────────────────────────────┐ │ Agent 沙箱文件系统模型 │ │ │ │ /home/user/ │ │ ├── project.py ← 对话作用域 (Conversation-scoped) │ │ ├── output.csv ← 对话结束即销毁 │ │ ├── temp/ ← 临时目录,对话结束销毁 │ │ │ │ │ └── .workspace/ ← ★ 工作区作用域 (Workspace-scoped) │ │ ├── config.json ← 跨对话持久保留 │ │ ├── reports/ ← Agent 可在新对话中直接读取 │ │ │ └── Q1_analysis.xlsx │ │ └── scripts/ ← 项目成员共享(如果是项目 Agent) │ │ └── data_fetcher.py │ │ │ │ 默认规则: │ │ • /home/user/ 下的任意文件 → conversation-scoped (默认) │ │ • /home/user/.workspace/ 下的任意文件 → workspace-scoped (持久) │ └──────────────────────────────────────────────────────────────────┘
核心规则极为简单:Agent 只需将文件写入 .workspace/ 目录,即可获得跨对话持久性。除此之外的沙箱文件系统照旧运行,现有行为不受影响。
/home/user/.workspace/ 是沙箱内的一个特殊挂载点。从 Agent 的视角,它与普通目录无异——Agent 使用标准的文件读写操作即可。从平台视角,该目录由持久化存储层支撑,文件在对话结束后不会被回收。
| 属性 | Conversation-scoped | Workspace-scoped |
|---|---|---|
| 路径 | /home/user/** (except .workspace/) | /home/user/.workspace/** |
| 生命周期 | 对话结束即回收 | 跨对话持久保留 |
| 在 Artifacts 中 | 是(自动导出) | 是(相同机制) |
| 版本化 | 是(同对话内同名文件) | 是(跨对话同名文件) |
| 预览 | 支持 | 支持 |
| 共享 | 支持 | 支持 |
┌──────────────────────────────────────────────────────────────────┐ │ Workspace 共享模型 │ │ │ │ ┌─── Project "Growth" ────────────────────────────────────┐ │ │ │ │ │ │ │ Agent "Data Analyst" │ │ │ │ ┌─────────────────────────────────────────────┐ │ │ │ │ │ /home/user/.workspace/ │ │ │ │ │ │ ├── customer_segments.csv ← 共享 │ │ │ │ │ │ └── churn_model.py ← 共享 │ │ │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ 项目成员 A ──对话──→ Agent 可读写 workspace ✅ │ │ │ │ 项目成员 B ──对话──→ Agent 可读写 workspace ✅ │ │ │ │ 非成员 C ──对话──→ Agent 看到隔离的私有空间 🔒 │ │ │ └─────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────┘
共享模型的判断维度是对话发起者是否为项目成员:
关键行为:
Workspace 文件完全复用 Artifacts 基础设施,而非独立构建一套新系统:
┌──────────────────┐
│ Artifacts 系统 │
│ (v8.2.0) │
│ │
┌──────────────┤ • 云存储 (GCS) ├──────────────┐
│ │ • 版本化管理 │ │
│ │ • 预览缩略图生成 │ │
│ │ • 富媒体卡片展示 │ │
│ │ • 共享权限控制 │ │
│ └──────────────────┘ │
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 对话 Artifacts│ │ Workspace Files │ │ Agent Artifact │
│ (conversation │ │ (cross-conv │ │ Gallery │
│ -scoped) │ │ persistent) │ │ (v8.3.0 汇总视图)│
└──────────────┘ └──────────────────┘ └──────────────────┘
Workspace 文件与对话 Artifact 的区别仅在于生命周期作用域:
| ID | 需求 | 优先级 | 来源 |
|---|---|---|---|
| WS-01 | Agent 可通过标准文件操作将文件写入 /home/user/.workspace/ | P0 | 文档已验证 |
| WS-02 | Agent 可从 /home/user/.workspace/ 读取之前会话中保存的文件 | P0 | 推断 |
| WS-03 | Agent 可通过标准文件操作列出 workspace 目录内容 | P1 | 推断 |
| WS-04 | Agent 可删除 workspace 中的文件 | P1 | 推断 |
| WS-05 | Workspace 文件在沙箱中表现为普通文件,Agent 的现有工具无需修改即可操作 | P0 | 推断 |
| ID | 需求 | 优先级 | 来源 |
|---|---|---|---|
| CP-01 | 写入 /home/user/.workspace/ 的文件在对话结束后保留 | P0 | 文档已验证 |
| CP-02 | 新对话中 Agent 可访问同一 workspace 的所有历史文件 | P0 | 推断 |
| CP-03 | 非 workspace 路径的文件行为不变——对话结束后回收 | P0 | 推断 |
| CP-04 | 同一对话内对 workspace 文件的修改在对话期间立即可见 | P1 | 推断 |
| CP-05 | 跨对话同名文件触发自动版本化(与 Artifacts 版本化一致) | P1 | 文档已验证 |
| ID | 需求 | 优先级 | 来源 |
|---|---|---|---|
| SH-01 | 项目成员共享同一 workspace,任何成员的 Agent 写入的文件对所有成员的 Agent 可见 | P0 | 文档已验证 |
| SH-02 | 非项目成员获得隔离的私有 workspace,无法访问项目共享 workspace | P0 | 文档已验证 |
| SH-03 | 共享 workspace 的权限继承项目的成员结构 | P1 | 推断 |
| SH-04 | Workspace 文件复用 Artifacts 的三级共享控制(Restricted / Organization / Anyone) | P1 | 文档已验证 |
| ID | 需求 | 优先级 | 来源 |
|---|---|---|---|
| VM-01 | 跨对话保存同名文件时自动创建新版本,而非覆盖 | P0 | 文档已验证 |
| VM-02 | 用户可通过版本历史面板查看和回退到任意历史版本 | P1 | 推断 |
| VM-03 | Workspace 文件的版本号跨对话延续 | P2 | 推断 |
用户画像: 张伟,35 岁,电商公司数据分析师。每周需要分析销售数据、更新模型、生成报告。这个过程通常需要 3-4 轮对话分别完成数据清洗、建模、可视化和报告撰写。
当前痛点: 每轮对话产出的 Python 脚本、中间数据集保存在对话 Artifacts 中。开启新对话时,Agent 无法直接读取上一轮的脚本和数据——张伟需要手动下载后再上传,或者在新对话中让 Agent 重写代码。这不仅低效,还导致代码版本不一致。
作为数据分析师,我希望在第一轮对话中让 Agent 写好的数据清洗脚本保存到 workspace,第二轮对话时 Agent 直接读取这个脚本并在此基础上继续建模,而不是每次都从头开始。团队的其他分析师也应该能直接复用这些脚本。
验收标准:
用户画像: 陈颖,30 岁,SaaS 产品团队的 PM。团队使用 Gumloop 的"Product Assistant" Agent,三位成员分别负责竞品研究、用户反馈分析、PRD 起草。
当前痛点: 每个人与 Agent 的对话产出(竞品分析 PDF、用户反馈 CSV、PRD 草稿 MD)只存在于各自的对话记录中。团队成员之间看不到彼此让 Agent 产出的文件,需要手动分享链接。
作为产品团队的 PM,我希望团队共享一个 workspace,任何成员让 Agent 产出的文件都自动出现在共享空间中。我开启新对话时,Agent 能看到竞品研究同事已经让 Agent 产出的分析报告,并据此起草 PRD。
验收标准:
| 竞品 | 功能/行为 | 优势 | 劣势 | 洞察/机会 |
|---|---|---|---|---|
| ChatGPT Code Interpreter | 单次对话内文件持久(会话期间保留),跨对话不保留 | 零配置,开箱即用 | 无跨对话持久化;无团队共享;文件无法在对话间传递 | 简单模型适合轻量用户,但重度用户需要跨对话积累 |
| Claude Code | 工作目录文件天然持久(文件在本地文件系统),支持 Git 版本管理 | 利用本地文件系统和 Git 实现真正的跨会话持久化 | 限于本地开发场景;无内置云存储和团队共享机制;CLI 而非 Web | IDE/CLI 场景下本地文件系统就是最好的 workspace——Web 平台需要不同的方案 |
| Cursor | 本地项目文件系统 + .cursorrules + AI Rules 跨会话上下文 | 与 IDE 深度整合,本地文件天然持久 | 非 Agent 沙箱模型;无云存储自动版本化;无团队共享 workspace 概念 | 文件持久性是 IDE 的天然优势——Gumloop 的 workspace 是在 Web 沙箱中复现这种「项目目录」体验 |
| Replit Agent | Repl 文件系统跨会话持久(基于 Repl 的生命周期) | 完整开发环境,天然文件持久 | 面向开发场景;无文件级别的版本化和共享控制 | 在 Web 平台做持久文件系统最成熟的产品之一 |
目前 workspace 固定在 /home/user/.workspace/。未来可能支持 Agent 指令或设置中自定义 workspace 路径,允许 Agent 维护多个独立的工作区(如 .workspace/production/ 和 .workspace/experiments/)。
为项目 Agent 预置 workspace 模板——新项目启动时 workspace 包含预定义的文件结构(如 scripts/, data/, reports/, config/),让 Agent 更快上手。类似于 GitHub 的 repository template 概念。
当前共享模型的粒度是「同一项目内的同一个 Agent」。未来可能支持项目级别的 workspace——不同 Agent 共享同一个 workspace,让专业 Agent 之间通过文件系统协作(Agent A 产出数据,Agent B 读取数据产出报告)。这与 Subagents(v9.0.0)的广播笔记通信形成互补:文件系统是异步、持久的通信通道,广播笔记是同步、临时的通信通道。
当 workspace 积累大量文件后,Agent 需要高效定位和管理。未来可能支持:
当前文档未提及存储配额。随着用户长期积累 workspace 文件,需要:
由 Claude spec-generate 系统生成 · 来源:Gumloop Agent Artifacts 帮助文档 — Workspace Files 章节