1
0

refactor: 移除顶层 defaults 配置段,简化为 target 显式字段 > 代码内置默认值

- 移除 DefaultsConfig 类型、ProbeConfig.defaults 字段
- 移除 CheckerSchemas.defaults、ResolveContext.defaults、CheckerValidationInput.defaults
- 更新所有 checker schema/resolve/validate 删除 defaults 合并逻辑
- 更新 config-loader 不再读取传递 defaults
- 更新测试、README、DEVELOPMENT、probes.example.yaml
- 重新生成 probe-config.schema.json(不含 defaults)
- 同步 delta specs 到主规范
- 归档 openspec change
This commit is contained in:
2026-05-21 16:53:12 +08:00
parent e448cb4654
commit 79358ba50d
52 changed files with 196 additions and 940 deletions

102
README.md
View File

@@ -135,13 +135,8 @@ probes: # 拨测运行时配置(可省略)
variables: # 配置变量(可省略)
env_name: "生产"
base_url: "https://api.example.com"
defaults: # 全局默认值(均可省略)
interval: "30s"
timeout: "10s"
# http: ...
# cmd: ...
# llm: ...
default_interval: "30s" # 通过变量在多个 target 间共享常用值
default_timeout: "10s"
targets: # 拨测目标列表(必填)
- id: "baidu-home"
@@ -197,14 +192,15 @@ targets: # 拨测目标列表(必填)
控制台始终输出pretty 格式),文件始终输出 JSONL 格式并支持滚动。`rotation.size``rotation.frequency` 任一条件触发即滚动。
### defaults — 全局默认值
### 内置默认值
| 字段 | 说明 | 必填 | 默认值 |
| ---------- | -------- | ---- | ------ |
| `interval` | 拨测间隔 | 否 | `30s` |
| `timeout` | 超时时间 | 否 | `10s` |
未显式配置时,系统使用以下内置默认值
各 checker 专属的默认配置见对应章节。
- `interval``30s`(拨测间隔)
- `timeout``10s`(超时时间)
- 各 checker 专属默认值见对应章节
如需在多个 target 间共享相同的配置值,可使用 `variables` 定义变量,然后在 target 中通过 `${var}` 引用。例如在 `variables` 中定义 `default_interval: "30s"`,在多个 target 的 `interval` 字段写 `${default_interval}`
### variables — 配置变量
@@ -227,30 +223,23 @@ targets: # 拨测目标列表(必填)
| `description` | 目标描述,最长 500 字符,支持变量替换,可省略或显式 null允许空字符串 | 否 | |
| `type` | 目标类型:`http``cmd``db``tcp``udp``icmp``llm` | 是 | |
| `group` | 分组名称 | 否 | `default` |
| `interval` | 覆盖全局拨测间隔 | 否 | |
| `timeout` | 覆盖全局超时时间 | 否 | |
| `interval` | 拨测间隔,未配置时使用内置默认值 `30s` | 否 | `30s` |
| `timeout` | 超时时间,未配置时使用内置默认值 `10s` | 否 | `10s` |
---
### HTTP Checker`type: http`
**全局默认值(`defaults.http`**
| 字段 | 说明 | 必填 | 默认值 |
| -------------- | -------------------------------------------------- | ---- | ------- |
| `maxBodyBytes` | 响应体最大字节数 | 否 | `100MB` |
| `headers` | 默认请求头target 中的 headers 会合并覆盖同名头) | 否 | |
**配置项**
| 字段 | 说明 | 必填 | 默认值 |
| ------------------- | --------------------------------------- | ---- | ------- |
| `http.url` | 目标 URL | 是 | |
| `http.method` | HTTP 方法 | 否 | `GET` |
| `http.headers` | 请求头(与 defaults.http.headers 合并) | 否 | |
| `http.body` | 请求体 | 否 | |
| `http.ignoreSSL` | 忽略 HTTPS 证书校验 | 否 | `false` |
| `http.maxRedirects` | 最大重定向跟随次数 | 否 | `0` |
| 字段 | 说明 | 必填 | 默认值 |
| ------------------- | ------------------- | ---- | ------- |
| `http.url` | 目标 URL | 是 | |
| `http.method` | HTTP 方法 | 否 | `GET` |
| `http.headers` | 请求头 | 否 | |
| `http.body` | 请求体 | 否 | |
| `http.ignoreSSL` | 忽略 HTTPS 证书校验 | 否 | `false` |
| `http.maxRedirects` | 最大重定向跟随次数 | 否 | `0` |
**expect 校验项**
@@ -288,13 +277,6 @@ targets: # 拨测目标列表(必填)
### Cmd Checker`type: cmd`
**全局默认值(`defaults.cmd`**
| 字段 | 说明 | 必填 | 默认值 |
| ---------------- | -------------------------------------- | ---- | ------- |
| `maxOutputBytes` | 输出最大字节数 | 否 | `100MB` |
| `cwd` | 默认工作目录(相对于配置文件所在目录) | 否 | `.` |
**配置项**
| 字段 | 说明 | 必填 | 默认值 |
@@ -405,14 +387,6 @@ targets: # 拨测目标列表(必填)
### UDP Checker`type: udp`
**全局默认值(`defaults.udp`**
| 字段 | 说明 | 必填 | 默认值 |
| ------------------ | ---------------------------------------- | ---- | ------ |
| `encoding` | payload 编码 | 否 | `text` |
| `responseEncoding` | 响应解码 | 否 | `text` |
| `maxResponseBytes` | 响应最大字节数,支持 `KB`/`MB`/`GB` 单位 | 否 | `4KB` |
**配置项**
| 字段 | 说明 | 必填 | 默认值 |
@@ -503,33 +477,21 @@ ICMP checker 通过系统 `ping` 命令执行 ICMP 探测,支持 Linux、macOS
### LLM Checker`type: llm`
**全局默认值(`defaults.llm`**
| 字段 | 说明 | 必填 | 默认值 |
| ----------------- | ------------------- | ---- | ------- |
| `mode` | 调用模式 | 否 | |
| `headers` | 默认请求头 | 否 | |
| `ignoreSSL` | 忽略 HTTPS 证书校验 | 否 | `false` |
| `options` | 生成选项 | 否 | |
| `providerOptions` | Provider 专属选项 | 否 | |
不支持 `provider``url``model``key``authToken``prompt`
**配置项**
| 字段 | 说明 | 必填 | 默认值 |
| --------------------- | ----------------------------------------------------------- | ---- | ------- |
| `llm.provider` | 模型提供方:`openai``openai-responses``anthropic` | 是 | |
| `llm.url` | API base URL | 是 | |
| `llm.model` | 模型名称 | 是 | |
| `llm.prompt` | 单轮 prompt | 是 | |
| `llm.mode` | 调用模式:`http`(非流式)或 `stream`(流式) | 否 | `http` |
| `llm.key` | API key支持 `${VAR}` 变量替换 | 否 | `""` |
| `llm.authToken` | Bearer token`anthropic` provider`key` 互斥) | 否 | |
| `llm.headers` | 附加请求头(与 `defaults.llm.headers` 合并) | 否 | |
| `llm.ignoreSSL` | 忽略 HTTPS 证书校验 | 否 | `false` |
| `llm.options` | 生成选项(与 `defaults.llm.options` 合并) | 否 | |
| `llm.providerOptions` | Provider 专属选项(与 `defaults.llm.providerOptions` 合并) | 否 | |
| 字段 | 说明 | 必填 | 默认值 |
| --------------------- | ------------------------------------------------------ | ---- | ------- |
| `llm.provider` | 模型提供方:`openai``openai-responses``anthropic` | 是 | |
| `llm.url` | API base URL | 是 | |
| `llm.model` | 模型名称 | 是 | |
| `llm.prompt` | 单轮 prompt | 是 | |
| `llm.mode` | 调用模式:`http`(非流式)或 `stream`(流式) | 否 | `http` |
| `llm.key` | API key支持 `${VAR}` 变量替换 | 否 | `""` |
| `llm.authToken` | Bearer token`anthropic` provider`key` 互斥) | 否 | |
| `llm.headers` | 附加请求头 | 否 | |
| `llm.ignoreSSL` | 忽略 HTTPS 证书校验 | 否 | `false` |
| `llm.options` | 生成选项 | 否 | |
| `llm.providerOptions` | Provider 专属选项 | 否 | |
`llm.options` 支持 `maxOutputTokens`(默认 `16`)、`temperature`(默认 `0`)、`topP``topK``presencePenalty``frequencyPenalty``stopSequences``seed`