Initial commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""动态编译流水线的全部路径规则。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _find_project_root(module_dir: Path) -> Path:
|
||||
"""通过项目标志定位根目录,不编码包目录深度。"""
|
||||
|
||||
for candidate in (module_dir, *module_dir.parents):
|
||||
if (
|
||||
(candidate / "provider_routes.json").is_file()
|
||||
and (candidate / "scripts").is_dir()
|
||||
and (candidate / "data").is_dir()
|
||||
):
|
||||
return candidate
|
||||
raise RuntimeError(f"cannot locate project root from {module_dir}")
|
||||
|
||||
|
||||
PROJECT_ROOT = _find_project_root(Path(__file__).resolve().parent)
|
||||
DATA_ROOT = PROJECT_ROOT / "data"
|
||||
RESULTS_ROOT = PROJECT_ROOT / "results"
|
||||
ENV_FILE = PROJECT_ROOT / ".env"
|
||||
|
||||
DYNAMIC_RESULTS_ROOT = RESULTS_ROOT / "dynamic-optimization"
|
||||
TRACE_ROOT = DYNAMIC_RESULTS_ROOT / "traces"
|
||||
RAW_TRACE_ROOT = TRACE_ROOT / "raw_agent_trace"
|
||||
FINAL_SCORE_ROOT = TRACE_ROOT / "final-score"
|
||||
COMPILED_SKILL_ROOT = DYNAMIC_RESULTS_ROOT / "compiled-skills"
|
||||
|
||||
|
||||
def project_path(value: Path) -> Path:
|
||||
"""将命令行相对路径稳定地解释为项目根目录下的路径。"""
|
||||
|
||||
expanded = value.expanduser()
|
||||
return (expanded if expanded.is_absolute() else PROJECT_ROOT / expanded).resolve()
|
||||
|
||||
|
||||
def default_outputs(trace_input: Path, compile_type: str) -> tuple[Path, Path]:
|
||||
"""按默认原始轨迹树中的身份生成评分和候选产物目录。"""
|
||||
|
||||
try:
|
||||
relative = trace_input.resolve().relative_to(RAW_TRACE_ROOT)
|
||||
except ValueError as exc:
|
||||
raise ValueError(
|
||||
"轨迹不在默认数据树中,请同时提供 --score-output 和 --output"
|
||||
) from exc
|
||||
identity = relative.parent / compile_type
|
||||
return FINAL_SCORE_ROOT / identity, COMPILED_SKILL_ROOT / identity
|
||||
Reference in New Issue
Block a user