🎯 核心场景与目标
用例:合规调查场景。AI 需要审查多批次政策文件、异常记录、审计意见,最终撰写合规审查备忘录。
⚡ 三大核心挑战
- 证据会变化 — 后续文件可能更新或推翻之前假设。
- 对话会变长 — 审查员需要多轮追问、要求修改,上下文压力大。
- 最终产物必须可溯源 — 备忘录必须引用证据,明确区分“已证实发现”与“开放问题”。
💡 核心哲学:沙盒 + 清单 + 压缩 + 记忆 四大组件,将“AI 工作辅助工具”与“人类可审查的最终产物”彻底分离。
🧠 核心概念:记忆 (Memory) vs 压缩 (Compaction)
理解两者的区别是构建可靠智能体的基石:
| 特性 | 压缩 (Compaction) | 记忆 (Memory) |
|---|---|---|
| 核心目的 | 让当前这一轮长对话能继续进行 | 让未来的对话/运行复用本次工作流程经验 |
| 处理对象 | 主动对话历史、当前工作状态 | 模式、偏好、流程层面的经验教训 |
| 存储内容 | 不存储调查结论,仅保留下一步工作状态 | 不存储案件具体事实,仅存工作流经验(如“先查阅清单再读文件”) |
| 使用时机 | 审查中期,上下文将满时,或引入新批次证据前 | 在不同轮次的相似证据审查任务之间 |
| 技术实现 | 自动压缩 / 阈值压缩 / 强制检查点压缩 | SDK 自动生成记忆文件(如 memories/MEMORY.md) |
📌 一句话区分:压缩帮当前任务“活下去”,记忆帮未来任务“干得更漂亮”。
🧩 四大构建模块
① 沙盒 (Sandbox)
隔离的工作文件夹,AI 通过内置工具(Filesystem/Shell)读写执行,避免提示词塞满大段文本。
② 清单 (Manifest)
代码化的工作区蓝图。教程用 File/Dir 合成数据;生产用 LocalDir/GitRepo/S3Mount 引用真实数据源。
③ 压缩 (Compaction)
解决上下文窗口限制:长对话被智能总结摘要,同时保留最近完整轮次。支持自动/阈值/强制检查点。
④ 记忆 (Memory)
SDK 自动生成的记忆文件(如 MEMORY.md)。只记流程经验,不记案件事实,让下次工作流更高效。
📁 清单 (Manifest) 的实战指南
遵循 “教程用合成,生产用引用” 的演进路径,实现从原型到生产的平滑过渡。
# 教程/原型阶段:直接在代码中构造小文件
Manifest(entries={
"sample.csv": File(content="id,name\n1,Alice\n2,Bob"),
"outputs": Dir()
})
# 生产/大规模阶段:切换为本地目录或云挂载
Manifest(entries={
"real_data": LocalDir(path="/data/large_corpora/"),
"archive": S3Mount(bucket_name="my-bucket", prefix="2024/")
})
- 优点:轻量化、可移植、无依赖 ➜ 轻量引用、实时同步、团队共享。
- 核心原则:使用稳定的文档ID + 机器可读清单(如
manifest.csv),让备忘录能精确溯源。
⚙️ 压缩 (Compaction) 的实现方式
- 自动压缩 — 挂载
Compaction()能力,SDK 在上下文压力大时自动触发。 - 阈值压缩 — 设定明确的 token 阈值(如 8000),超过则触发,适合需要可预测行为的场景。
- 强制检查点压缩 — 在关键流程边界(如完成一个批次后)通过代码强制压缩,小规模演示中最清晰可靠。
# 强制检查点示例(使用 OpenAIResponsesCompactionSession)
await session.run_compaction({"force": True, "compaction_mode": "input"})
最佳实践:在有意义的工作流边界进行压缩,并确保压缩后仍然保留必要的引用状态(引文、待办等)。
📝 记忆 (Memory) 的正确用法:只存流程,不存结论
✅ 好的记忆(工作流经验)
- 先查阅 manifest.csv 再审查文件
- 在备忘录中保留不确定性,不要强行猜测
- 让被新证据推翻的旧假设依然可见
- 输出格式:包含执行摘要、引文表格、开放问题、下一步建议
❌ 坏的记忆(案件事实)
- “北风物流公司违反了付款政策”
- “财务运营部流程存在缺陷”
- 任何应该出现在 最终审查备忘录 中的具体结论
⚠️ 常见陷阱:不要把
Memory() 当成非审查的事实数据库。重要结论必须写入带引文的备忘录工件,记忆是帮助未来 AI 更好地工作,而不是第二份调查记录。
🪜 推荐工作流程:分步构建可靠智能体
- Step 1: 基础智能体 — 仅挂载
Filesystem()和Shell(),让 AI 能读文件、执行简单命令,输出初版备忘录。 - Step 2: 增加压缩 — 挂载
Compaction()能力,使 AI 可以处理跨多批次、长对话的完整审查。 - Step 3: 增加记忆 — 挂载
Memory()并明确指示只存储流程经验,让下次运行时行为更高效、更符合规范。 - Step 4: 完整运行 — 组合所有组件,AI 自动/强制压缩,输出最终审查备忘录(
outputs/compliance_review_memo.md),并且沙盒内生成记忆文件供后续复用。
最终产物:带有执行摘要、引文表格、开放问题与建议的结构化备忘录,可供合规人员直接审计。
🏆 关键最佳实践汇总
- 清单优先,避免大段粘贴 — 把文档、清单、辅助文件都放在
Manifest中,让 AI 通过文件系统访问,而非塞入提示词。 - 任务指令放文件 — 长篇任务说明(如
README.md)放进沙盒,Agent 的instructions只聚焦行为边界。 - 可审计 ID — 稳定的文档 ID + 机器可读清单,确保备忘录能精确反向追溯证据。
- 记忆只存流程经验 — 通过
MemoryGenerateConfig.extra_prompt指引模型区分流程与事实。 - 生成物独立存放 — 所有最终产物放在
outputs/目录,便于审查、归档和集成。 - 生产规模用挂载 — 教程用
File/Dir,生产环境面对 TB 级数据或团队协作时,切换至LocalDir/GitRepo/S3Mount等存储挂载。
🚫 需要避免的陷阱
⛔ 不要将记忆当成隐形的调查数据库 — 每一个具体事实结论都必须通过引用写入最终备忘录。记忆不能成为未经过审阅的“影子记录”。审查者唯一信任的是带引文的备忘录。
🧪 避免“无限提示词”的思维惯性 — 善用沙盒和清单,保持提示词简洁,把数据搬运和发现放在工作区内完成,降低 token 费用并提高可再现性。
🎯 总结:工程化思维,可靠AI工作流
OpenAI Agents SDK 提供的 沙盒、清单、压缩、记忆 四大组件,共同构成一套构建生产级 AI 智能体的方法论:
- 沙盒 保证环境隔离与可控。
- 清单 让数据输入与配置可重复、可审计。
- 压缩 让长对话无限延续,保留关键工作状态。
- 记忆 让跨任务经验累积,不断提高智能体执行同类工作的效率与规范性。
最终,人类审查的备忘录 是整个链条的权威输出,而压缩、记忆只是背后的支撑工具。这种架构使得 AI 辅助的知识工作变得 可靠、可扩展、可审计,有望广泛应用于合规、安全、财务、法务等专业领域。
📖 基于 OpenAI Cookbook 示例 《Building Reliable Agents with Memory and Compaction》 整理 · 内容忠实于原文设计思想