# Foundation

底座模块提供配置、事件、cron 数据模型和 embedding 检索。它不直接处理业务请求，而是让上层 runtime 有稳定的配置来源、轻量事件通道和通用相似度检索能力。

## 大模块流程

环境/文件配置 `Config.load()`
->
运行目标解析main / auxiliary / embedding target
->
能力底座MessageBus / EmbeddingRetriever / Cron models
->
上层消费EngineLoader、SkillAssembler、ToolAssembler、CronService

## 小模块拆分

### config

负责把环境变量和配置文件收敛为 runtime 可用的 provider、embedding、workspace、数据库、MCP、cron 等配置。上层不会直接散读环境变量，而是通过配置对象解析目标。

读取环境/默认值，形成配置对象。
入口传入 model/provider_name 时，覆盖或补充默认 provider target。
`resolve_provider_target()`、`resolve_embedding_target()` 输出 provider factory 能消费的字典。

关键文件：`beaver/foundation/config/*`

### events

轻量消息总线，给内部组件做事件发布/订阅。当前核心链路更多依赖 session event 记录，MessageBus 是后续异步投影、通知、可观察性的扩展点。

组件注册 handler。
业务动作发布消息。
订阅者异步消费，不反向污染核心执行逻辑。

### cron models

定义 cron job、run record、payload、状态等结构。Services 层用这些模型创建计划任务、记录触发历史，并把结果映射成 notification 或 Task。

CronJob 保存用户配置、调度表达式和 payload。
CronRunRecord 保存单次触发、输出、错误、关联 task/run。
CronService 负责状态迁移，AgentService 负责真正执行。

### embedding

通用 embedding retriever 被 skill 和 tool 装配共用。它输入 query 和候选项，输出 top-k 候选；当远程 embedding 不可用时，有 fallback top-k 机制保证链路不完全中断。

候选项统一渲染为 name/description/text。
调用 embedding runtime 计算相似度。
按 top-k 输出候选，供 LLM 二次选择或直接加入工具集。

## 核对点

这个模块主要是“稳定输入”。后续如果修改 provider、embedding 或 cron 行为，优先核对配置解析是否继续保持单一入口，避免在 Service 或 Engine 中散落环境变量读取。