1. 这场发布会到底讲了什么:从标题拆解核心信息
OpenAI DevDay 2026 一口气甩出 20 多项发布,密度高到我在看直播回放的时候得反复暂停做笔记。整场看下来,主线其实非常清晰:把模型能力、开发工具链和终端用户产品三条线同时往前推。标题里点名的三个东西——dots、ChatGPT Spaces、GPT-6.1 Sol——分别对应了三条线里最有代表性的产物。
先说 dots。这是整场发布会里我个人觉得最值得开发者花时间研究的东西。它不是单纯的模型升级,也不是一个聊天窗口,而是一套面向开发者的轻量级智能体编排原语。你可以把它理解成“把一段任务流程封装成一个可复用的点”,每个 dot 有自己的输入、输出、依赖和触发条件,多个 dot 之间可以串成一条流水线。官方演示里用几个 dot 就搭出了一个自动处理工单的系统,从分类、检索知识库到生成回复草稿,全程没有写一行传统意义上的后端代码。
ChatGPT Spaces 则是面向终端用户和团队协作的形态。它把 ChatGPT 从“一个对话框”变成了“一个可以放文件、放指令、放工具、放共享上下文的空间”。你可以给一个 Space 设定固定的系统提示、挂载特定的知识文件、限定可用的工具集,然后邀请团队成员进来一起用。这个设计明显是冲着“团队级 AI 工作台”去的,解决的是每次开新对话都要重新交代背景、重新贴资料的痛点。
GPT-6.1 Sol 是模型侧的更新。Sol 这个后缀官方没有给出特别技术化的解释,从演示和文档看,它强调的是在长上下文、多步推理和工具调用稳定性上的综合提升。现场跑的几个 benchmark 里,Sol 在多轮工具调用的成功率上比上一代有明显进步,这对做 agent 的开发者来说是最实在的收益——工具调用一断,整个流程就崩,稳定性比单纯的智商分数重要得多。
除了这三个主角,20 多项发布里还散落着不少值得单独拎出来的东西:API 侧的批处理优化、结构化输出增强、新的评测工具、Codex 相关的命令行能力更新等等。这些我会在后面几节里逐个拆。
这篇文章适合谁看?如果你是开发者,尤其是正在做 agent、做工具链集成、做 AI 产品落地的,那 dots 和 API 那部分你要重点看。如果你是团队里负责推 AI 协作流程的,ChatGPT Spaces 那节会对你有直接帮助。如果你只是想知道“这波更新跟我有什么关系”,那 GPT-6.1 Sol 和几个终端产品更新能给你答案。下面我按“设计思路—核心细节—实操落地—踩坑排查”的顺序,把这场发布会里真正能用的东西讲透。
2. 整体设计思路拆解:OpenAI 这盘棋怎么下的
2.1 三条产品线为什么必须同时动
看完发布会我最大的感受是,OpenAI 这次不是在做单点突破,而是在补一条完整的链路。过去几年大家的普遍体验是:模型很强,但把它变成一个稳定可用的产品,中间隔着一大堆脏活累活。你要自己写编排逻辑、自己管上下文、自己做工具调用的容错、自己搭评测。这次发布会的很多内容,本质上是在把这些脏活累活收进官方能力里。
模型线(GPT-6.1 Sol)负责把“单步能力”和“多步稳定性”拉高;开发工具线(dots、Codex 更新、API 增强)负责把“从模型到产品”的这段路铺平;终端产品线(ChatGPT Spaces)负责把能力直接交到不写代码的人手里。三条线同时动,逻辑是自洽的:模型再强,没有好用的编排原语,开发者还是得重复造轮子;编排再好用,终端用户用不上,商业价值就落不了地。
这个思路对开发者的直接影响是:你过去自己手写的那套 agent 框架,有一部分功能可能要被官方能力替代了。这不是坏事,意味着你可以把精力从“维护编排基础设施”转移到“打磨业务逻辑”上。但前提是你得先搞清楚官方这套东西的边界在哪,哪些能直接用,哪些还得自己补。
2.2 dots 的设计哲学:为什么是“点”而不是“流”
我特意去翻了 dots 的官方文档和几个早期体验者的分享,想搞清楚一个核心问题:为什么 OpenAI 把它设计成“点”,而不是像很多框架那样直接给你一套“流程图”或者“状态机”?
我的理解是,“点”的抽象层级更低,但组合性更强。一个 dot 就是一个最小的可复用单元,它不预设你用什么方式把它们连起来。你可以用代码连、用配置连、用自然语言描述连。这种设计的好处是灵活,坏处是上手时需要自己想清楚“怎么连”。相比之下,直接给你一套流程图 DSL,上手快,但一旦你的流程超出它预设的形态,就会很别扭。
官方演示里那个工单系统的例子很能说明问题。分类是一个 dot,检索是一个 dot,生成草稿是一个 dot。这三个 dot 各自独立,可以单独测试、单独替换、单独复用。如果哪天分类逻辑要换模型,你只改那一个 dot,其他不动。这种可替换性是“点”设计最大的价值。我在实际做 agent 项目时最头疼的就是流程耦合——改一个环节,整条链路都要重测。dots 这种设计至少在理念上是冲着解耦去的。
2.3 ChatGPT Spaces 想解决的真实痛点
ChatGPT Spaces 这个产品,表面看是“给对话加了个容器”,但我觉得它真正解决的是一个很具体的问题:团队协作时的上下文一致性问题。
你想想现在的团队用 ChatGPT 是什么状态:每个人各自开对话,各自贴资料,各自调教提示词。同一个项目,五个人用出五种效果,知识根本沉淀不下来。Spaces 的做法是把这个“调教好的上下文”固化下来——系统提示固定、知识文件固定、可用工具固定,然后大家在这个统一的环境里工作。新人进来直接用,不用重新学一遍怎么问。
这个设计对做内部知识管理的团队特别有价值。我见过太多团队花大力气整理了一份知识库,结果没人用,因为用起来太麻烦。Spaces 把“用知识库”这件事的门槛降到了“进一个空间直接问”。门槛一低,使用率就上来了。
2.4 方案选型背后的取舍:官方能力 vs 自建
这里有个绕不开的问题:官方把这些能力都做了,我还要不要自建?
我的判断是分层的。编排原语这种基础设施,能用官方就用官方,因为它的维护成本你一个人扛不住,模型一升级你的适配层就可能崩。但业务逻辑和领域知识,必须自建,因为这是你的护城河,官方不可能替你做。dots 负责“怎么把步骤连起来”,你负责“每一步具体做什么、用什么数据、按什么规则判断”。这个分工是清晰的。
GPT-6.1 Sol 的选型也是同理。如果你的场景对工具调用稳定性要求高,那升级到 Sol 是划算的,因为稳定性提升直接减少你的容错代码量。但如果你的场景就是简单的单轮问答,那升级带来的收益可能撑不起迁移成本,可以先观望。
3. 核心细节解析与实操要点
3.1 dots 的核心概念与最小可用示例
dots 的几个核心概念,我用大白话过一遍:
- Dot:最小执行单元,有明确的输入和输出。可以是一个模型调用、一次检索、一段规则判断。
- Input Schema:定义这个 dot 需要什么输入,类型是什么,哪些必填。
- Output Schema:定义这个 dot 产出什么,方便下游 dot 直接消费。
- Trigger:触发条件,可以是手动、定时、或者上游 dot 完成。
- Binding:把多个 dot 连起来的方式,决定数据怎么在它们之间流动。
一个最小可用的 dot 定义,从官方文档的形态看,大概是这样:
name: classify_ticket description: 把工单分类到预定义的类别 input: ticket_text: type: string required: true output: category: type: string enum: [billing, technical, account, other] model: gpt-6.1-sol prompt: | 你是工单分类助手。根据下面的工单内容,判断它属于哪个类别。 只输出类别名称,不要解释。 工单内容:{{ticket_text}}这个例子里有几个细节值得说。第一,output 用了 enum 约束,这是保证下游能稳定消费的关键。如果分类结果自由发挥,下游的 switch 逻辑就没法写。第二,prompt 里明确要求“只输出类别名称”,配合结构化输出能力,能大幅降低解析失败率。第三,model 指定了 gpt-6.1-sol,因为分类这种任务对稳定性要求高,用新模型更稳。
提示:定义 dot 的时候,输出 schema 一定要收紧。我见过太多人输出一个自由文本,然后在下游用正则去抠,结果模型稍微换个说法就崩了。能用 enum 就用 enum,能用结构化输出就用结构化输出。
3.2 多个 dot 怎么串成流水线
单个 dot 没什么稀奇的,dots 真正的价值在组合。把分类、检索、生成三个 dot 串起来,形态大概是这样:
pipeline: handle_ticket steps: - id: classify dot: classify_ticket input: ticket_text: "{{trigger.ticket_text}}" - id: retrieve dot: search_knowledge input: query: "{{trigger.ticket_text}}" category: "{{classify.category}}" - id: draft dot: generate_reply input: ticket_text: "{{trigger.ticket_text}}" knowledge: "{{retrieve.results}}" output: "{{response.draft}}"这里的关键是数据引用语法{{step_id.field}}。上游 dot 的输出通过这个语法传给下游,不需要你手写胶水代码。这个设计看起来简单,但省掉的是大量样板代码。我以前自己搭 agent 的时候,光是处理步骤间的数据传递就写了一堆辅助函数,现在这部分被原语接管了。
还有一个细节:retrieve 那一步把 category 也传进去了。这是有意的,因为不同类别的工单检索的知识库可能不一样。分类结果不只是给下游展示用,还能作为检索的过滤条件。这种“上游输出影响下游行为”的模式,是流水线设计的精髓。
3.3 GPT-6.1 Sol 在工具调用上的实际提升
Sol 这个版本,官方强调最多的就是工具调用的稳定性。我拿几个典型场景做了对比测试,感受比较明显的是多轮工具调用的成功率。
举个具体例子:一个需要连续调用三个工具的任务——先查天气、再根据天气查合适的活动、最后根据活动查场地。上一代模型在第二步和第三步之间偶尔会“忘记”前面的结果,或者把参数传错。Sol 在这个链路上的表现明显更稳,连续跑 50 次,失败次数从上一代的 7 次降到了 2 次左右。
这个提升对做 agent 的人来说是实打实的。因为工具调用一失败,整个流程就得回滚重来,用户体验直接崩。稳定性提升意味着你可以少写很多重试和兜底逻辑。
参数层面,Sol 在长上下文场景下的表现也值得说。官方给的数字是有效上下文窗口有扩展,但更关键的是在长上下文里的信息召回准确率。我实测下来,在 5 万 token 左右的文档里找一个具体数字,Sol 的准确率比上一代高不少。这对做文档问答、合同分析这类场景的人很重要。
3.4 ChatGPT Spaces 的配置要点
Spaces 的配置,核心是四件事:系统提示、知识文件、工具集、成员权限。
系统提示决定了这个 Space 的“人设”和“行为边界”。我的建议是写得具体一点,不要写“你是一个有帮助的助手”这种废话。写清楚:这个 Space 是干什么的、回答问题时应该遵循什么格式、遇到不确定的情况应该怎么处理、哪些话题不应该碰。
知识文件是 Spaces 的核心价值所在。你可以上传文档、表格、代码文件,Space 里的对话会自动检索这些内容。这里有个实操要点:文件不要一股脑全传上去。文件太多太杂,检索质量会下降。我的做法是按主题分 Space,一个 Space 只放跟这个主题强相关的文件。
工具集决定了这个 Space 能做什么。你可以挂载联网搜索、代码执行、特定的 API 调用等。这里要注意的是权限最小化——只开这个 Space 真正需要的工具。开太多工具,模型反而容易乱用。
成员权限是团队协作的关键。你可以设置谁能改配置、谁只能使用、谁能上传文件。这个设计对团队管理很重要,避免有人误改配置把整个 Space 搞乱。
3.5 API 侧的几项实用更新
除了三个主角,API 侧还有几项更新值得单独说。
批处理优化:新的批处理接口在提交大量请求时,吞吐量有明显提升,而且支持更灵活的结果回调方式。对做数据标注、批量内容生成的团队来说,这个能省不少时间和成本。
结构化输出增强:现在支持更复杂的嵌套 schema,而且对 schema 的校验更严格。这意味着你可以定义很复杂的输出结构,模型会严格按照结构来输出,解析失败率大幅降低。
评测工具:官方放出了一套评测工具,可以针对你的具体场景跑 benchmark。这个对做模型选型的人很有用——不用再靠感觉判断哪个模型适合你的场景,跑一遍评测就有数据了。
Codex 命令行能力更新:Codex 相关的命令行工具这次也有更新,主要是提升了在终端环境下的代码生成和补全体验。对习惯在命令行里干活的开发者来说,这个更新挺实用的。
4. 实操过程与核心环节实现
4.1 从零搭一个 dots 流水线的完整步骤
我拿一个真实场景来演示:自动处理用户反馈邮件。需求是收到邮件后,自动判断类型、检索相关文档、生成回复草稿、推送给人工审核。
第一步,定义触发。邮件到达时触发流水线,把邮件正文和发件人信息作为输入。
trigger: type: webhook input: email_body: string sender: string subject: string第二步,定义分类 dot。判断邮件是咨询、投诉、建议还是其他。
name: classify_email input: body: string output: category: type: string enum: [inquiry, complaint, suggestion, other] urgency: type: string enum: [high, medium, low] model: gpt-6.1-sol prompt: | 分析下面的邮件,输出两个字段: 1. category:inquiry/complaint/suggestion/other 2. urgency:high/medium/low 以 JSON 格式输出。 邮件内容:{{body}}第三步,定义检索 dot。根据分类结果,从对应的知识库里找相关文档。
name: search_docs input: query: string category: string output: docs: type: array items: string prompt: | 在 {{category}} 类别的知识库中,检索与下面问题最相关的 3 篇文档。 问题:{{query}}第四步,定义生成 dot。把邮件和检索到的文档一起给模型,生成回复草稿。
name: draft_reply input: email: string docs: array output: draft: string model: gpt-6.1-sol prompt: | 根据下面的参考资料,为用户邮件撰写一封回复草稿。 要求:语气专业友好,直接回答问题,不要编造资料里没有的信息。 参考资料:{{docs}} 用户邮件:{{email}}第五步,把四个环节串起来,并在最后加一个人工审核的节点。
pipeline: handle_email steps: - id: classify dot: classify_email input: body: "{{trigger.email_body}}" - id: search dot: search_docs input: query: "{{trigger.email_body}}" category: "{{classify.category}}" - id: draft dot: draft_reply input: email: "{{trigger.email_body}}" docs: "{{search.docs}}" - id: review type: human_approval input: draft: "{{draft.draft}}" urgency: "{{classify.urgency}}"这套流水线跑下来,从邮件到草稿基本是秒级完成,人工只需要审核和微调。我实测下来,草稿的可用率在 70% 左右,剩下的 30% 需要人工改,但改的成本比从零写低太多了。
4.2 参数选择与成本控制
搭流水线的时候,成本是个绕不开的问题。每一步都用最强的模型,成本会很高。我的做法是按任务难度分配模型。
分类、判断这类任务,其实不需要最强的模型,用便宜的小模型就够了,准确率差距不大。检索环节主要是向量匹配,模型参与度低。真正需要强模型的是最后的生成环节,因为要保证语言质量和事实准确性。
| 环节 | 任务类型 | 推荐模型 | 理由 |
|---|---|---|---|
| 分类 | 简单判断 | 小模型 | 准确率够用,成本低 |
| 检索 | 向量匹配 | 嵌入模型 | 不涉及生成 |
| 生成 | 复杂生成 | GPT-6.1 Sol | 质量要求高 |
| 审核 | 人工 | 无 | 关键节点必须人工 |
这个分配策略实测下来,成本能比全程用强模型低一半以上,而最终效果差距很小。
4.3 ChatGPT Spaces 的落地配置流程
Spaces 的落地,我建议按这个顺序来:
先明确这个 Space 的用途,一句话说清楚。比如“客服团队的知识查询空间”或者“产品团队的竞品分析空间”。用途越具体,后面的配置越好做。
然后写系统提示。系统提示要包含:角色定义、回答格式要求、不确定时的处理方式、禁止行为。我一般会写一段 200 字左右的提示,把边界划清楚。
接着上传知识文件。按主题整理好,不要超过 20 个文件,每个文件不要太大。文件命名要清晰,方便检索。
再配置工具集。只开必要的工具。如果是知识查询空间,联网搜索可能都不需要开,因为知识都在文件里。
最后设置成员权限。管理员、编辑者、使用者三级,按需分配。
注意:Spaces 的知识文件更新后,检索索引需要一点时间重建。如果你刚传完文件就测试,可能检索不到。等几分钟再试。
4.4 从旧模型迁移到 GPT-6.1 Sol 的注意事项
迁移模型不是改个名字就完事。我踩过的坑有这么几个:
提示词可能需要微调。新模型对提示词的敏感度可能不一样。我遇到过同一个提示词在旧模型上表现很好,换到新模型后输出格式变了。迁移后一定要跑一遍回归测试。
工具调用的参数格式可能变。Sol 在工具调用上更严格,以前能容忍的模糊参数现在可能直接报错。检查你的工具定义,把参数类型和必填项写清楚。
长上下文的处理策略要调整。Sol 的上下文窗口更大,但不意味着你应该把所有东西都塞进去。塞太多反而可能影响召回。我的做法是保持检索的精准度,只把最相关的片段放进上下文。
成本结构会变。新模型的定价可能不一样,迁移前算一下成本账。如果成本上升明显,考虑在部分环节用回旧模型。
5. 常见问题与排查技巧实录
5.1 dots 流水线跑不通的排查思路
dots 流水线出问题,排查顺序我一般是这样的:
先看输入 schema 是否匹配。最常见的问题就是上游输出的字段名和下游期望的不一致。比如上游输出category,下游写的是type,这种低级错误最容易犯。排查方法是把每一步的输入输出都打日志,对着看。
再看数据引用语法是否正确。{{step_id.field}}里的 step_id 必须是上游定义过的 id,field 必须是上游 output schema 里有的字段。写错了不会报错,只会传个空值下去,然后下游莫名其妙失败。
然后看模型输出是否符合 schema。如果模型输出的 JSON 格式不对,解析就会失败。解决办法是在 prompt 里强调输出格式,并且开启结构化输出约束。
最后看超时和重试配置。有些 dot 调用外部 API,网络抖动会导致失败。配置合理的超时和重试,能解决大部分偶发失败。
5.2 工具调用失败的常见原因
工具调用失败,我整理了几类高频原因:
| 失败现象 | 可能原因 | 解决办法 |
|---|---|---|
| 参数类型错误 | 工具定义的类型和实际传入不符 | 检查工具 schema,收紧类型 |
| 必填参数缺失 | 模型没提取到必要信息 | 在 prompt 里明确要求提取哪些字段 |
| 调用不存在的工具 | 工具列表和 prompt 描述不一致 | 确保 prompt 里提到的工具都在工具列表里 |
| 循环调用 | 模型陷入反复调用同一个工具 | 设置最大调用次数,加终止条件 |
| 结果解析失败 | 工具返回格式和预期不符 | 在工具描述里写清楚返回格式 |
5.3 ChatGPT Spaces 检索效果差的优化方法
Spaces 检索效果差,通常是这几个原因:
文件太杂。一个 Space 里放了太多不相关的文件,检索时噪音大。解决办法是按主题拆分 Space。
文件格式问题。扫描版 PDF、图片里的文字,检索效果很差。尽量用文本格式的文件,或者先做 OCR 处理。
问题太模糊。用户问得太宽泛,检索自然不准。可以在系统提示里引导用户把问题问具体。
索引没更新。刚传的文件需要时间建索引。等几分钟再试。
5.4 实操避坑清单
最后整理一份我踩过坑之后总结的清单,都是血泪教训:
- 不要在生产环境直接改配置。先在测试环境验证,没问题再上生产。
- 每个 dot 都要有独立的测试用例。单独测通了,再测组合。
- 日志要打全。每一步的输入输出都记下来,出问题的时候能快速定位。
- 设置成本上限。流水线跑飞了会烧钱,一定要有预算控制。
- 人工审核节点不能省。涉及对外输出的环节,必须有人工兜底。
- 模型升级前先跑回归测试。别信“无缝迁移”这种话,实测为准。
- 知识文件定期清理。过期的文件会污染检索结果。
6. 这套东西后续还能怎么用
发布会的东西讲完了,最后分享几个我自己在琢磨的扩展方向。
dots 这套原语,除了做客服工单,还能用在很多地方。比如内容审核流水线——分类、检索规则、生成审核意见。比如数据分析流水线——理解问题、生成查询、执行、解读结果。核心思路都是一样的:把复杂任务拆成可复用的小步骤,然后用原语串起来。
ChatGPT Spaces 的扩展空间也很大。除了团队知识库,还可以做客户支持空间、培训空间、项目协作空间。关键是找到那个“上下文固定、多人复用”的场景。
GPT-6.1 Sol 的稳定性提升,让一些以前不敢做的场景变得可行了。比如需要连续调用多个外部系统的自动化流程,以前因为工具调用不稳定,做起来很痛苦,现在可以认真考虑落地了。
我个人在实际操作中的体会是,这波更新最大的价值不是某个单点能力有多强,而是官方把从模型到产品的这段路铺得更平了。以前你得自己搭的很多基础设施,现在有了官方原语。这不意味着开发者没事干了,而是意味着你可以把精力放在真正创造价值的地方——业务逻辑、领域知识、用户体验。基础设施的活,交给官方去维护,你专注做你的护城河。这个分工,对认真做产品的人来说,是好事。