用助手進行設計
規範形態是設計 API 的地方。它把 AI 對話與即時文件和預覽配對,因此你可以用自然語言描述意圖,同時對實際發生的變更保持完全控制。
核准閉環
模型不會直接編輯文件。這個閉環被刻意做得很明確:
you describe an intent
|
the model reads current state and proposes operations
|
the host validates the proposal
|
you review a patch card and Apply or Reject
|
the change is merged into the document
這種分離是關鍵的設計決策。模型擅長理解意圖並提出結構;宿主是確定性的,校驗每個操作;你核准每項變更。在你確認之前,提案從不會被視為已套用。
補丁卡片
補丁卡片總結變更並列出確切的操作,例如新增一條路徑:
{
"type": "patch",
"summary": "Add GET /products endpoint",
"ops": [
{ "op": "add", "path": ["paths", "/products"], "value": { "get": {} } }
],
"affects": { "paths": ["/paths/~1products"], "resources": ["Product"] }
}
路徑段是陣列元素,而不是 JSON Pointer 字串。新增一條全新路徑時目標為 ["paths", "/products"],並會自動建立父容器。
對已有操作的精細編輯
當你編輯一個已存在的操作時,助 手不會重新發送整個操作,因為那樣會清除它沒有回顯的每個欄位。它改為產生只觸及你所改部分的小操作,深入操作內部:
- 新增一個查詢參數:
{ "op": "add", "path": ["paths", "/products", "get", "parameters", "-"], "value": {} }
- 擴充回應模式:
{ "op": "replace", "path": ["paths", "/products", "get", "responses", "200", "content", "application/json", "schema", "properties", "total"], "value": { "type": "integer" } }
- 變更單個欄位:
{ "op": "replace", "path": ["paths", "/products", "get", "summary"], "value": "..." }
陣列用 "-" 標記追加,而不是整體重發。參數以 (in, name) 為鍵,因此已有的參數從不會重複。宿主把提議的值合併進當前操作,並保留你省略的一切。
這正是讓反覆細化變得可靠的原因:當你說「現在加一個 limit 參數」或「把 name 設為必填」時,只有那個欄位變化,操作的其餘部分保持不變。
讀取工具為每個提案提供依據
回答之前,模型可以呼叫只讀工具取得確切的當前狀態,而不是猜測:
spec.overview——標題、版本、協定、數量、標籤、servers、安全;spec.listOperations——每個操作以METHOD /path呈現,帶摘要和標籤;spec.presentOperations——渲染一張所有操作的只讀列表卡片;spec.getOperation——單個操作的完整定義及其引用的模式;spec.getSchema——單個元件模式,包含必填欄位和描述。
每當操作的完整形態不可見時,模型應在編輯前先讀取該操作。