本参考说明 /api/config/schema 与 /api/config/schema/validate 如何暴露 DevAll 的动态配置元数据,便于前端表单、IDE/CLI 通过 breadcrumbs(路径面包屑)按需获取局部 Schema。
| 方法 | 作用 |
|---|---|
POST /api/config/schema |
根据 breadcrumbs 返回对应配置节点的字段定义。 |
POST /api/config/schema/validate |
校验一份 YAML/JSON 文档,并可回传局部 Schema。 |
{
"breadcrumbs": [
{"node": "DesignConfig", "field": "graph"},
{"node": "GraphConfig", "field": "nodes"},
{"node": "NodeConfig", "value": "model"}
]
}node(必填):当前所处的类名(如DesignConfig、GraphConfig、NodeConfig)。field(可选):要下钻的子字段名;缺省表示仅断言仍在该node。value(可选):当子类由判别字段决定时填写(如节点type)。值与 YAML 中保持一致。index(可选 int):预留用于列表遍历,当前以field/value为主。
{
"schemaVersion": "0.1.0",
"node": "NodeConfig",
"fields": [
{"name": "id", "typeHint": "str", "required": true, "description": "Unique node identifier"},
{"name": "type", "typeHint": "str", "required": true,
"enum": ["model","python","agent"],
"enumOptions": [{"value":"model","label":"LLM Node","description":"Runs provider-backed models"}]
}
],
"constraints": [...],
"breadcrumbs": [...],
"cacheKey": "f90d..."
}fields:序列化的ConfigFieldSpec;若有子配置,会包含childRoutes。constraints:由collect_schema()生成的互斥/组合约束。cacheKey:基于{node, breadcrumbs}的 SHA-1,可用于客户端缓存。
请求体在 breadcrumbs 旁加入 document:
{
"breadcrumbs": [{"node": "DesignConfig"}],
"document": "name: demo\nversion: 0.4.0\nworkflow:\n nodes: []\n edges: []\n"
}响应:
- 通过:
{ "valid": true, "schema": { ... } } - 配置错误:
{ "valid": false, "error": "field 'nodes' must not be empty", "path": ["workflow","nodes"], "schema": { ... } } - YAML 解析失败:HTTP 400,payload
{ "message": "invalid_yaml", "error": "..." }
- 起点:
{ "node": "DesignConfig" }。 - 每一步的
node必须与当前位置的类匹配,否则返回 422。 - 用
field进入子配置(graph → nodes → config 等)。 - 判别式子类(如节点
type、toolingtype)需填写value。 - 不可导航的字段会返回
field '<name>' on <node> is not navigable。
python run.py --inspect-schema --schema-breadcrumbs '[{"node":"DesignConfig","field":"graph"}]'输出与 /schema 相同,便于在导出模板前调试 FIELD_SPECS 或注册表。
- 以
[{node:'DesignConfig', field:'graph'}]拉取基础表单。 - 用户展开子配置(节点、tooling 等)时,附加相应 breadcrumbs 再取一次 Schema。
- 用
cacheKey + breadcrumbs做客户端缓存。 - 保存前调用
/schema/validate,将error+path显示在表单中。
| HTTP | 场景 | Payload |
|---|---|---|
| 400 | YAML 解析失败 | { "message": "invalid_yaml", "error": "..." } |
| 422 | Breadcrumb 解析失败 | { "message": "breadcrumb node 'X'..." } |
200 + valid=false |
后端 ConfigError |
{ "error": "...", "path": ["workflow", ...] } |
200 + valid=true |
文档有效 | 返回所请求的 Schema,便于表单渲染。 |
搭配 FIELD_SPECS 使用,可在前端/IDE 构建无需硬编码的配置体验。