返回列表
🪞 Uota学 · 💬 讨论题

长流程 Agent 不是更长 Prompt,而是“技能手册 + 可执行环境 + 自动压缩”

长时间运行的智能体要像“员工”一样可交付:把流程固化成 skills、把动作落在 shell、把记忆交给 compaction,而不是继续堆一坨脆弱的提示词意大利面。

2026-02-11 原文链接 ↗
阅读简报
双语对照
完整翻译
原文
讨论归档

核心观点

  • Skill 描述 = 路由边界,而不是宣传语 你写的 description 本质上是模型的“调用条件/拒绝条件/成功标准”。写清 Use when / Don’t use when,能显著减少误触发和乱触发(Glean 的例子里甚至能把触发率从 -20% 拉回去)。
  • 模板与 worked examples 应该进 skill,而不是塞进 system prompt 这样“默认不花 token,触发时才加载”,同时把输出质量和结构稳定下来——尤其适合报告、分诊摘要、分析写作这种知识工作。
  • 长流程的第一性不是“更聪明”,而是“连续性设计” 复用同一个容器(依赖/缓存/中间产物都在)、通过 previous_response_id 续跑、把 compaction 当默认原语——才能把“多小时工作流”从碰运气变成工程。
  • 确定性与安全性要敢于“显式契约化” 生产流程里,很多时候你要的不是模型自由发挥,而是稳定执行:直接告诉它“Use the X skill”。同时,skills + 开放网络是高风险组合:严格 allowlist、默认不信任工具输出、domain_secrets 隔离凭据,避免数据外泄路径。
  • 把 /mnt/data 当作“产物交接边界” 工具写盘、模型基于盘上文件推理、开发者从盘上取回 artifacts——这是一种能让链路可审计、可复现、可接管的工程化分界。

跟我们的关联

  • OpenClaw 的 skill 体系被这篇文章“官方背书”了:我们现在做的“技能化”(Use/Don’t use + 模板 + 示例)不是洁癖,是提升路由正确率与产出一致性的硬手段;reading-pipeline / site-deploy / swarm-commander 这些都值得按文中 checklist 再过一遍。
  • 把 Neta 内部高杠杆流程做成“可复用作业手册”:海外增长/品牌宣发/运营这类重复但要求一致的工作(选题→素材→发布→复盘),适合拆成 skill + artifacts,降低对“某个人记得怎么做”的依赖。
  • 安全边界要先立起来再扩张能力:如果后续我们做“能上网、能跑脚本、能调内部 API”的强 Agent,网络策略(组织级 allowlist + 请求级最小子集)和 secrets 注入必须先工程化,否则迟早踩数据外泄的雷。
  • 长流程最怕“中途断片/重启”:我们在多步自动化(抓取→翻译→简报→发布→推送)里,应该把“可续跑”和“自动压缩/摘要节点”当默认设计,而不是出了问题再补丁式缝。

讨论引子

  • 我们现在有哪些关键流程,应该从“Prompt 驱动”升级成“Skill 驱动”?(标准:一旦失败代价高 / 需要稳定格式 / 需要可续跑)
  • 对于生产链路,你更希望模型“自己决定用不用 skill”,还是“每一步都显式指定 skill”?我们在哪些环节必须选后者?
  • 当我们把 Agent 能力扩到“联网 + 内部工具 + 自动化执行”时,最小可用的安全栅栏应该是什么(allowlist、domain_secrets、人工确认点、日志审计)?

Shell + Skills + 压缩(Compaction):让长时间运行的智能体真正干活的技巧

来源:https://developers.openai.com/blog/skills-shell-tips 作者:Charlie Guo

用 Skills、托管 Shell 与 Responses API 的服务端压缩来构建的实用模式。

作者:Charlie Guo

我们正在从单轮对话助手转向能长时间运行的智能体,让它们承担真正的知识工作:读取大型数据集、更新文件、编写应用。

基于开发者反馈,以及我们构建 Codex 和内部智能体的经验,我们正在发布一组新的智能体原语,让“长视野工作”变得更可行:

  • Skills(与 Agent Skills 开放标准对齐):可复用、可版本化的指令包,你可以把它们挂载进容器,使智能体更可靠地执行任务。

  • 升级后的 shell 工具:由 OpenAI 托管、具备受控互联网访问的容器环境,智能体可在其中安装依赖、运行脚本、写出产物(例如报告与工件)。

  • 服务端压缩(Server-side compaction):一种轻松方式,可自动压缩冗长的智能体运行过程,让你永远不会撞上上下文限制。

文档与 API 参考分别覆盖了上面的每一项内容。本文聚焦于一些不那么显而易见、但迄今最有效的技巧与模式——这些经验既来自我们在 OpenAI 的实践,也来自早期 skills 客户 Glean 在生产环境中的落地。

一个简要的心智模型

Skills:“按需加载的流程(Procedures)”

Skill 是一组文件的打包,其中包含一个带 frontmatter 与说明的 SKILL.md 清单。可以把它理解为一个有版本的作业手册:当需要做真正的工作时,模型可以查阅它。

当 skills 可用时,平台会向模型暴露每个 skill 的名称、描述与路径。模型据此决定是否调用某个 skill;一旦调用,就会读取 SKILL.md 以获得完整工作流。

Shell 工具:智能体的“执行(Execution)”

Shell 工具让模型在真实的终端环境中工作,形式有两种:

  • 由 OpenAI 管理的托管容器。

  • 你自行执行的本地 shell 运行时(工具语义相同,但机器由你控制)。

托管 shell 通过 Responses API 运行,这意味着你的请求包含有状态的工作、工具调用、多轮续写与产物(artifacts)。

压缩(Compaction):让长流程持续推进

随着工作流变长,它们会撞上上下文窗口限制。服务端压缩通过管理上下文窗口、自动压缩对话历史,来保持长流程持续推进。

Responses API 中的压缩为你提供两种处理方式:

  • 服务端压缩(新):当上下文超过阈值时,压缩会在流式过程中自动运行,无需单独发起压缩调用。

  • 独立的 compact 端点:当你希望明确控制压缩发生的时机时,使用 /responses/compact。

为什么把它们放在一起更好

  • Skills 通过把稳定的流程与示例移入可复用的包,减少“提示词意大利面”。

  • Shell 提供完整执行环境,让你能安装代码、运行脚本、写出产物。

  • 压缩在长流程中保持连贯性,让同一个工作流无需手动“上下文外科手术”也能继续执行。

  • 组合起来,你获得可重复的工作流与真实执行能力,而不必把 system prompt 变成一份脆弱的巨型文档。

小技巧与窍门

1) 把 skill 描述写成路由逻辑(不是营销文案)

你的 skill 描述本质上就是模型的决策边界。它应该回答:

  • 我什么时候应该用它?

  • 我什么时候不应该用它?

  • 输出与成功标准是什么?

一个实用模式是在描述中直接加入一小段“Use when vs. don’t use when”,并保持具体(输入、涉及的工具、期望产物)。

2) 加入反例与边界情况,减少误触发

一个出人意料的失败模式是:skills 一旦可用,初期反而可能降低正确触发率。我们见过有效的修复方式是加入反例与边界情况覆盖。

在实践里,这意味着写出几条明确的“不要在……情况下调用这个 skill……”(以及改做什么)。这能让模型更干净地路由,尤其当你有多个 skill 乍看相似时。

Glean 直接看到了这种现象:在针对性评测中,基于 skill 的路由最初让触发率下降了约 20%,随后他们在描述里补上反例与边界情况覆盖后,又恢复了触发率。

3) 把模板与示例放进 skill 里(不用时基本“免费”)

如果你一直把模板硬塞进 system prompt,那就停下来。

把模板与完整示例(worked examples)放在 skill 里有两个优势:

  • 仅在需要时可用(即 skill 被调用时)。

  • 不会为无关查询增加 token 负担。

这对知识工作输出尤其有效,例如:

  • 结构化报告。

  • 升级处理的分诊摘要(escalation triage summaries)。

  • 客户/账户计划(account plans)。

  • 数据分析撰写。

Glean 报告称,这种模式带来了他们在生产环境中一些最大的质量与延迟收益,因为这些示例只在 skill 触发时才会被加载。

4) 及早为长流程设计:容器复用 + 压缩

长视野智能体很少能靠“一次性提示词”成功。应从一开始就为连续性做规划:

  • 当你希望依赖稳定、文件缓存与中间产物可复用时,在步骤间复用同一个容器。

  • 传入 previous_response_id,让模型能在同一线程中继续工作。

  • 把压缩当作默认的长流程原语,而不是紧急兜底手段。

这种组合会减少重启行为,并在对话线程增长时保持多步骤任务的连贯性。

5) 需要确定性时,明确告诉模型使用该 skill

默认行为是由模型自行决定何时使用 skill。这通常正是你想要的。

但当你运行的是一个有清晰契约的生产工作流(你宁愿确定而不是“聪明”),直接说:

“Use the skill name skill.”

这是你能用上的最简单可靠性杠杆:把模糊路由变成显式契约。

6) 把 skills + 网络当作高风险组合(按“可控范围”来设计)

这是那种现在很容易略过、但以后很难补救的安全提示。

把 skills 与开放网络访问结合,会形成高风险的数据外泄路径。如果你要用网络,请保持网络 allowlist 严格、默认将工具输出视为不可信,并避免在面向消费者的流程里把开放互联网与强力流程组合在一起——尤其当用户期望强确认控制时。

一个强默认姿态是:

  • Skills:允许

  • Shell:允许

  • 网络:仅在每次请求时、为范围非常窄的任务启用,并使用最小 allowlist

7) 把 /mnt/data 当作产物交接边界

对于托管 shell 工作流,把 /mnt/data 视为写出你要检索、审阅或传递到后续步骤的输出的标准位置。比如报告、清洗后的数据集、完成的表格等。

一个很好的心智模型是:工具写入磁盘,模型在磁盘上推理,开发者从磁盘取回。

8) 把 allowlist 理解为双层系统(组织级 + 请求级)

网络访问在两处受控:

  • 组织级 allowlist(由管理员配置),定义最大允许的目标集合。

  • 请求级 network_policy,必须是组织 allowlist 的子集。

两点对实际运维很关键:

  • 让组织 allowlist 小而稳定(“你信任的已批准目的地”集合)。

  • 让请求 allowlist 更小(“这个单次任务确实需要的目的地”集合)。

如果请求包含组织 allowlist 之外的域名,将会报错。

9) 用 domain_secrets 做鉴权调用(避免凭据泄漏)

如果某个允许的域名需要鉴权头,使用 domain_secrets,这样模型永远看不到原始凭据。

运行时模型看到的是占位符(例如 $API_KEY),而侧车(sidecar)只会对已批准目的地注入真实值。只要你的智能体需要在容器内调用受保护的 API,这都是一个很强的默认选择。

10) 云端与本地使用同一套 API

你可以同时使用这两类原语,而无需承诺把一切都托管起来:

  • Skills 同时适用于托管 shell 与本地 shell 模式。

  • Shell 具备本地执行模式:你自行执行 shell_call,并把 shell_call_output 回传给模型。

  • 如果你在用 Agents SDK,也可以接入你自己的 shell 执行器。

一个实用的开发循环是:

  • 先从本地开始(迭代快、能访问内部工具、易于调试)。

  • 当你需要可重复性、隔离性与部署一致性时,再迁移到托管容器。

  • 两种模式下保持 skills 不变(即使执行环境迁移,工作流仍保持稳定)。

三种构建模式

你当然可以自由试验这些新的智能体原语。下面给出三个例子,展示如何把它们组合起来构建实用应用。

模式 A:安装 - 拉取 - 写出产物

这是受益于托管 shell 的最简单方式:智能体安装依赖、拉取外部数据,并产出一个具体可交付物。

例如:

  • 安装几个库。

  • 抓取网页或调用 API。

  • 把报告写到 /mnt/data/report.md。

这种模式是“真实工作”智能体的基础,因为它建立了清晰的审阅边界:你的应用可以把产物展示给用户、记录日志、做 diff,或把它喂给后续步骤。

模式 B:Skills + Shell,用于可重复的工作流

当你做出一两个成功的 shell 工作流后,你会遇到下一个问题:确实能跑,但当提示词漂移时可靠性会下降。

这就是 skills 的用武之地。下面是一个更耐用的结构:

  • 用 skill 编码工作流(步骤、护栏、模板)。

  • 把 skill 挂载进你的 shell 环境。

  • 让智能体遵循 skill,以确定性的方式产生产物。

这对以下工作流尤其有效:

  • 电子表格分析或编辑。

  • 数据集清洗 + 摘要生成。

  • 面向重复业务流程的标准化报告生成。

模式 C(高级):把 skills 作为企业工作流的载体

我们观察到的一个早期模式是:在“单工具调用”和“多工具编排”之间的缝隙里,准确性会下降。Skills 可以通过更“程序化”的工具推理来弥合这一差距,同时不把 system prompt 膨胀成巨无霸。

一个来自 Glean 的具体例子:

  • 一个面向 Salesforce 的 skill 把评测准确率从 73% 提升到 85%,并将首 token 时间(time-to-first-token)降低了 18.1%。

  • 实用战术包括精心路由、反例,以及把模板/示例嵌入到 skill 内。

  • Glean 也使用 skills 来编码企业工作流中的重复任务,包括账户规划、升级分诊,以及与品牌一致的内容生成。

这就是事情开始变强的形状:Skills 成为“活的”SOP(标准作业流程)——随着组织演进而更新,并由智能体一致执行。

一次构建,随处运行

当长时间运行的智能体既能遵循流程、又能在电脑上真正干活时,它们会变得格外有用。Skills、托管 shell 与压缩提供了这一基础。回顾一下:

  • 用 skills 来编码“怎么做”(流程、模板、护栏)。

  • 用 shell 来执行“做什么”(安装、运行、写出产物)。

  • 用压缩让长流程保持连贯(无需手动管理上下文)。

  • 快速迭代时先从本地开始。

  • 需要可重复、隔离的执行时迁移到托管容器。

  • 用组织级与请求级 allowlist 锁紧网络访问,并对鉴权调用使用 domain secrets。

从你的应用里开始上手。参阅 skills 文档shell 文档compaction 文档 了解如何使用它们。

相关笔记

We just announced new primitives for building agents.

Here are 10 tips on running multi-hour workflows reliably 👇 https://developers.openai.com/blog/skills-shell-tips

用 Skills、托管 Shell 与 Responses API 的服务端压缩来构建的实用模式。

作者:Charlie Guo

我们正在从单轮对话助手转向能长时间运行的智能体,让它们承担真正的知识工作:读取大型数据集、更新文件、编写应用。

基于开发者反馈,以及我们构建 Codex 和内部智能体的经验,我们正在发布一组新的智能体原语,让“长视野工作”变得更可行:

  • Skills(与 Agent Skills 开放标准对齐):可复用、可版本化的指令包,你可以把它们挂载进容器,使智能体更可靠地执行任务。
  • 升级后的 shell 工具:由 OpenAI 托管、具备受控互联网访问的容器环境,智能体可在其中安装依赖、运行脚本、写出产物(例如报告与工件)。

文档与 API 参考分别覆盖了上面的每一项内容。本文聚焦于一些不那么显而易见、但迄今最有效的技巧与模式——这些经验既来自我们在 OpenAI 的实践,也来自早期 skills 客户 Glean 在生产环境中的落地。

一个简要的心智模型

OpenAI Developers (@OpenAIDevs): We just announced new primitives for building agents. Here are 10 tips on runnin

  • Source: https://x.com/openaidevs/status/2021725246244671606?s=46
  • Mirror: https://x.com/openaidevs/status/2021725246244671606?s=46
  • Published: 2026-02-11T23:17:15+00:00
  • Saved: 2026-02-12

Content

We just announced new primitives for building agents.

Here are 10 tips on running multi-hour workflows reliably 👇 https://developers.openai.com/blog/skills-shell-tips

📋 讨论归档

讨论进行中…