跳转至

如何阅读本项目

适用读者
  • 项目贡献者/二次开发者(需要读代码与定位入口)
  • 需要排查执行链路的使用方开发者

这页带你从“一个入口文件”一路跟到“执行结果”,把每一层该看的目录/符号标出来,减少靠猜的时间.

0. 目录索引(快速定位)

  • 运行时代码: src/scalim/
  • YAML DSL: src/scalim/dsl/yaml_dsl/ (compiler_frontend/, _internal/, schema_dsl/, runtime/)
  • IR/types: src/scalim/spec/
  • 规划层: src/scalim/planning/
  • 执行层: src/scalim/execution/
  • 输出 sinks: src/scalim/sinks/
  • 可观测性: src/scalim/ob/, src/scalim/events/, src/scalim/hooks/
  • 开发脚本: scripts/ (生成/校验/漂移门禁)
  • 测试: tests/ (pytest) + tests/bench/ (benchmark-only)
  • 示例与数据: notebooks/ (marimo) + packages/scalim-misc/src/scalim_misc/
  • 文档站点: docs/doc/ (manual + *.gen.*) + docs/zensical.toml
  • 规范与变更: llmanspec/specs/ + llmanspec/changes/

1. 先读哪些文档(避免迷路)

站点文档更偏“用法与入口”,适合把经常问的问题沉淀成可维护的索引页.

2. 两条最常走的执行路径

打开源码路径(可选)

本页中的源码路径已做成可点击链接:

  • 点击后可直接复制路径
  • 配置一次 repo_root 后,可选择用 VS Code / Cursor / Zed / file:// 打开
  • 如果你也配置了 Git Web Base,还能跳到对应的仓库网页

2.1 从 YAML DSL 跑起来

建议从这个入口开始读:

顺着调用链往下看,基本是这几段:

  1. 读取与校验
  2. schema/语义校验: src/scalim/dsl/yaml_dsl/_internal/config_parsing/
  3. CLI 入口: packages/scalim-cli/src/scalim_cli/yaml_dsl.py
  4. 配置 → IR
  5. 编译编排(run/compile): src/scalim/dsl/yaml_dsl/runtime/compiler.py
  6. 静态前端(不 import/适合 LSP): src/scalim/dsl/yaml_dsl/compiler_frontend/compiler.py
  7. 运行时链接(RuntimeBindings): src/scalim/dsl/yaml_dsl/runtime/runtime_linking.py
  8. 结构模型(schema 生成用): src/scalim/dsl/yaml_dsl/schema_dsl/models/
  9. IR → plan → 执行
  10. 执行编排: src/scalim/execution/run_ir.py::run_ir
  11. 规划层: src/scalim/planning/(PlanBuilder, ExecutionPlan)
  12. 引擎与流水线: src/scalim/execution/engine.py, src/scalim/execution/pipeline/

如果你在找“某个 YAML 字段最终影响了哪里”,通常会先在 yaml_dsl 的 静态编译 阶段把配置翻译成 DemandIr/SourceIr/FieldIr(纯数据), 再在 runtime_linking 阶段解析引用/编译表达式得到 RuntimeBindings,最后进入规划与执行.

2.2 直接从 IR / Engine 跑起来

如果你已经有 DemandIr 或在写更底层的集成,从这里开始读更顺:

run_ir 负责:

  • PlanBuilder 构建 ExecutionPlan
  • 组装 ObserverManager / HookManager
  • 创建 ScalimEngine 并驱动 engine.run(...)

3. 执行层怎么读: 从 Pipeline 到 Operator

执行主干在:

你会看到一个稳定的结构:

并行模式(seq/adaptive)只影响 LoadRef 段的执行方式,详见:

4. 例子与回归从哪里找

要改 DSL 行为或 schema,尽量先补一个能覆盖你场景的 fixture/测试,不然很难防止“文档写对了,实现悄悄漂”.

下一步