正文
长任务 Agent 最吸引人的地方,是它终于能记住项目、接着上一次的工作继续推进。但“能记住”也改变了风险的形状:问题不再只是某一次 prompt 泄露了什么,而是这个环境在下一个任务里还带着什么。
TechRadar 在 2026-06-12 报道,OpenAI 计划收购 Ona,重点是让 Agent 拥有安全、持久的环境,以便访问工具、系统和上下文,并在较长时间内继续推进任务。参考:TechRadar 报道。
这类变化对开发者很直接。Agent 现在可能在云端或本地环境里保存项目状态、记住仓库细节、继续执行计划、调用 MCP Server、复用缓存,并在你关闭电脑后继续工作。你需要先把隐私隔离规则写清楚,再把敏感项目交给长任务 Agent。
持久环境不是一个更大的聊天窗口
Agent 可能会把哪些东西留在身后
“环境”需要被拆成几个可见的对象。
| 留存对象 | 可能包含什么 | 你要检查什么 |
|---|---|---|
| 工作目录 | 源码、配置、测试数据、临时输出 | 是否包含客户数据、密钥、导出文件 |
| 执行日志 | 命令、错误、路径、API 响应片段 | 日志是否会长期保存或被下载 |
| 记忆 | 项目规则、仓库结论、用户偏好 | 能不能查看、删除、按仓库隔离 |
| 缓存 | 依赖、上下文摘要、模型缓存 | 是否跨任务、跨项目或跨用户复用 |
| 工具会话 | GitHub、Slack、Jira、数据库、云服务连接 | token scope、过期时间、审计记录 |
| MCP 状态 | Server 配置、session ID、授权记录 | 是否绑定用户、是否能被重放 |
如果你不知道这些对象保留多久、谁能访问、怎么删除,就不要把生产数据、客户数据或长期凭据放进 Agent 环境。
临时环境与持久环境,本来就该是两种承诺
GitHub 文档说明,Copilot cloud agent 会在 GitHub Actions 支撑的临时开发环境中工作,可以探索代码、修改文件、执行测试和 lint。文档也提到,cloud agent 可以在后台完成任务、携带 Copilot Chat 上下文、使用 Copilot Memory、连接 MCP Server,并受 59 分钟 session 限制。参考:GitHub Copilot cloud agent 文档。
你可以把 Agent 环境分成两类:
| 环境类型 | 适合放什么 | 不适合放什么 |
|---|---|---|
| 临时环境 | 单次 PR、可重建依赖、测试输出、短期日志 | 长期 token、客户数据、跨项目记忆 |
| 持久环境 | 项目规则、可审计任务状态、脱敏上下文、长期计划 | 明文密钥、生产数据库导出、个人隐私数据 |
临时环境的目标是任务完成后能清掉。持久环境的目标是跨任务继续工作。你不能把两者混成一个默认工作区。
记住得越多,先划边界就越重要
数据进入环境之前,应该先被分级
长任务 Agent 启动前,先给数据分级。不要等它读完仓库后再决定哪些东西敏感。
| 数据等级 | 例子 | 处理方式 |
|---|---|---|
| 可公开 | 开源代码、公开 README、公开 issue | 可以进入 Agent 上下文 |
| 项目内部 | 私有源码、内部接口文档、测试用例 | 只放进指定仓库环境 |
| 受限 | 客户样本、合同、财务、员工信息 | 默认不进 Agent 环境,先脱敏 |
| 机密 | API Key、OAuth token、私钥、生产数据库 dump | 禁止进入持久环境 |
如果 Agent 必须理解受限数据,先做脱敏样本。让它看结构、字段和边界,不要直接给真实用户记录。
长期任务不该拿着长期权限
长任务 Agent 需要调用工具时,不要把人类账号的长期 token 交给它。持久环境一旦保存了 token,风险会跨越单次任务。
你可以按下面方式给权限:
| 工具 | 更稳的做法 |
|---|---|
| GitHub | 单仓库、短期 token、只允许开分支和 PR |
| 数据库 | 只读副本、脱敏数据、禁止生产写入 |
| 云服务 | 临时凭据、单项目、单动作范围 |
| Slack / Teams | 限定频道、只读历史、禁止自动发敏感消息 |
| Jira / Linear | 只读 issue 或只允许更新指定项目 |
| MCP Server | 每个 Server 单独授权,禁止共享高权限 token |
凭据过期时间要短于任务周期。任务跑完后,自动撤销 token,比让 Agent 自己“记得不用”可靠。
真正难管理的,是那些看不见的记忆和缓存
如果看不到它记住了什么,就谈不上删除
Persistent agent 会保存文件,也可能保存记忆和缓存。2026 年 5 月的一项 persistent agent case study 记录了一个持续研究环境:96 个 active days、502 个 memory-related files、17 个 agent directories、57 个 skill files,并显示严格轨迹子集里 82.9% tokens 来自 cache reads。参考:Persistent AI Agents in Academic Research。
这个案例提醒开发者:长任务 Agent 的成本和风险可能从“每次调用”转向“长期环境”。你需要知道记忆里保存了什么。
你可以要求环境支持这些操作:
- 查看 Agent 记住的项目规则和结论。
- 删除某个仓库、客户或任务的记忆。
- 区分用户记忆、项目记忆和组织记忆。
- 查看缓存是否跨任务复用。
- 禁止把 secret、客户样本、日志片段写入长期记忆。
如果一个工具只说“它会记住你”,但不给查看和删除入口,不适合处理敏感代码库。
一段持久 session,可能把权限也一起留下
长任务 Agent 常常会通过 MCP Server 连接 GitHub、文件系统、数据库、浏览器或企业工具。MCP 官方安全建议列出了 confused deputy、token passthrough、SSRF、session hijacking、本地 MCP Server compromise、scope minimization 等风险。参考:MCP Security Best Practices。
其中最容易被忽略的是三类 MCP 状态:
| 风险 | 检查方式 |
|---|---|
| session ID 被重放 | session 绑定用户和 client,设置过期和轮换 |
| token 被透传 | token 必须签发给 MCP Server,不能拿上游 token 直接转发 |
| Server 越权访问 | 每个 Server 单独 scope,禁止默认访问全部工具 |
长任务 Agent 会放大这些风险。一次短会话里的错误可能很快结束;持久环境里的错误 session 可能在后续任务继续可用。
信息流要跟着任务走,而不是跟着环境无限留下
每个长任务都该有自己的数据边界
GAAP 论文提出一种 Agent 执行环境,用信息流控制跟踪私密数据在任务步骤之间、跨多个任务之间的访问和使用。论文强调,系统不能只信任模型或 prompt;它要按用户给出的权限规格,确定哪些私密数据可以披露给模型、工具或外部方。参考:An AI Agent Execution Environment to Safeguard User Data。
开发团队可以先用更简单的版本落地:让每个长任务都带上数据流记录。
agent_data_boundary:
task: "整理企业客户导入失败问题"
allowed_data:
- "脱敏后的失败样本"
- "导入模块源码"
- "测试环境日志"
blocked_data:
- "生产数据库 dump"
- "客户原始手机号和邮箱"
- "支付凭据"
allowed_tools:
- "read_repo"
- "run_unit_tests"
- "create_pull_request"
blocked_tools:
- "query_production_db"
- "send_slack_message"
- "write_cloud_config"
retention:
workspace_ttl_hours: 24
memory_write_allowed: false
logs_redact_secrets: true这份记录能让 reviewer、管理员和安全同事知道 Agent 被允许读什么、不能碰什么、任务结束后该清什么。
多 Agent 协作时,不该共享一整个世界
Confidential computing survey 指出,LLM-driven agents 会规划、调用工具、维护 persistent memory,并通过 MCP、A2A 等协议委托给其它 Agent;这会带来 prompt injection、context exfiltration、credential theft 和 inter-agent message poisoning 等风险。参考:When Agents Handle Secrets。
如果你让多个 Agent 协作,不能让它们共享同一份全量上下文。
| 协作场景 | 隔离方式 |
|---|---|
| 规划 Agent 和执行 Agent | 规划只给需求和目录,执行只给目标文件 |
| 代码 Agent 和安全 Agent | 安全 Agent 读 diff 和日志,不拿业务全量数据 |
| 文档 Agent 和实现 Agent | 文档 Agent 读公开接口和脱敏示例 |
| 外部供应商 Agent 和内部 Agent | 外部 Agent 只拿最小任务包 |
上游 Agent 的权限不应该自动传给下游 Agent。每次委托都要重新确认数据范围、工具范围和日志保留。
任务完成并不等于环境已经收尾
PR 合并以后,还要清掉什么
长任务完成后,别只看 PR 有没有合并。你还要收尾环境。
- 撤销临时 token 和 OAuth grant。
- 删除临时工作目录、构建产物和下载文件。
- 清理包含客户数据的日志和测试输出。
- 检查 Agent memory 是否写入了敏感摘要。
- 关闭不再使用的 MCP Server session。
- 保存必要审计记录,不保存明文 secret。
如果任务失败,也要执行这套清理。失败任务更容易留下调试日志、半成品文件和扩大权限后的工具连接。
有些东西本来就不该进入持久环境
有些任务不适合交给 persistent environment。
| 任务 | 更稳的处理 |
|---|---|
| 生产事故含客户数据 | 人工先脱敏,再交给临时环境分析 |
| 权限系统重构 | Agent 可读设计文档和测试,不拿真实凭据 |
| 数据库迁移 | 用测试库和样本数据,不连生产库 |
| 安全漏洞复现 | 隔离沙箱,禁止联网和长期记忆 |
| 供应商合同、财务数据 | 不放进 coding agent 环境 |
| 跨客户定制项目 | 每个客户单独 workspace 和记忆边界 |
持久环境适合保存项目规则、任务状态和脱敏上下文。它不适合当作“什么都能放进去的开发电脑”。
从几条可执行的默认规则开始
已经在试长任务 Agent 的团队,往往从这些默认规则开始。
- 给每个 Agent 环境设置数据等级:公开、内部、受限、机密。
- 给 workspace 设置 TTL:任务完成或超时后清理。
- 禁止把 secret、生产 dump、客户原始数据写入 memory。
- 给工具 token 设置短期、单任务、单 scope。
- 给 MCP Server 设置 per-server 授权和 session 过期。
- 要求每个长任务记录 allowed data、blocked data、allowed tools、retention。
- 每周审计一次 memory、缓存、日志和活跃 session。
这些规则的作用,是让长任务 Agent 从“能继续干活”变成“能按边界继续干活”。
结语:持久环境要按数据边界验收
Persistent environment 让 Agent 能处理更长、更复杂的任务。它也让隐私风险跨越单次 prompt、单次 PR 和单次 session。
长任务 Agent 应被当作一个会保存状态的开发环境管理:它读过什么、记住什么、缓存什么、拿过哪些 token、连接过哪些工具、任务结束后清理了什么。只有这些边界清楚,它才适合进入真实团队工作流。