--- title: "OpenAI Skills/Shell/Compaction:终结提示词工程的三位一体Agent原语" created: 2026-05-28 updated: 2026-05-28 type: raw tags: [openai, skills, shell, compaction, agent-standards, glean, enterprise-agent, harness, prompt-spaghetti] sources: - https://mp.weixin.qq.com/s/S1juTn1FAd2MbifDrAuO4Q review_value: 8 review_confidence: 8 sha256: dc3e94b524dae0757d47feee639a2385f1eb6033b2e5bdf855edfaace0ce9665 --- ## 背景与问题 如果说 2024 年是"提示词工程"的狂欢,那么 2026 年则是"智能体工程"的元年。 我们正在从单轮对话助手(single-turn assistants)转向能够处理真实知识工作的**长期运行智能体(long-running agents)**:它们可以阅读大型数据集、更新文件并编写应用程序。 基于开发者的反馈以及 OpenAI 在构建 Codex 和内部智能体时的经验,发布了一套全新的智能体原语。 ## 三大原语定义 ### Skills(技能) 技能是文件包加上一个包含前置信息和指令的 `SKILL.md` 清单文件。可以把它想象成一个**版本化的操作手册**,模型在需要执行实际工作时可以参考。 当技能可用时,平台会向模型展示每个技能的名称、描述和路径。模型利用这些元数据决定是否调用该技能。如果调用,它会读取 `SKILL.md` 以获取完整的操作流程。 ### Shell 工具 Shell 工具允许模型在真实的终端环境中工作,支持: - 由 OpenAI 管理的**托管容器** - 你自己执行的**本地 Shell 运行时**(工具语义相同,但机器受你控制) 托管的 Shell 通过 Responses API 运行,意味着请求自带状态、工具调用、多轮持续对话和生成的 artifact 制品。 ### 压缩(Compaction) 服务端压缩通过自动管理上下文窗口和压缩对话历史,确保长周期运行不中断。Responses API 提供了两种处理方式: - **服务端压缩(新)**:上下文超过阈值时在流式输出中自动运行,无需单独调用 - **独立压缩端点**:`/responses/compact` 端点,显式控制压缩时机 ## 核心洞察 ### Prompt Spaghetti 问题 > Skills 通过将稳定的程序和示例移入可重用的包中,减少了**提示词的杂乱堆砌(Prompt spaghetti)**。 ### 为什么三者组合更强大? - **Skills**:减少提示词乱炖 - **Shell**:提供完整执行环境 - **压缩**:保持长周期运行连续性,同一个工作流可以持续执行,无需人工手动裁剪上下文 ## 十大非直观技巧 ### 1. 技能描述 = 决策边界,而非营销文案 技能描述应回答: - 我什么时候应该使用它? - 我什么时候**不应该**使用它? - 输出结果和成功标准是什么? 实用模式:在描述中直接加入简短的"**使用场景 vs. 禁用场景**"区块,保持具体。 ### 2. 负面示例 + 边缘情况覆盖减少误触发 令人惊讶的失败模式:提供技能初期反而可能降低正确触发率。 解决方案:显式写出"当……时不要调用此技能"的案例(以及此时该做什么),帮助模型更清晰进行路由。 **Glean 经验**:基于技能的路由最初导致触发率下降约 20%,加入负面示例和边缘情况后触发率得到恢复。 ### 3. 模板和示例放入技能内部(不使用时不占成本) 停止把模板塞进系统提示词里。在技能内部放置模板和实操案例的两个优势: 1. 仅在需要时(技能被调用时)才可用 2. 不在处理无关查询时增加 Token 消耗 **Glean 反馈**:这一模式在生产环境中带来了最大的质量和延迟改善,因为示例仅在技能触发时才被加载。 ### 4. 及早针对长周期运行设计 长周期智能体很少能通过"一劳永逸"的提示词获得成功: - 不同步骤间**复用同一个容器** - 传递 `previous_response_id`,使模型能在同一线程中继续工作 - 将压缩作为长周期运行的**默认配置**,而非应急方案 ### 5. 需要确定性时,明确命令模型使用该技能 直接命令:**"使用 技能。"** 这是最简单的可靠性杠杆,将模糊的路由逻辑转变为明确的执行契约。 ### 6. "技能 + 网络访问"是高风险组合 将技能与开放的网络访问结合会为数据外泄创造高风险路径。 推荐默认安全姿态:Skills 允许 + Shell 允许 + 网络仅通过最小化白名单启用。 ### 7. `/mnt/data` 作为 artifact 制品的交接边界 对于托管的 Shell 工作流,将 `/mnt/data` 视为写入输出的标准位置。 核心模型:工具写入磁盘,模型基于磁盘推理,开发者从磁盘检索。 ### 8. "双层白名单"网络系统 - **组织级白名单**(管理员配置):设定允许访问的最大范围 - **请求级网络策略**:必须是组织级白名单的子集 保持组织级白名单小而稳定,请求级白名单更小(仅限该任务所需的域名)。 ### 9. `domain_secrets` 进行身份验证 模型运行时只看到占位符(如 `$API_KEY`),只有发送到获批目的地时,侧车(Sidecar)才注入真实值。避免凭据泄露。 ### 10. 云端和本地使用相同的 API - Skills 同时适用于托管 Shell 和本地 Shell 模式 - 在两种模式下保持技能不变(执行环境变了,工作流保持稳定) **实用开发循环**:本地快速迭代 → 迁移到托管容器(可重复性、隔离性、部署一致性)。 ## 三种构建模式 ### 模式 A:安装 → 获取 → 写入 artifact 制品 利用托管 Shell 最简单的方式:智能体安装依赖、获取外部数据、生成具体交付物。 创建清晰的审查边界:应用可向用户展示 artifact 制品、记录日志、进行差异对比或传入后续步骤。 ### 模式 B:技能 + Shell 处理可重复工作流 当提示词发生漂移时,可靠性会下降——这就是 Skills 的用武之地: 1. 将工作流(步骤、护栏、模板)编码进技能 2. 将技能挂载到 Shell 环境中 3. 让智能体遵循技能确定性地生成 artifact 制品 对以下工作流特别有效:电子表格分析/编辑、数据集清洗+摘要生成、周期性业务流程的标准化报告生成。 ### 模式 C(高级):技能作为企业工作流的载体 Skills 可以弥补单工具调用与多工具编排之间的准确性鸿沟。 **Glean 案例**:针对 Salesforce 的技能将评测准确率从 73% 提高到 85%,首 token 延迟(TTFT)降低 18.1%。 技能成为活的 SOP:随着组织演进而更新,并由智能体一致地执行。 ## OpenAI vs OpenClaw 全方位对比 | 维度 | OpenAI(Shell + Skills) | OpenClaw | |------|--------------------------|----------| | 定位 | 企业级/开发者 Agent 平台 | 极客/个人 AI 全能管家 | | 基础设施 | 托管容器(Hosted Shell) | 本地 runtime / 个人服务器 | | 上下文管理 | 服务端自动压缩(Compaction) | 本地持久化存储 / 向量记忆 | | 安全性 | 极高(多重沙盒隔离) | 风险较高(拥有 Host Shell 权限) | | 交互界面 | API / CLI / Responses 界面 | WhatsApp / Telegram / Signal | | 适用场景 | 大规模数据分析、自动化编程、SaaS 集成 | 本地文件管理、个人生活自动化、跨平台消息路由 | **意外的共识**:OpenAI 的 Agent Skills 开放标准与 OpenClaw 兼容——技能包理论上可无缝迁移到 OpenClaw 上使用。 原文:https://developers.openai.com/blog/skills-shell-tips