机器可读规格
一份面向配置的 JSON Schema 和一份面向 API 的 OpenAPI 文档,均由代码生成并在 CI 中校验,使编码代理无需臆造选项即可配置 Potato。
Potato 在文字文档之外,还发布两份由代码生成、可被机器校验的契约。 两者都产自运行中的代码,而非手工维护,因此它们描述的是 Potato 实际的行为,而不是某人上次编辑页面时记得的内容。
如果你要把编码代理指向 Potato,这两份加上 llms.txt,是最值得交给它的东西。
| 制品 | 描述的内容 |
|---|---|
| 配置 JSON Schema | 任务 config.yaml 中每一个有效的键、标注类型与显示类型 |
| OpenAPI 3.1 规格 | 服务器注册的每一个 HTTP 端点 |
配置模式
2.8.0 版本涵盖 159 个顶层配置键、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 规格
419 条路径、456 个操作,从运行中的 Flask 路由表遍历得出,而非手工书写。受配置开关控制的蓝图会被注册到临时应用上,以免被无声遗漏;每个端点的鉴权信息则通过 AST 扫描还原。
作为对照:此前手写的参考文档只覆盖了 84 个端点,而实际注册的路由超过 400 条。
CI 会在漂移时失败
两份制品都会在 CI 中重新生成并作比对。一份可能与代码脱节的模式,比没有模式更糟,因为人们会信任它。
为什么这件事现在重要
大模型编写 Potato 配置时最常见的失败,就是臆造出一个并不存在的 annotation_type。发布一份编辑器与代理可以离线解析的 JSON Schema,等于从源头修复了这个问题。
本站自己的配置构建器也建立在同一思路上:配置构建器读取 Potato 的注册表,只能输出其中存在的键,并且有一套测试装置会把每一份生成的配置送进 validate_cli --strict。
相关内容
- 配置构建器——在浏览器中构建配置
- 指南:让编码代理能够校验的配置
- 源文档