taolib.symphony.config#
Symphony 配置子包。
提供工作流加载、配置模型、TOML 解析、配置合并与文件监视功能。
使用方式:
- from taolib.symphony.config import (
WorkflowDefinition, load_workflow, SymphonyConfig, resolve_config, WorkflowWatcher,
)
Submodules#
Classes#
解析后的工作流定义。 |
|
Agent 并发与重试配置。 |
|
Codex app-server 配置。 |
|
工作区钩子配置。 |
|
轮询配置。 |
|
HTTP Server 扩展配置。 |
|
Symphony 编排服务完整配置。 |
|
问题跟踪器配置。 |
|
SSH Worker 扩展配置。 |
|
工作区配置。 |
|
WORKFLOW.md 文件监视器。 |
Functions#
|
从文件加载 WORKFLOW.md 定义。 |
|
深度合并两个字典。 |
|
组装最终配置。 |
|
替换配置中的 $VAR_NAME 环境变量引用。 |
|
解析配置中的路径值。 |
|
从 symphony.toml 文件加载 [defaults] 段。 |
Package Contents#
- class taolib.symphony.config.WorkflowDefinition#
解析后的工作流定义。
- config#
YAML 前置数据根对象(映射)。
- prompt_template#
前置数据之后的 Markdown 正文(已去除首尾空白)。
- taolib.symphony.config.load_workflow(path: pathlib.Path) WorkflowDefinition#
从文件加载 WORKFLOW.md 定义。
解析规则: - 如果文件以
---开头,解析至下一个---为 YAML 前置数据。 - 剩余内容为 prompt_template。 - 如果没有前置数据,整个文件作为 prompt_template,config 为空映射。 - YAML 前置数据必须解码为映射,否则抛出 WorkflowLoadError。- 参数:
path -- WORKFLOW.md 文件路径。
- 返回:
解析后的 WorkflowDefinition。
- 抛出:
WorkflowLoadError -- 文件无法读取或前置数据不是映射。
- taolib.symphony.config.deep_merge(base: dict, override: dict) dict#
深度合并两个字典。
override 中的值覆盖 base 中的同名键。如果两边的值都是字典, 则递归合并。base 和 override 均不被修改。
- 参数:
base -- 基础配置字典。
override -- 覆盖配置字典。
- 返回:
合并后的新字典。
- taolib.symphony.config.resolve_config(cli_args: dict, toml_path: pathlib.Path | None, workflow_path: pathlib.Path) taolib.symphony.config.schema.SymphonyConfig#
组装最终配置。
按优先级从低到高合并配置源: 1. Pydantic 默认值 2. symphony.toml [defaults] 段 3. WORKFLOW.md YAML 前置数据 4. 环境 $VAR 替换 5. 路径解析 6. CLI 参数覆盖
- 参数:
cli_args -- CLI 参数字典,例如
{"port": 8080, "logs_root": Path("./log")}。toml_path -- symphony.toml 文件路径,为 None 则跳过。
workflow_path -- WORKFLOW.md 文件路径。
- 返回:
校验后的 SymphonyConfig 实例。
- 抛出:
WorkflowLoadError -- WORKFLOW.md 无法加载。
ConfigError -- TOML 配置无法加载。
ValueError -- 配置校验失败。
- taolib.symphony.config.resolve_env_vars(config: dict) dict#
替换配置中的 $VAR_NAME 环境变量引用。
仅对值为
$VAR_NAME形式的字符串进行替换。 如果环境变量不存在或为空字符串,则保留原始$VAR_NAME引用。- 参数:
config -- 原始配置字典。
- 返回:
替换环境变量后的配置字典。
- taolib.symphony.config.resolve_paths(config: dict, base_dir: pathlib.Path) dict#
解析配置中的路径值。
对已知的路径字段进行
~展开和相对路径解析: -~展开为用户主目录。 - 相对路径基于 base_dir 解析为绝对路径。 - 仅处理已知的路径字段,不重写 URI 或任意命令字符串。- 参数:
config -- 配置字典。
base_dir -- 相对路径的基准目录(通常为 WORKFLOW.md 所在目录)。
- 返回:
路径解析后的配置字典。
- class taolib.symphony.config.AgentConfig#
Bases:
pydantic.BaseModelAgent 并发与重试配置。
- class taolib.symphony.config.CodexConfig#
Bases:
pydantic.BaseModelCodex app-server 配置。
- class taolib.symphony.config.HooksConfig#
Bases:
pydantic.BaseModel工作区钩子配置。
- class taolib.symphony.config.ServerConfig#
Bases:
pydantic.BaseModelHTTP Server 扩展配置。
- class taolib.symphony.config.SymphonyConfig#
Bases:
pydantic.BaseModelSymphony 编排服务完整配置。
- tracker: TrackerConfig#
- polling: PollingConfig#
- workspace: WorkspaceConfig#
- hooks: HooksConfig#
- agent: AgentConfig#
- codex: CodexConfig#
- worker: WorkerConfig#
- server: ServerConfig#
- class taolib.symphony.config.TrackerConfig#
Bases:
pydantic.BaseModel问题跟踪器配置。
- kind: Literal['linear'] = 'linear'#
- class taolib.symphony.config.WorkerConfig#
Bases:
pydantic.BaseModelSSH Worker 扩展配置。
- class taolib.symphony.config.WorkspaceConfig#
Bases:
pydantic.BaseModel工作区配置。
- root: pathlib.Path#
- taolib.symphony.config.load_toml(path: pathlib.Path) dict#
从 symphony.toml 文件加载 [defaults] 段。
- 参数:
path -- symphony.toml 文件路径。
- 返回:
[defaults] 段的字典,如果文件中没有 [defaults] 段则返回空字典。
- 抛出:
ConfigError -- 文件无法读取或 TOML 解析失败。
- class taolib.symphony.config.WorkflowWatcher(workflow_path: pathlib.Path, on_reload_success: OnReloadSuccess | None = None, on_reload_error: OnReloadError | None = None)#
WORKFLOW.md 文件监视器。
基于 watchdog 监视指定的工作流文件,变更时重新加载并验证配置。 验证失败则保持最后有效配置,不会使服务崩溃。
使用方式:
- watcher = WorkflowWatcher(
workflow_path=Path("WORKFLOW.md"), on_reload_success=my_success_handler, on_reload_error=my_error_handler,
) watcher.start() # ... 服务运行 ... watcher.stop()
- _workflow_path#
- _handler#
- property last_valid_config: taolib.symphony.config.schema.SymphonyConfig | None#
返回最后有效的配置。