機器可讀規格
一份面向配置的 JSON Schema 和一份面向 API 的 OpenAPI 文件,均由程式碼生成並在 CI 中校驗,使編碼代理無需臆造選項即可配置 Potato。
Potato 在文字文件之外,還發布兩份由程式碼生成、可被機器校驗的契約。 兩者都產自執行中的程式碼,而非手工維護,因此它們描述的是 Potato 實際的行為,而不是某人上次編輯頁面時記得的內容。
如果你要把編碼代理指向 Potato,這兩份加上 llms.txt,是最值得交給它的東西。
| 製品 | 描述的內容 |
|---|---|
| 配置 JSON Schema | 任務 config.yaml 中每一個有效的鍵、標註類型與顯示類型 |
| OpenAPI 3.1 規格 | 伺服器註冊的每一個 HTTP 端點 |
配置模式
2.9.0 版本涵蓋 160 個頂層配置鍵、61 種標註類型與 24 種顯示類型,並包含按類型的條件約束,因此一個 constant_sum 方案會在伺服器拒絕它之前,就被告知需要 labels。
把下面這行模式宣告放在任意配置檔案的第一行,編輯器便會在你輸入時即時校驗,VS Code、JetBrains、Zed 與 Helix 均可:
# yaml-language-server: $schema=https://potatoannotator.readthedocs.io/en/latest/schemas/potato-config.schema.jsonPotato 倉庫中隨附的每一份配置都帶有它,配置構建器在每次下載時也會寫入。
在 CI 中:
check-jsonschema --schemafile \
https://potatoannotator.readthedocs.io/en/latest/schemas/potato-config.schema.json \
path/to/config.yaml或使用本地校驗器,它還會額外報告未知的鍵:
python -m potato.validate_cli --strict config.yamlAPI 規格
449 條路徑、486 個操作,從執行中的 Flask 路由表遍歷得出,而非手工書寫。受配置開關控制的藍圖會被註冊到臨時應用上,以免被無聲遺漏;每個端點的鑑權資訊則通過 AST 掃描還原。
作為對照:此前手寫的參考文件只覆蓋了 84 個端點,而實際註冊的路由超過 400 條。
CI 會在漂移時失敗
兩份製品都會在 CI 中重新生成並作比對。一份可能與程式碼脫節的模式,比沒有模式更糟,因為人們會信任它。
為什麼這件事現在重要
大模型編寫 Potato 配置時最常見的失敗,就是臆造出一個並不存在的 annotation_type。釋出一份編輯器與代理可以離線解析的 JSON Schema,等於從源頭修復了這個問題。
本站自己的配置構建器也建立在同一思路上:配置構建器讀取 Potato 的登錄檔,只能輸出其中存在的鍵,並且有一套測試裝置會把每一份生成的配置送進 validate_cli --strict。
相關內容
- 配置構建器——在瀏覽器中構建配置
- 指南:讓編碼代理能夠校驗的配置
- 源文件