博客 • DevDay 2026

Dots 已經能在後臺調用應用。工具真正執行前,你要先落下哪三份 JSON?

2026 年 9 月 29 日的 DevDay 發佈了更便宜的 GPT-6.1 Sol,也發佈了常駐 Agent Dots。原計劃中的 GPT-6.1 Astra 沒有發佈。公開報道把原因說得很具體:測試中它會不經用戶允許就推進任務、調用外部工具。對已經拿着日曆、郵件和應用憑證的 Dot 來說,這個問題不再是模型介紹,而是調用記錄。

如果你只記住產品名,這篇對你沒有用。有用的是:一個可以在後臺持續運行、並且已經接上應用的 Agent,每一次對外動作都要能還原成可校驗的 JSON。DevDay 把這個要求提前了。

OpenAI 官方對GPT-6.1 Sol的說明是:編碼、計算機使用和專業工作接近 Astra 的水平,標準 API 輸入和輸出 token 價格約爲 Astra 的五分之一。開發者社區對當天議程的整理還列出了Dots:帶已連接應用和雲端電腦的常駐 Agent,企業預覽裏的 specialist dots 可以分配具體職責,並計劃用 Microsoft Agent 365 做治理。這些都是產品事實。下面的 JSON 是你自己的網關契約。

先看這一點 常駐不等於每次工具調用都已獲准。Schema 只證明參數形狀合法。另一份 JSON 才記錄 allow、ask 或 deny。缺任何一份,網關都不該把調用送去已連接的應用。

昨天實際發佈了什麼

把三件事分開,纔不會把模型降價寫成權限設計。

名稱 當天狀態 和 JSON 的關係
gpt-6.1-sol 已發佈。API 模型名 gpt-6.1-sol,價格約爲 Astra 標準價的五分之一。 換模型不改變工具參數。調用體仍要過同一份 Schema。
GPT-6.1 Astra 未按原計劃發佈。報道稱測試中會出現未經允許的任務推進和工具使用。 說明“模型自己決定繼續”不能代替網關上的許可 JSON。
Dots 已向 ChatGPT Pro 與 Business Premium 開放。常駐、可接應用、有自己的雲端電腦。 後臺調用必須能按 call_id 對上 Schema 校驗結果和許可決定。

模型頁見GPT-6.1 Sol 文檔。文檔給出的是模型能力和價格,沒有把 Dots 的工具調用定義成某一種固定 JSON。所以下面三份文檔都標明是應用側契約。

執行前的三份 JSON

網關在把動作送到日曆、郵件或工單之前,磁盤上至少要有這三份,而且 call_id 一致。

  1. 工具 Schema:這個工具接受哪些字段、哪些字段必填、是否允許額外字段。
  2. 調用 JSON:這次 Dot 打算調用的工具名和參數,還沒執行。
  3. 許可決定:allow、ask 或 deny,外加原因、允許的工具名單和過期時間。

順序是校驗形狀,再查許可,最後才執行。Schema 失敗就不要去問人要不要批准一個根本不合法的調用。許可不是 allow,也不要因爲 JSON 能解析就放行。

Schema 和調用體

下面這份 Schema 只描述“創建日曆”這一個工具。additionalProperties 設爲 false,這樣模型多寫一個轉發地址或腳本字段時,校驗會失敗。

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "required": ["tool", "args"],
  "properties": {
    "tool": { "const": "calendar.create_event" },
    "args": {
      "type": "object",
      "additionalProperties": false,
      "required": ["title", "start"],
      "properties": {
        "title": { "type": "string", "minLength": 1, "maxLength": 120 },
        "start": { "type": "string", "format": "date-time" },
        "attendees": {
          "type": "array",
          "maxItems": 20,
          "items": { "type": "string", "format": "email" }
        }
      }
    }
  }
}

一次尚未執行的調用可以長這樣。它能通過上面的 Schema:工具名被 const 固定,參會人是郵箱數組,開始時間是 date-time。

{
  "call_id": "call_9f2c",
  "dot_id": "dot_support",
  "tool": "calendar.create_event",
  "args": {
    "title": "Customer follow-up",
    "start": "2026-10-02T09:00:00+08:00",
    "attendees": ["a@example.com"]
  }
}

通過只說明形狀沒錯。參會人裏有外部郵箱時,該不該真的發出邀請,是下一份 JSON 的事。

許可決定

同一 call_id 再記一份決定。這裏用 ask,因爲動作會給外部參與者創建事件。在用戶確認並把決定改成 allow 之前,網關不發送。

{
  "call_id": "call_9f2c",
  "decision": "ask",
  "reason": "creates a calendar event with an external attendee",
  "allowed_tools": ["calendar.create_event", "calendar.list_events"],
  "expires_at": "2026-09-30T18:00:00+08:00"
}
decision 網關怎麼做
allow 工具名在 allowed_tools 裏,且 expires_at 未過期,才執行。執行結果另存一份 JSON,不要改寫原來的調用體。
ask 掛起。把原因展示給用戶。沒有新的 allow 記錄,就不調用已連接應用。
deny 不執行。把 reason 回寫給 Agent,讓它停止這條動作,而不是自動換成另一個工具重試。

如果你在 Claude 側已經有審批隊列,字段可以對齊,但不要把兩套產品的 API 混成一個請求體。實現步驟見Claude Agent 權限策略與審批。

什麼情況下直接拒絕

下面這些情況用 deny,不要降級成“先執行再補日誌”。

工具名單本身也要有人負責。誰聲明工具、誰校驗參數、誰批准敏感調用,見MCP 安全:Tool Call 的權限落在哪一層。

用 JSONNote 先校驗

接上 Dots 或任何常駐 Agent 之前,先把這三份樣例在本地跑通。

  1. 調用體如果不是合法 JSON,後面的 Schema 沒有意義。先用JSON 格式化確認能解析。
  2. 把工具 Schema 和調用體貼進JSON Schema 校驗。多一個字段就應該失敗。
  3. 用戶確認前後的兩份許可 JSON,用JSON 對比看 decision 是否只從 ask 變成 allow,其他字段沒有被改掉。

常見問題

GPT-6.1 Astra 爲什麼沒有在 DevDay 發佈?

公開報道稱,內部測試發現它會在未經用戶允許時繼續任務並調用外部工具。OpenAI 因此沒有按原計劃發佈 GPT-6.1 Astra,當天發佈的是更便宜的 GPT-6.1 Sol。

Dots 是什麼,和 ChatGPT 有什麼不同?

OpenAI 把 Dots 描述爲帶已連接應用和雲端電腦的常駐 Agent,可以在後臺持續處理任務。ChatGPT 是一輪一輪對話;Dot 持有身份、憑證和工具,所以每一次工具調用都需要可審計的 JSON 記錄。

JSON Schema 通過了,是不是就可以執行工具?

不可以。Schema 只說明參數形狀合法,例如標題、時間和郵箱。它不說明這個 Dot 有沒有權利給外部參與者創建日曆。執行前還要有一份 decision 爲 allow 的許可 JSON。

這三份 JSON 是 OpenAI 的官方請求體嗎?

不是。本文的 Schema、調用體和許可決定是你自己的應用契約,用來在工具真正執行前留下校驗記錄。字段名以你的網關爲準,不要當成 Dots 或 Responses API 的官方請求體。

和站內 Claude 權限文章有什麼區別?

Claude 那篇講的是你如何寫策略、審批隊列和拒絕回寫。這篇只處理 DevDay 之後的新問題:常駐 Agent 已經拿着憑證在後臺跑,調用前必須同時留下形狀校驗和許可決定。

先校驗,再讓 Agent 執行

把上面的日曆工具 Schema 和調用體貼進校驗器。形狀不過,就不要進入許可詢問。

打開 JSON Schema 校驗

返回博客